]> matita.cs.unibo.it Git - helm.git/blobdiff - matita/matita/contribs/lambdadelta/delayed_updating/substitution/lift_structure.ma
update in delayed_updating
[helm.git] / matita / matita / contribs / lambdadelta / delayed_updating / substitution / lift_structure.ma
index 903026e4dfd7167948257aa023b5274cf44a8ec3..961a5c435ef8b0f3d2cbd106a5bc80279ccf85db 100644 (file)
 (*                                                                        *)
 (**************************************************************************)
 
-include "delayed_updating/syntax/path_structure.ma".
 include "delayed_updating/substitution/lift_eq.ma".
+include "delayed_updating/syntax/path_structure.ma".
+include "delayed_updating/syntax/path_proper.ma".
 
 (* LIFT FOR PATH ***********************************************************)
 
-(* Constructions with structure ********************************************)
+(* Basic constructions with structure **************************************)
 
-lemma lift_d_empty_dx (n) (p) (f):
-      (āŠ—p)ā—–š—±āØ(ā†‘[pā—–š—±āØnā©]f)@āØnā©ā© = ā†‘[f](pā—–š—±āØnā©).
-#n #p @(path_ind_lift ā€¦ p) -p // [ #m #l #p |*: #p ] #IH #f
-[ <lift_rmap_d_lcons_sn <lift_path_d_lcons_sn //
-| <lift_rmap_L_sn <lift_path_L_sn <IH //
-| <lift_rmap_A_sn <lift_path_A_sn <IH //
-| <lift_rmap_S_sn <lift_path_S_sn <IH //
+lemma structure_lift (p) (f):
+      āŠ—p = āŠ—ā†‘[f]p.
+#p @(path_ind_lift ā€¦ p) -p // #p #IH #f
+<lift_path_L_sn //
+qed.
+
+lemma lift_structure (p) (f):
+      āŠ—p = ā†‘[f]āŠ—p.
+#p @(path_ind_lift ā€¦ p) -p //
+qed.
+
+(* Properties with proper condition for path ********************************)
+
+lemma lift_append_proper_dx (p2) (p1) (f): ź”p2 ā†’
+      (āŠ—p1)ā—(ā†‘[ā†‘[p1]f]p2) = ā†‘[f](p1ā—p2).
+#p2 #p1 @(path_ind_lift ā€¦ p1) -p1 //
+[ #n | #n #l #p1 |*: #p1 ] #IH #f #Hp2
+[ elim (ppc_inv_lcons ā€¦ Hp2) -Hp2 #l #q #H destruct //
+| <lift_path_d_lcons_sn <IH //
+| <lift_path_L_sn <IH //
+| <lift_path_A_sn <IH //
+| <lift_path_S_sn <IH //
 ]
+qed-.
+
+(* Advanced constructions with structure ************************************)
+
+lemma lift_d_empty_dx (n) (p) (f):
+      (āŠ—p)ā—–š—±((ā†‘[p]f)@āØnā©) = ā†‘[f](pā—–š—±n).
+/3 width=3 by ppc_lcons, lift_append_proper_dx/
 qed.
 
 lemma lift_L_dx (p) (f):
       (āŠ—p)ā—–š—Ÿ = ā†‘[f](pā—–š—Ÿ).
-#p @(path_ind_lift ā€¦ p) -p // #m #l #p #IH #f
-<lift_path_d_lcons_sn //
+/3 width=3 by ppc_lcons, lift_append_proper_dx/
 qed.
 
 lemma lift_A_dx (p) (f):
       (āŠ—p)ā—–š—” = ā†‘[f](pā—–š—”).
-#p @(path_ind_lift ā€¦ p) -p // #m #l #p #IH #f
-<lift_path_d_lcons_sn //
+/3 width=3 by ppc_lcons, lift_append_proper_dx/
 qed.
 
 lemma lift_S_dx (p) (f):
       (āŠ—p)ā—–š—¦ = ā†‘[f](pā—–š—¦).
-#p @(path_ind_lift ā€¦ p) -p // #m #l #p #IH #f
-<lift_path_d_lcons_sn //
-qed.
-
-lemma structure_lift (p) (f):
-      āŠ—p = āŠ—ā†‘[f]p.
-#p @(path_ind_lift ā€¦ p) -p // #p #IH #f
-<lift_path_L_sn //
-qed.
-
-lemma lift_structure (p) (f):
-      āŠ—p = ā†‘[f]āŠ—p.
-#p @(path_ind_lift ā€¦ p) -p //
+/3 width=3 by ppc_lcons, lift_append_proper_dx/
 qed.