Fixpoint alpha_nat n := 
    match n with
      | 0   => 0
      | S p => match p with
        | 0   => 1
        | S r => b_nat * alpha_nat p - alpha_nat r
      end
    end.Fact alpha_nat_fix_0 : alpha_nat 0 = 0.Fact alpha_nat_fix_1 : alpha_nat 1 = 1.Fact alpha_nat_fix_2 n : alpha_nat (S (S n)) = b_nat *alpha_nat (S n) - alpha_nat n.Fact alpha_nat_2 n : b_nat = 2 -> alpha_nat n = n.Fact alpha_nat_inc n : alpha_nat n < alpha_nat (S n).Corollary alpha_nat_mono i j : i <= j -> alpha_nat i <= alpha_nat j.Corollary alpha_nat_smono i j : i < j -> alpha_nat i < alpha_nat j.Fact alpha_nat_ge_n n : n <= alpha_nat n.Fact alpha_nat_gt_0 : forall n, n <> 0 -> alpha_nat n <> 0.Fact alpha_nat_le n : alpha_nat n <= b_nat * alpha_nat (S n).Notation power := (mscal mult 1).Fact alpha_nat_power n : 2 < b_nat -> power n (b_nat-1) <= alpha_nat (S n) <= power n b_nat.Definition alpha_Z n := 
    match n with 
      | 0%nat => -1
      | S n   => Z.of_nat (alpha_nat n)
    end.Notation α := alpha_Z.Fact alpha_Z_S n : α (S n) = Z.of_nat (alpha_nat n).Fact alpha_fix_0 : α (0%nat) = -1.Fact alpha_fix_1 : α 1%nat = 0.Fact alpha_fix_2 : α 2%nat = 1.Fact alpha_fix_3 n : α (S (S n)) = b*α (S n) - α n.Fact alpha_inc n : α n < α (S n).Fact alpha_ge_0 n : 0 <= α (S n).Ltac alpha := autorewrite with alpha_db.Fact alpha_2 : b = 2 -> forall n, α n = Z.of_nat n - 1.Notation MZ := (M22 Z).Notation MZ_opp := (MI22 Z.opp).Notation MZ_plus := (PL22 Zplus).Notation MZ_mult := (MU22 Zplus Zmult).Notation MZ_zero := (ZE_22 0).Notation MZ_one := (ID_22 0 1).Notation MZ_scal := (M22scal Zmult).Notation MZ_expo := (mscal MZ_mult MZ_one).Notation MZ_det := (Det22 Zplus Zmult Z.opp).Local Fact MZ_plus_monoid : monoid_theory MZ_plus MZ_zero.Local Fact MZ_mult_monoid : monoid_theory MZ_mult MZ_one.Definition B  : MZ := (b,-1,1,0).Definition iB : MZ := (0,1,-1,b).Definition A n := (α (2+n),-α(1+n),α(1+n),-α n).Definition iA n := (-α n,α(1+n),-α(1+n),α (2+n)).(* b -1   *   0  1 
     1  0      -1  b  *)

  Notation mI := (-1,0,0,-1).

(* Specifications: *)
Lemma MZ_expo_A n : MZ_expo n B = A n.