Definition fib_mat := mat2 1 1 1 0.

(* Specifications: *)
Lemma fib_mat_n :
forall (n : nat) (a b d : nat),
power Mat2 matrix fib_mat n = mat2 a b b d ->
power Mat2 matrix fib_mat (S n) = mat2 (a + b) (b + d) a b.
Lemma fib_n :
forall n : nat,
power Mat2 matrix fib_mat (S n) =
mat2 (shift_Fib (S (S n))) (shift_Fib (S n))
(shift_Fib (S n)) (shift_Fib n).
Lemma fib_computation :
forall n : nat,
0 < n -> Fib n = M11 (power Mat2 matrix fib_mat n).
Lemma fib_mat_n :
forall (n : nat) (a b d : Z),
power Mat2 matrix fib_mat n = mat2 a b b d ->
power Mat2 matrix fib_mat (S n) = mat2 (a + b) (b + d) a b.
Lemma fib_n :
forall n : nat,
power Mat2 matrix fib_mat (S n) =
mat2 (Z_of_nat (shift_Fib (S (S n)))) (Z_of_nat (shift_Fib (S n)))
(Z_of_nat (shift_Fib (S n))) (Z_of_nat (shift_Fib n)).
Lemma fib_computation :
forall n : nat,
0 < n -> Z_of_nat (Fib n) = M11 (power Mat2 matrix fib_mat n).