-
-(* Basic properties on length ***********************************************)
-
-lemma length_nil (A:Type[0]): |nil A| = 0.
-// qed.
-
-lemma length_cons (A:Type[0]) (l:list A) (a:A): |a@l| = ⫯|l|.
-// qed.
-
-(* Basic inversion lemmas on length *****************************************)
-
-lemma length_inv_zero_dx (A:Type[0]) (l:list A): |l| = 0 → l = ◊.
-#A * // #a #l >length_cons #H destruct
-qed-.
-
-lemma length_inv_zero_sn (A:Type[0]) (l:list A): 0 = |l| → l = ◊.
-/2 width=1 by length_inv_zero_dx/ qed-.
-
-lemma length_inv_succ_dx (A:Type[0]) (l:list A) (x): |l| = ⫯x →
- ∃∃tl,a. x = |tl| & l = a @ tl.
-#A * /2 width=4 by ex2_2_intro/
->length_nil #x #H destruct
-qed-.
-
-lemma length_inv_succ_sn (A:Type[0]) (l:list A) (x): ⫯x = |l| →
- ∃∃tl,a. x = |tl| & l = a @ tl.
-/2 width=1 by length_inv_succ_dx/ qed.