exact Mat_assoc.
simple induction a.
intros M13 M14 M23 M24.
unfold Id2, Mat_mult in |- *; simpl in |- *.
repeat rewrite plus_0_r.
case M13; case M14; case M23; case M24; auto.
simple induction a.
intros.
unfold Id2, Mat_mult in |- *; simpl in |- *.
repeat rewrite mult_0_r.
repeat rewrite mult_1_r.
simpl in |- *; repeat rewrite plus_0_r.
auto.
Defined.
(* Fibonacci numbers *)
(* definition *)
Fixpoint Fib (n : nat) : nat :=
match n return nat with
| O => (* O *)  1
(* (S p ) *)
| S p =>
match p return nat with
| O => (* O *)  1
(* S q *)
| S q => Fib q + Fib p
end
end.

Lemma Unfold_FibO : Fib 0 = 1.