]> matita.cs.unibo.it Git - helm.git/blobdiff - matita/matita/contribs/lambdadelta/apps_2/models/model_props.ma
update in static_2 and app_2
[helm.git] / matita / matita / contribs / lambdadelta / apps_2 / models / model_props.ma
index 073d5db6278a04b2b831af10fbe4d0c9f22ddf57..26a34783265df483e696b21e10fac459e7c709f2 100644 (file)
@@ -17,34 +17,46 @@ include "apps_2/models/model_vlift.ma".
 (* MODEL ********************************************************************)
 
 record is_model (M): Prop ≝ {
-   mq: reflexive … (sq M);
-   mr: replace_2 … (sq M) (sq M) (sq M);
-   mc: compatible_3 … (ap M) (sq M) (sq M) (sq M);
+(* Note: equivalence: reflexivity *)
+   mr: reflexive … (sq M);
+(* Note: equivalence: compatibility *)
+   mq: replace_2 … (sq M) (sq M) (sq M);
+(* Note: application: compatibility *)
+   mp: compatible_3 … (ap M) (sq M) (sq M) (sq M);
+(* Note: interpretation: sort *)
    ms: ∀gv,lv,s. ⟦⋆s⟧{M}[gv, lv] ≗ sv M s;
+(* Note: interpretation: local reference *)
    ml: ∀gv,lv,i. ⟦#i⟧{M}[gv, lv] ≗ lv i;
+(* Note: interpretation: global reference *)
    mg: ∀gv,lv,l. ⟦§l⟧{M}[gv, lv] ≗ gv l;
-   md: ∀gv,lv,p,V,T. ⟦ⓓ{p}V.T⟧{M}[gv, lv] ≗ ⟦T⟧[gv, ⫯[⟦V⟧[gv, lv]]lv];
-   mi: ∀gv,lv1,lv2,p,W,T. ⟦W⟧{M}[gv, lv1] ≗ ⟦W⟧{M}[gv, lv2] →
-       (∀d. ⟦T⟧{M}[gv, ⫯[d]lv1] ≗ ⟦T⟧{M}[gv, ⫯[d]lv2]) →
-       ⟦ⓛ{p}W.T⟧[gv, lv1] ≗ ⟦ⓛ{p}W.T⟧[gv, lv2];
+(* Note: interpretation: local δ-equivalence *)
+   md: ∀gv,lv,p,V,T. ⟦ⓓ{p}V.T⟧{M}[gv, lv] ≗ ⟦T⟧[gv, ⫯[0←⟦V⟧[gv, lv]]lv];
+(* Note: interpretation: intensional abstraction *)
+   mi: ∀gv1,gv2,lv1,lv2,p,W,T. ⟦W⟧{M}[gv1, lv1] ≗ ⟦W⟧{M}[gv2, lv2] →
+       (∀d. ⟦T⟧{M}[gv1, ⫯[0←d]lv1] ≗ ⟦T⟧{M}[gv2, ⫯[0←d]lv2]) →
+       ⟦ⓛ{p}W.T⟧[gv1, lv1] ≗ ⟦ⓛ{p}W.T⟧[gv2, lv2];
+(* Note: interpretation: application *)
    ma: ∀gv,lv,V,T. ⟦ⓐV.T⟧{M}[gv, lv] ≗ ⟦V⟧[gv, lv] @ ⟦T⟧[gv, lv];
+(* Note: interpretation: ϵ-equivalence *)
    me: ∀gv,lv,W,T. ⟦ⓝW.T⟧{M}[gv, lv] ≗ ⟦T⟧[gv, lv];
-   mb: ∀gv,lv,d,p,W,T. d @ ⟦ⓛ{p}W.T⟧{M}[gv, lv] ≗ ⟦T⟧[gv, ⫯[d]lv]
+(* Note: interpretation: β-requivalence *)
+   mb: ∀gv,lv,d,p,W,T. d @ ⟦ⓛ{p}W.T⟧{M}[gv, lv] ≗ ⟦T⟧[gv, ⫯[0←d]lv]
 }.
 
 record is_extensional (M): Prop ≝ {
-   mx: ∀gv,lv1,lv2,p,W1,W2,T1,T2. ⟦W1⟧{M}[gv, lv1] ≗ ⟦W2⟧{M}[gv, lv2] →
-       (∀d. ⟦T1⟧{M}[gv, ⫯[d]lv1] ≗ ⟦T2⟧{M}[gv, ⫯[d]lv2]) →
-       ⟦ⓛ{p}W1.T1⟧[gv, lv1] ≗ ⟦ⓛ{p}W2.T2⟧[gv, lv2]
+(* Note: interpretation: extensional abstraction *)
+   mx: ∀gv1,gv2,lv1,lv2,p,W1,W2,T1,T2. ⟦W1⟧{M}[gv1, lv1] ≗ ⟦W2⟧{M}[gv2, lv2] →
+       (∀d. ⟦T1⟧{M}[gv1, ⫯[0←d]lv1] ≗ ⟦T2⟧{M}[gv2, ⫯[0←d]lv2]) →
+       ⟦ⓛ{p}W1.T1⟧[gv1, lv1] ≗ ⟦ⓛ{p}W2.T2⟧[gv2, lv2]
 }.
 
 (* Basic properties *********************************************************)
 
 lemma seq_sym (M): is_model M → symmetric … (sq M).
-/3 width=5 by mr, mq/ qed-.
+/3 width=5 by mq, mr/ qed-.
 
 lemma seq_trans (M): is_model M → Transitive … (sq M).
-/3 width=5 by mr, mq/ qed-.
+/3 width=5 by mq, mr/ qed-.
 
 lemma seq_canc_sn (M): is_model M → left_cancellable … (sq M).
 /3 width=3 by seq_trans, seq_sym/ qed-.
@@ -56,12 +68,22 @@ lemma ti_lref_vlift_eq (M): is_model M →
                             ∀gv,lv,d,i. ⟦#i⟧[gv,⫯[i←d]lv] ≗{M} d.
 #M #HM #gv #lv #d #i
 @(seq_trans … HM) [2: @ml // | skip ]
->vlift_eq /2 width=1 by mq/
+>vlift_eq /2 width=1 by mr/
 qed.
 
 lemma ti_lref_vlift_gt (M): is_model M →
-                            ∀gv,lv,d,i. ⟦#(↑i)⟧[gv,⫯[d]lv] ≗{M} ⟦#i⟧[gv,lv].
+                            ∀gv,lv,d,i. ⟦#(↑i)⟧[gv,⫯[0←d]lv] ≗{M} ⟦#i⟧[gv,lv].
 #M #HM #gv #lv #d #i
-@(mr … HM) [4,5: @(seq_sym … HM) @(ml … HM) |1,2: skip ]
->vlift_gt /2 width=1 by mq/
+@(mq … HM) [4,5: @(seq_sym … HM) /2 width=2 by ml/ |1,2: skip ]
+>vlift_gt /2 width=1 by mr/
 qed.
+
+(* Basic Forward lemmas *****************************************************)
+
+lemma ti_fwd_mx_dx (M): is_model M →
+                        ∀gv1,gv2,lv1,lv2,p,W1,W2,T1,T2.
+                        ⟦ⓛ{p}W1.T1⟧[gv1, lv1] ≗ ⟦ⓛ{p}W2.T2⟧[gv2, lv2] →
+                        ∀d. ⟦T1⟧{M}[gv1, ⫯[0←d]lv1] ≗ ⟦T2⟧{M}[gv2, ⫯[0←d]lv2].
+#M #HM #gv1 #gv2 #lv1 #lv2 #p #W1 #W2 #T1 #T2 #H12 #d
+@(mq … HM) /3 width=5 by mb, mp, mr/
+qed-.