]> matita.cs.unibo.it Git - helm.git/commitdiff
update in ground
authorFerruccio Guidi <ferruccio.guidi@unibo.it>
Thu, 20 Jan 2022 19:42:34 +0000 (20:42 +0100)
committerFerruccio Guidi <ferruccio.guidi@unibo.it>
Thu, 20 Jan 2022 19:42:34 +0000 (20:42 +0100)
+ advanced eliminators on lists

matita/matita/contribs/lambdadelta/ground/lib/list_append.ma
matita/matita/contribs/lambdadelta/ground/lib/list_rcons.ma

index 05fefceb30a13e1f9fcbd5727f728b7ce11ec1b9..31644956669dea1ade08a8e62593873695736452 100644 (file)
@@ -67,3 +67,14 @@ lemma eq_inv_list_empty_append (A):
 | #a1 #l1 #l2 <list_append_lcons_sn #H destruct
 ]
 qed-.
+
+(* Advanced eliminations ****************************************************)
+
+lemma list_ind_append_dx (A) (Q:predicate …):
+      Q (ⓔ{A}) →
+      (∀l1,l2. Q l1 -> Q (l1⨁l2)) →
+      ∀l. Q l.
+#A #Q #IH1 #IH2 * //
+#a #l >(list_append_empty_sn … (a⨮l))
+/2 width=1 by/
+qed-.
index 66910e1a90fd775370bb047504a0a521f0108422..9d2fcfaacc624b00f10ec262ccf9131a0eaae807 100644 (file)
@@ -14,6 +14,7 @@
 
 include "ground/notation/functions/oplusleft_3.ma".
 include "ground/lib/list_append.ma".
+include "ground/generated/pull_2.ma". 
 
 (* RIGHT CONS FOR LISTS *****************************************************)
 
@@ -49,3 +50,15 @@ lemma eq_inv_list_empty_rcons (A):
 #A #l #a #H
 elim (eq_inv_list_empty_append … H) -H #_ #H destruct
 qed-.
+
+(* Advanced eliminations ****************************************************)
+
+lemma list_ind_rcons (A) (Q:predicate …):
+      Q (ⓔ{A}) →
+      (∀l,a. Q l -> Q (l⨭a)) →
+      ∀l. Q l.
+#A #Q #IH1 #IH2 #l
+@(list_ind_append_dx … l) -l //
+@pull_2 #l2 elim l2 -l2 //
+#a2 #l2 #IH0 #l1 #IH /3 width=1 by/
+qed-.