intros.
unfold transpose in |- *; destruct M; simpl in |- *.
apply Refl.
Qed.
End transpose.
Hint Resolve transpose_defprop: algebra.
Definition zero_matrix : forall (F : field) (n m : Nat), matrix F n m.
intros.
apply (Build_Map2 (Ap2:=fun (i : fin n) (j : fin m) => zero F)).
red in |- *.
auto with algebra.
Defined.
Definition is_square (F : field) (n m : Nat) (M : matrix F n m) :=
n =' m in _.
Definition is_diagonal (F : field) (n : Nat) (M : matrix F n n) :=
forall i j : fin n, index i <> index j -> M i j =' (zero F) in _.
Definition identity_matrix : forall (F : field) (n : Nat), matrix F n n.
intros.
apply
(Build_Map2
(Ap2:=fun i j : fin n => Kronecker one (zero F) (index i) (index j))).
red in |- *.
unfold Kronecker in |- *.
intros; destruct x; destruct x'; destruct y; destruct y'.
simpl in |- *.
simpl in H, H0.
rewrite H.
rewrite H0.
auto with algebra.
Defined.

(* Specifications: *)
Lemma id_is_square :
forall (F : field) (n : Nat), is_square (identity_matrix F n).