Definition is_upper_triangular_pred :
  forall (F : field) (m n : Nat), Predicate (Mmn F m n).Definition is_lower_triangular_pred :
  forall (F : field) (m n : Nat), Predicate (Mmn F m n).Definition is_diagonal_pred :
  forall (F : field) (n : Nat), Predicate (Mmn F n n).

(* Specifications: *)
Lemma id_is_diagonal : forall (F : field) (n : Nat), is_diagonal (identity_matrix F n).
Lemma is_upper_and_lower_then_diagonal : forall (F : field) (n : Nat) (M : matrix F n n), is_up_triang M -> is_lo_triang M -> is_diagonal M.
Lemma up_triang_subspace : forall (F : field) (m n : Nat), is_subspace (is_upper_triangular_pred F m n).
Lemma lo_triang_subspace : forall (F : field) (m n : Nat), is_subspace (is_lower_triangular_pred F m n).
Lemma is_diagonal_subspace : forall (F : field) (n : Nat), is_subspace (is_diagonal_pred F n).