| lsubsv_atom: lsubsv h g (⋆) (⋆)
| lsubsv_pair: ∀I,L1,L2,V. lsubsv h g L1 L2 →
lsubsv h g (L1. ⓑ{I} V) (L2. ⓑ{I} V)
-| lsubsv_abbr: â\88\80L1,L2,V1,V2,W1,W2,l. â¦\83h, L1â¦\84 â\8a© V1 :[g] → ⦃h, L1⦄ ⊢ V1 •[g] ⦃l+1, W1⦄ →
- L1 â\8a¢ W1 â¬\8c* W2 â\86\92 â¦\83h, L2â¦\84 â\8a© W2 :[g] → ⦃h, L2⦄ ⊢ W2 •[g] ⦃l, V2⦄ →
+| lsubsv_abbr: â\88\80L1,L2,V1,V2,W1,W2,l. â¦\83h, L1â¦\84 â\8a¢ V1 ¡[g] → ⦃h, L1⦄ ⊢ V1 •[g] ⦃l+1, W1⦄ →
+ L1 â\8a¢ W1 â¬\8c* W2 â\86\92 â¦\83h, L2â¦\84 â\8a¢ W2 ¡[g] → ⦃h, L2⦄ ⊢ W2 •[g] ⦃l, V2⦄ →
lsubsv h g L1 L2 → lsubsv h g (L1. ⓓV1) (L2. ⓛW2)
.
(* Basic inversion lemmas ***************************************************)
-fact lsubsv_inv_atom1_aux: ∀h,g,L1,L2. h ⊢ L1 ⊩:⊑[g] L2 → L1 = ⋆ → L2 = ⋆.
+fact lsubsv_inv_atom1_aux: ∀h,g,L1,L2. h ⊢ L1 ¡⊑[g] L2 → L1 = ⋆ → L2 = ⋆.
#h #g #L1 #L2 * -L1 -L2
[ //
| #I #L1 #L2 #V #_ #H destruct
]
qed-.
-lemma lsubsv_inv_atom1: ∀h,g,L2. h ⊢ ⋆ ⊩:⊑[g] L2 → L2 = ⋆.
+lemma lsubsv_inv_atom1: ∀h,g,L2. h ⊢ ⋆ ¡⊑[g] L2 → L2 = ⋆.
/2 width=5 by lsubsv_inv_atom1_aux/ qed-.
-fact lsubsv_inv_pair1_aux: ∀h,g,L1,L2. h ⊢ L1 ⊩:⊑[g] L2 →
+fact lsubsv_inv_pair1_aux: ∀h,g,L1,L2. h ⊢ L1 ¡⊑[g] L2 →
∀I,K1,V1. L1 = K1. ⓑ{I} V1 →
- (∃∃K2. h ⊢ K1 ⊩:⊑[g] K2 & L2 = K2. ⓑ{I} V1) ∨
- â\88\83â\88\83K2,V2,W1,W2,l. â¦\83h, K1â¦\84 â\8a© V1 :[g] & ⦃h, K1⦄ ⊢ V1 •[g] ⦃l+1, W1⦄ &
- K1 â\8a¢ W1 â¬\8c* W2 & â¦\83h, K2â¦\84 â\8a© W2 :[g] & ⦃h, K2⦄ ⊢ W2 •[g] ⦃l, V2⦄ &
- h ⊢ K1 ⊩:⊑[g] K2 & L2 = K2. ⓛW2 & I = Abbr.
+ (∃∃K2. h ⊢ K1 ¡⊑[g] K2 & L2 = K2. ⓑ{I} V1) ∨
+ â\88\83â\88\83K2,V2,W1,W2,l. â¦\83h, K1â¦\84 â\8a¢ V1 ¡[g] & ⦃h, K1⦄ ⊢ V1 •[g] ⦃l+1, W1⦄ &
+ K1 â\8a¢ W1 â¬\8c* W2 & â¦\83h, K2â¦\84 â\8a¢ W2 ¡[g] & ⦃h, K2⦄ ⊢ W2 •[g] ⦃l, V2⦄ &
+ h ⊢ K1 ¡⊑[g] K2 & L2 = K2. ⓛW2 & I = Abbr.
#h #g #L1 #L2 * -L1 -L2
[ #J #K1 #U1 #H destruct
| #I #L1 #L2 #V #HL12 #J #K1 #U1 #H destruct /3 width=3/
]
qed-.
-lemma lsubsv_inv_pair1: ∀h,g,I,K1,L2,V1. h ⊢ K1. ⓑ{I} V1 ⊩:⊑[g] L2 →
- (∃∃K2. h ⊢ K1 ⊩:⊑[g] K2 & L2 = K2. ⓑ{I} V1) ∨
- â\88\83â\88\83K2,V2,W1,W2,l. â¦\83h, K1â¦\84 â\8a© V1 :[g] & ⦃h, K1⦄ ⊢ V1 •[g] ⦃l+1, W1⦄ &
- K1 â\8a¢ W1 â¬\8c* W2 & â¦\83h, K2â¦\84 â\8a© W2 :[g] & ⦃h, K2⦄ ⊢ W2 •[g] ⦃l, V2⦄ &
- h ⊢ K1 ⊩:⊑[g] K2 & L2 = K2. ⓛW2 & I = Abbr.
+lemma lsubsv_inv_pair1: ∀h,g,I,K1,L2,V1. h ⊢ K1. ⓑ{I} V1 ¡⊑[g] L2 →
+ (∃∃K2. h ⊢ K1 ¡⊑[g] K2 & L2 = K2. ⓑ{I} V1) ∨
+ â\88\83â\88\83K2,V2,W1,W2,l. â¦\83h, K1â¦\84 â\8a¢ V1 ¡[g] & ⦃h, K1⦄ ⊢ V1 •[g] ⦃l+1, W1⦄ &
+ K1 â\8a¢ W1 â¬\8c* W2 & â¦\83h, K2â¦\84 â\8a¢ W2 ¡[g] & ⦃h, K2⦄ ⊢ W2 •[g] ⦃l, V2⦄ &
+ h ⊢ K1 ¡⊑[g] K2 & L2 = K2. ⓛW2 & I = Abbr.
/2 width=3 by lsubsv_inv_pair1_aux/ qed-.
-fact lsubsv_inv_atom2_aux: ∀h,g,L1,L2. h ⊢ L1 ⊩:⊑[g] L2 → L2 = ⋆ → L1 = ⋆.
+fact lsubsv_inv_atom2_aux: ∀h,g,L1,L2. h ⊢ L1 ¡⊑[g] L2 → L2 = ⋆ → L1 = ⋆.
#h #g #L1 #L2 * -L1 -L2
[ //
| #I #L1 #L2 #V #_ #H destruct
]
qed-.
-lemma lsubsv_inv_atom2: ∀h,g,L1. h ⊢ L1 ⊩:⊑[g] ⋆ → L1 = ⋆.
+lemma lsubsv_inv_atom2: ∀h,g,L1. h ⊢ L1 ¡⊑[g] ⋆ → L1 = ⋆.
/2 width=5 by lsubsv_inv_atom2_aux/ qed-.
-fact lsubsv_inv_pair2_aux: ∀h,g,L1,L2. h ⊢ L1 ⊩:⊑[g] L2 →
+fact lsubsv_inv_pair2_aux: ∀h,g,L1,L2. h ⊢ L1 ¡⊑[g] L2 →
∀I,K2,W2. L2 = K2. ⓑ{I} W2 →
- (∃∃K1. h ⊢ K1 ⊩:⊑[g] K2 & L1 = K1. ⓑ{I} W2) ∨
- â\88\83â\88\83K1,W1,V1,V2,l. â¦\83h, K1â¦\84 â\8a© V1 :[g] & ⦃h, K1⦄ ⊢ V1 •[g] ⦃l+1, W1⦄ &
- K1 â\8a¢ W1 â¬\8c* W2 & â¦\83h, K2â¦\84 â\8a© W2 :[g] & ⦃h, K2⦄ ⊢ W2 •[g] ⦃l, V2⦄ &
- h ⊢ K1 ⊩:⊑[g] K2 & L1 = K1. ⓓV1 & I = Abst.
+ (∃∃K1. h ⊢ K1 ¡⊑[g] K2 & L1 = K1. ⓑ{I} W2) ∨
+ â\88\83â\88\83K1,W1,V1,V2,l. â¦\83h, K1â¦\84 â\8a¢ V1 ¡[g] & ⦃h, K1⦄ ⊢ V1 •[g] ⦃l+1, W1⦄ &
+ K1 â\8a¢ W1 â¬\8c* W2 & â¦\83h, K2â¦\84 â\8a¢ W2 ¡[g] & ⦃h, K2⦄ ⊢ W2 •[g] ⦃l, V2⦄ &
+ h ⊢ K1 ¡⊑[g] K2 & L1 = K1. ⓓV1 & I = Abst.
#h #g #L1 #L2 * -L1 -L2
[ #J #K2 #U2 #H destruct
| #I #L1 #L2 #V #HL12 #J #K2 #U2 #H destruct /3 width=3/
]
qed-.
-lemma lsubsv_inv_pair2: ∀h,g,I,L1,K2,W2. h ⊢ L1 ⊩:⊑[g] K2. ⓑ{I} W2 →
- (∃∃K1. h ⊢ K1 ⊩:⊑[g] K2 & L1 = K1. ⓑ{I} W2) ∨
- â\88\83â\88\83K1,W1,V1,V2,l. â¦\83h, K1â¦\84 â\8a© V1 :[g] & ⦃h, K1⦄ ⊢ V1 •[g] ⦃l+1, W1⦄ &
- K1 â\8a¢ W1 â¬\8c* W2 & â¦\83h, K2â¦\84 â\8a© W2 :[g] & ⦃h, K2⦄ ⊢ W2 •[g] ⦃l, V2⦄ &
- h ⊢ K1 ⊩:⊑[g] K2 & L1 = K1. ⓓV1 & I = Abst.
+lemma lsubsv_inv_pair2: ∀h,g,I,L1,K2,W2. h ⊢ L1 ¡⊑[g] K2. ⓑ{I} W2 →
+ (∃∃K1. h ⊢ K1 ¡⊑[g] K2 & L1 = K1. ⓑ{I} W2) ∨
+ â\88\83â\88\83K1,W1,V1,V2,l. â¦\83h, K1â¦\84 â\8a¢ V1 ¡[g] & ⦃h, K1⦄ ⊢ V1 •[g] ⦃l+1, W1⦄ &
+ K1 â\8a¢ W1 â¬\8c* W2 & â¦\83h, K2â¦\84 â\8a¢ W2 ¡[g] & ⦃h, K2⦄ ⊢ W2 •[g] ⦃l, V2⦄ &
+ h ⊢ K1 ¡⊑[g] K2 & L1 = K1. ⓓV1 & I = Abst.
/2 width=3 by lsubsv_inv_pair2_aux/ qed-.
(* Basic_forward lemmas *****************************************************)
-lemma lsubsv_fwd_lsubss: ∀h,g,L1,L2. h ⊢ L1 ⊩:⊑[g] L2 → h ⊢ L1 •⊑[g] L2.
+lemma lsubsv_fwd_lsubss: ∀h,g,L1,L2. h ⊢ L1 ¡⊑[g] L2 → h ⊢ L1 •⊑[g] L2.
#h #g #L1 #L2 #H elim H -L1 -L2 // /2 width=1/ /2 width=6/
qed-.
-lemma lsubsv_fwd_lsubs1: ∀h,g,L1,L2. h ⊢ L1 ⊩:⊑[g] L2 → L1 ≼[0, |L1|] L2.
+lemma lsubsv_fwd_lsubs1: ∀h,g,L1,L2. h ⊢ L1 ¡⊑[g] L2 → L1 ≼[0, |L1|] L2.
/3 width=3 by lsubsv_fwd_lsubss, lsubss_fwd_lsubs1/
qed-.
-lemma lsubsv_fwd_lsubs2: ∀h,g,L1,L2. h ⊢ L1 ⊩:⊑[g] L2 → L1 ≼[0, |L2|] L2.
+lemma lsubsv_fwd_lsubs2: ∀h,g,L1,L2. h ⊢ L1 ¡⊑[g] L2 → L1 ≼[0, |L2|] L2.
/3 width=3 by lsubsv_fwd_lsubss, lsubss_fwd_lsubs2/
qed-.
(* Basic properties *********************************************************)
-lemma lsubsv_refl: ∀h,g,L. h ⊢ L ⊩:⊑[g] L.
+lemma lsubsv_refl: ∀h,g,L. h ⊢ L ¡⊑[g] L.
#h #g #L elim L -L // /2 width=1/
qed.
-lemma lsubsv_cprs_trans: ∀h,g,L1,L2. h ⊢ L1 ⊩:⊑[g] L2 →
+lemma lsubsv_cprs_trans: ∀h,g,L1,L2. h ⊢ L1 ¡⊑[g] L2 →
∀T1,T2. L2 ⊢ T1 ➡* T2 → L1 ⊢ T1 ➡* T2.
/3 width=5 by lsubsv_fwd_lsubss, lsubss_cprs_trans/
qed-.
(* Properties on context-sensitive parallel equivalence for terms ***********)
-lemma lsubsv_cpcs_trans: ∀h,g,L1,L2. h ⊢ L1 ⊩:⊑[g] L2 →
+lemma lsubsv_cpcs_trans: ∀h,g,L1,L2. h ⊢ L1 ¡⊑[g] L2 →
∀T1,T2. L2 ⊢ T1 ⬌* T2 → L1 ⊢ T1 ⬌* T2.
/3 width=5 by lsubsv_fwd_lsubs2, cpcs_lsubs_trans/
qed-.
(∀L1,T1. h ⊢ ⦃L0, T0⦄ >[g] ⦃L1, T1⦄ → IH_ssta_ltpr_tpr h g L1 T1) →
(∀L1,T1. h ⊢ ⦃L0, T0⦄ >[g] ⦃L1, T1⦄ → IH_snv_ssta h g L1 T1) →
(∀L1,T1. h ⊢ ⦃L0, T0⦄ >[g] ⦃L1, T1⦄ → IH_snv_lsubsv h g L1 T1) →
- â\88\80L2,T. h â\8a¢ â¦\83L0, T0â¦\84 >[g] â¦\83L2, Tâ¦\84 â\86\92 â¦\83h, L2â¦\84 â\8a© T :[g] →
- ∀L1. h ⊢ L1 ⊩:⊑[g] L2 → ∀U2. ⦃h, L2⦄ ⊢ T •*[g] U2 →
+ â\88\80L2,T. h â\8a¢ â¦\83L0, T0â¦\84 >[g] â¦\83L2, Tâ¦\84 â\86\92 â¦\83h, L2â¦\84 â\8a¢ T ¡[g] →
+ ∀L1. h ⊢ L1 ¡⊑[g] L2 → ∀U2. ⦃h, L2⦄ ⊢ T •*[g] U2 →
∃∃U1. ⦃h, L1⦄ ⊢ T •*[g] U1 & L1 ⊢ U1 ⬌* U2.
#h #g #L0 #T0 #IH4 #IH3 #IH2 #IH1 #L2 #T #HLT0 #HT #L1 #HL12 #U2 #H @(sstas_ind … H) -U2 [ /2 width=3/ ]
#U2 #W #l #HTU2 #HU2W * #U1 #HTU1 #HU12
(∀L1,T1. h ⊢ ⦃L0, T0⦄ >[g] ⦃L1, T1⦄ → IH_ssta_ltpr_tpr h g L1 T1) →
(∀L1,T1. h ⊢ ⦃L0, T0⦄ >[g] ⦃L1, T1⦄ → IH_snv_ssta h g L1 T1) →
(∀L1,T1. h ⊢ ⦃L0, T0⦄ >[g] ⦃L1, T1⦄ → IH_snv_lsubsv h g L1 T1) →
- â\88\80L2,T1. h â\8a¢ â¦\83L0, T0â¦\84 >[g] â¦\83L2, T1â¦\84 â\86\92 â¦\83h, L2â¦\84 â\8a© T1 :[g] →
- ∀L1. h ⊢ L1 ⊩:⊑[g] L2 → ∀T2. ⦃h, L2⦄ ⊢ T1 •*➡*[g] T2 →
+ â\88\80L2,T1. h â\8a¢ â¦\83L0, T0â¦\84 >[g] â¦\83L2, T1â¦\84 â\86\92 â¦\83h, L2â¦\84 â\8a¢ T1 ¡[g] →
+ ∀L1. h ⊢ L1 ¡⊑[g] L2 → ∀T2. ⦃h, L2⦄ ⊢ T1 •*➡*[g] T2 →
∃∃T. ⦃h, L1⦄ ⊢ T1 •*➡*[g] T & L1 ⊢ T2 ➡* T.
#h #g #L0 #T0 #IH4 #IH3 #IH2 #IH1 #L2 #T1 #HLT0 #HT1 #L1 #HL12 #T2 * #T #HT1T #HTT2
lapply (lsubsv_cprs_trans … HL12 … HTT2) -HTT2 #HTT2
(* Properties concerning basic local environment slicing ********************)
(* Note: the constant 0 cannot be generalized *)
-lemma lsubsv_ldrop_O1_conf: ∀h,g,L1,L2. h ⊢ L1 ⊩:⊑[g] L2 →
+lemma lsubsv_ldrop_O1_conf: ∀h,g,L1,L2. h ⊢ L1 ¡⊑[g] L2 →
∀K1,e. ⇩[0, e] L1 ≡ K1 →
- ∃∃K2. h ⊢ K1 ⊩:⊑[g] K2 & ⇩[0, e] L2 ≡ K2.
+ ∃∃K2. h ⊢ K1 ¡⊑[g] K2 & ⇩[0, e] L2 ≡ K2.
#h #g #L1 #L2 #H elim H -L1 -L2
[ /2 width=3/
| #I #L1 #L2 #V #_ #IHL12 #K1 #e #H
qed.
(* Note: the constant 0 cannot be generalized *)
-lemma lsubsv_ldrop_O1_trans: ∀h,g,L1,L2. h ⊢ L1 ⊩:⊑[g] L2 →
+lemma lsubsv_ldrop_O1_trans: ∀h,g,L1,L2. h ⊢ L1 ¡⊑[g] L2 →
∀K2,e. ⇩[0, e] L2 ≡ K2 →
- ∃∃K1. h ⊢ K1 ⊩:⊑[g] K2 & ⇩[0, e] L1 ≡ K1.
+ ∃∃K1. h ⊢ K1 ¡⊑[g] K2 & ⇩[0, e] L1 ≡ K1.
#h #g #L1 #L2 #H elim H -L1 -L2
[ /2 width=3/
| #I #L1 #L2 #V #_ #IHL12 #K2 #e #H
(* Properties on local environment refinement for atomic arity assignment ***)
-lemma lsubsv_fwd_lsuba: ∀h,g,L1,L2. h ⊢ L1 ⊩:⊑[g] L2 → L1 ⁝⊑ L2.
+lemma lsubsv_fwd_lsuba: ∀h,g,L1,L2. h ⊢ L1 ¡⊑[g] L2 → L1 ⁝⊑ L2.
#h #g #L1 #L2 #H elim H -L1 -L2 // /2 width=1/
#L1 #L2 #V1 #V2 #W1 #W2 #l #HV1 #HVW1 #HW12 #HW2 #_ #_ #HL12
elim (snv_fwd_aaa … HV1) -HV1 #A #HV1
(* Properties on stratified static type assignment **************************)
lemma lsubsv_ssta_trans: ∀h,g,L2,T,U2,l. ⦃h, L2⦄ ⊢ T •[g] ⦃l, U2⦄ →
- ∀L1. h ⊢ L1 ⊩:⊑[g] L2 →
+ ∀L1. h ⊢ L1 ¡⊑[g] L2 →
∃∃U1. ⦃h, L1⦄ ⊢ T •[g] ⦃l, U1⦄ & L1 ⊢ U1 ⬌* U2.
/3 width=3 by lsubsv_fwd_lsubss, lsubss_ssta_trans/
qed-.
(* Basic inversion lemmas ***************************************************)
-fact snv_inv_lref_aux: â\88\80h,g,L,X. â¦\83h, Lâ¦\84 â\8a© X :[g] → ∀i. X = #i →
- â\88\83â\88\83I,K,V. â\87©[0, i] L â\89¡ K.â\93\91{I}V & â¦\83h, Kâ¦\84 â\8a© V :[g].
+fact snv_inv_lref_aux: â\88\80h,g,L,X. â¦\83h, Lâ¦\84 â\8a¢ X ¡[g] → ∀i. X = #i →
+ â\88\83â\88\83I,K,V. â\87©[0, i] L â\89¡ K.â\93\91{I}V & â¦\83h, Kâ¦\84 â\8a¢ V ¡[g].
#h #g #L #X * -L -X
[ #L #k #i #H destruct
| #I #L #K #V #i0 #HLK #HV #i #H destruct /2 width=5/
]
qed.
-lemma snv_inv_lref: â\88\80h,g,L,i. â¦\83h, Lâ¦\84 â\8a© #i :[g] →
- â\88\83â\88\83I,K,V. â\87©[0, i] L â\89¡ K.â\93\91{I}V & â¦\83h, Kâ¦\84 â\8a© V :[g].
+lemma snv_inv_lref: â\88\80h,g,L,i. â¦\83h, Lâ¦\84 â\8a¢ #i ¡[g] →
+ â\88\83â\88\83I,K,V. â\87©[0, i] L â\89¡ K.â\93\91{I}V & â¦\83h, Kâ¦\84 â\8a¢ V ¡[g].
/2 width=3/ qed-.
-fact snv_inv_gref_aux: â\88\80h,g,L,X. â¦\83h, Lâ¦\84 â\8a© X :[g] → ∀p. X = §p → ⊥.
+fact snv_inv_gref_aux: â\88\80h,g,L,X. â¦\83h, Lâ¦\84 â\8a¢ X ¡[g] → ∀p. X = §p → ⊥.
#h #g #L #X * -L -X
[ #L #k #p #H destruct
| #I #L #K #V #i #_ #_ #p #H destruct
]
qed.
-lemma snv_inv_gref: â\88\80h,g,L,p. â¦\83h, Lâ¦\84 â\8a© §p :[g] → ⊥.
+lemma snv_inv_gref: â\88\80h,g,L,p. â¦\83h, Lâ¦\84 â\8a¢ §p ¡[g] → ⊥.
/2 width=7/ qed-.
-fact snv_inv_bind_aux: â\88\80h,g,L,X. â¦\83h, Lâ¦\84 â\8a© X :[g] → ∀a,I,V,T. X = ⓑ{a,I}V.T →
- â¦\83h, Lâ¦\84 â\8a© V :[g] â\88§ â¦\83h, L.â\93\91{I}Vâ¦\84 â\8a© T :[g].
+fact snv_inv_bind_aux: â\88\80h,g,L,X. â¦\83h, Lâ¦\84 â\8a¢ X ¡[g] → ∀a,I,V,T. X = ⓑ{a,I}V.T →
+ â¦\83h, Lâ¦\84 â\8a¢ V ¡[g] â\88§ â¦\83h, L.â\93\91{I}Vâ¦\84 â\8a¢ T ¡[g].
#h #g #L #X * -L -X
[ #L #k #a #I #V #T #H destruct
| #I0 #L #K #V0 #i #_ #_ #a #I #V #T #H destruct
]
qed.
-lemma snv_inv_bind: â\88\80h,g,a,I,L,V,T. â¦\83h, Lâ¦\84 â\8a© â\93\91{a,I}V.T :[g] →
- â¦\83h, Lâ¦\84 â\8a© V :[g] â\88§ â¦\83h, L.â\93\91{I}Vâ¦\84 â\8a© T :[g].
+lemma snv_inv_bind: â\88\80h,g,a,I,L,V,T. â¦\83h, Lâ¦\84 â\8a¢ â\93\91{a,I}V.T ¡[g] →
+ â¦\83h, Lâ¦\84 â\8a¢ V ¡[g] â\88§ â¦\83h, L.â\93\91{I}Vâ¦\84 â\8a¢ T ¡[g].
/2 width=4/ qed-.
-fact snv_inv_appl_aux: â\88\80h,g,L,X. â¦\83h, Lâ¦\84 â\8a© X :[g] → ∀V,T. X = ⓐV.T →
- â\88\83â\88\83a,W,W0,U,l. â¦\83h, Lâ¦\84 â\8a© V :[g] & â¦\83h, Lâ¦\84 â\8a© T :[g] &
+fact snv_inv_appl_aux: â\88\80h,g,L,X. â¦\83h, Lâ¦\84 â\8a¢ X ¡[g] → ∀V,T. X = ⓐV.T →
+ â\88\83â\88\83a,W,W0,U,l. â¦\83h, Lâ¦\84 â\8a¢ V ¡[g] & â¦\83h, Lâ¦\84 â\8a¢ T ¡[g] &
⦃h, L⦄ ⊢ V •[g] ⦃l+1, W⦄ & L ⊢ W ➡* W0 &
⦃h, L⦄ ⊢ T •*➡*[g] ⓛ{a}W0.U.
#h #g #L #X * -L -X
]
qed.
-lemma snv_inv_appl: â\88\80h,g,L,V,T. â¦\83h, Lâ¦\84 â\8a© â\93\90V.T :[g] →
- â\88\83â\88\83a,W,W0,U,l. â¦\83h, Lâ¦\84 â\8a© V :[g] & â¦\83h, Lâ¦\84 â\8a© T :[g] &
+lemma snv_inv_appl: â\88\80h,g,L,V,T. â¦\83h, Lâ¦\84 â\8a¢ â\93\90V.T ¡[g] →
+ â\88\83â\88\83a,W,W0,U,l. â¦\83h, Lâ¦\84 â\8a¢ V ¡[g] & â¦\83h, Lâ¦\84 â\8a¢ T ¡[g] &
⦃h, L⦄ ⊢ V •[g] ⦃l+1, W⦄ & L ⊢ W ➡* W0 &
⦃h, L⦄ ⊢ T •*➡*[g] ⓛ{a}W0.U.
/2 width=3/ qed-.
-fact snv_inv_cast_aux: â\88\80h,g,L,X. â¦\83h, Lâ¦\84 â\8a© X :[g] → ∀W,T. X = ⓝW.T →
- â\88\83â\88\83U,l. â¦\83h, Lâ¦\84 â\8a© W :[g] & â¦\83h, Lâ¦\84 â\8a© T :[g] &
+fact snv_inv_cast_aux: â\88\80h,g,L,X. â¦\83h, Lâ¦\84 â\8a¢ X ¡[g] → ∀W,T. X = ⓝW.T →
+ â\88\83â\88\83U,l. â¦\83h, Lâ¦\84 â\8a¢ W ¡[g] & â¦\83h, Lâ¦\84 â\8a¢ T ¡[g] &
⦃h, L⦄ ⊢ T •[g] ⦃l+1, U⦄ & L ⊢ U ⬌* W.
#h #g #L #X * -L -X
[ #L #k #W #T #H destruct
]
qed.
-lemma snv_inv_cast: â\88\80h,g,L,W,T. â¦\83h, Lâ¦\84 â\8a© â\93\9dW.T :[g] →
- â\88\83â\88\83U,l. â¦\83h, Lâ¦\84 â\8a© W :[g] & â¦\83h, Lâ¦\84 â\8a© T :[g] &
+lemma snv_inv_cast: â\88\80h,g,L,W,T. â¦\83h, Lâ¦\84 â\8a¢ â\93\9dW.T ¡[g] →
+ â\88\83â\88\83U,l. â¦\83h, Lâ¦\84 â\8a¢ W ¡[g] & â¦\83h, Lâ¦\84 â\8a¢ T ¡[g] &
⦃h, L⦄ ⊢ T •[g] ⦃l+1, U⦄ & L ⊢ U ⬌* W.
/2 width=3/ qed-.
(* Basic forward lemmas *****************************************************)
-lemma snv_fwd_ssta: â\88\80h,g,L,T. â¦\83h, Lâ¦\84 â\8a© T :[g] → ∃∃l,U. ⦃h, L⦄ ⊢ T •[g] ⦃l, U⦄.
+lemma snv_fwd_ssta: â\88\80h,g,L,T. â¦\83h, Lâ¦\84 â\8a¢ T ¡[g] → ∃∃l,U. ⦃h, L⦄ ⊢ T •[g] ⦃l, U⦄.
#h #g #L #T #H elim H -L -T
[ #L #k elim (deg_total h g k) /3 width=3/
| * #L #K #V #i #HLK #_ * #l0 #W #HVW
(* Forward lemmas on atomic arity assignment for terms **********************)
-lemma snv_fwd_aaa: â\88\80h,g,L,T. â¦\83h, Lâ¦\84 â\8a© T :[g] → ∃A. L ⊢ T ⁝ A.
+lemma snv_fwd_aaa: â\88\80h,g,L,T. â¦\83h, Lâ¦\84 â\8a¢ T ¡[g] → ∃A. L ⊢ T ⁝ A.
#h #g #L #T #H elim H -L -T
[ /2 width=2/
| #I #L #K #V #i #HLK #_ * /3 width=6/
]
qed-.
-lemma snv_fwd_csn: â\88\80h,g,L,T. â¦\83h, Lâ¦\84 â\8a© T :[g] → L ⊢ ⬊* T.
+lemma snv_fwd_csn: â\88\80h,g,L,T. â¦\83h, Lâ¦\84 â\8a¢ T ¡[g] → L ⊢ ⬊* T.
#h #g #L #T #H elim (snv_fwd_aaa … H) -H /2 width=2/
qed-.
(* Inductive premises for the preservation results **************************)
definition IH_snv_ltpr_tpr: ∀h:sh. sd h → relation2 lenv term ≝
- λh,g,L1,T1. â¦\83h, L1â¦\84 â\8a© T1 :[g] →
- â\88\80L2. L1 â\9e¡ L2 â\86\92 â\88\80T2. T1 â\9e¡ T2 â\86\92 â¦\83h, L2â¦\84 â\8a© T2 :[g].
+ λh,g,L1,T1. â¦\83h, L1â¦\84 â\8a¢ T1 ¡[g] →
+ â\88\80L2. L1 â\9e¡ L2 â\86\92 â\88\80T2. T1 â\9e¡ T2 â\86\92 â¦\83h, L2â¦\84 â\8a¢ T2 ¡[g].
definition IH_ssta_ltpr_tpr: ∀h:sh. sd h → relation2 lenv term ≝
- λh,g,L1,T1. â¦\83h, L1â¦\84 â\8a© T1 :[g] →
+ λh,g,L1,T1. â¦\83h, L1â¦\84 â\8a¢ T1 ¡[g] →
∀U1,l. ⦃h, L1⦄ ⊢ T1 •[g] ⦃l, U1⦄ →
∀L2. L1 ➡ L2 → ∀T2. T1 ➡ T2 →
∃∃U2. ⦃h, L2⦄ ⊢ T2 •[g] ⦃l, U2⦄ & L2 ⊢ U1 ⬌* U2.
definition IH_snv_ssta: ∀h:sh. sd h → relation2 lenv term ≝
- λh,g,L1,T1. â¦\83h, L1â¦\84 â\8a© T1 :[g] →
- â\88\80U1,l. â¦\83h, L1â¦\84 â\8a¢ T1 â\80¢[g] â¦\83l+1, U1â¦\84 â\86\92 â¦\83h, L1â¦\84 â\8a© U1 :[g].
+ λh,g,L1,T1. â¦\83h, L1â¦\84 â\8a¢ T1 ¡[g] →
+ â\88\80U1,l. â¦\83h, L1â¦\84 â\8a¢ T1 â\80¢[g] â¦\83l+1, U1â¦\84 â\86\92 â¦\83h, L1â¦\84 â\8a¢ U1 ¡[g].
definition IH_snv_lsubsv: ∀h:sh. sd h → relation2 lenv term ≝
- λh,g,L2,T. â¦\83h, L2â¦\84 â\8a© T :[g] →
- ∀L1. h ⊢ L1 ⊩:⊑[g] L2 → ⦃h, L1⦄ ⊩ T :[g].
+ λh,g,L2,T. â¦\83h, L2â¦\84 â\8a¢ T ¡[g] →
+ ∀L1. h ⊢ L1 ¡⊑[g] L2 → ⦃h, L1⦄ ⊢ T ¡[g].
(* Properties for the preservation results **********************************)
fact snv_ltpr_cpr_aux: ∀h,g,L1,T1. IH_snv_ltpr_tpr h g L1 T1 →
- â¦\83h, L1â¦\84 â\8a© T1 :[g] →
- â\88\80L2. L1 â\9e¡ L2 â\86\92 â\88\80T2. L2 â\8a¢ T1 â\9e¡ T2 â\86\92 â¦\83h, L2â¦\84 â\8a© T2 :[g].
+ â¦\83h, L1â¦\84 â\8a¢ T1 ¡[g] →
+ â\88\80L2. L1 â\9e¡ L2 â\86\92 â\88\80T2. L2 â\8a¢ T1 â\9e¡ T2 â\86\92 â¦\83h, L2â¦\84 â\8a¢ T2 ¡[g].
#h #g #L1 #T1 #IH #HT1 #L2 #HL12 #T2 * #T #HT1T #HTT2
lapply (IH … HL12 … HT1T) -HL12 // -T1 #HT0
lapply (snv_tpss_conf … HT0 … HTT2) -T //
qed-.
fact ssta_ltpr_cpr_aux: ∀h,g,L1,T1. IH_ssta_ltpr_tpr h g L1 T1 →
- â¦\83h, L1â¦\84 â\8a© T1 :[g] →
+ â¦\83h, L1â¦\84 â\8a¢ T1 ¡[g] →
∀U1,l. ⦃h, L1⦄ ⊢ T1 •[g] ⦃l, U1⦄ →
∀L2. L1 ➡ L2 → ∀T2. L2 ⊢ T1 ➡ T2 →
∃∃U2. ⦃h, L2⦄ ⊢ T2 •[g] ⦃l, U2⦄ & L2 ⊢ U1 ⬌* U2.
fact snv_ltpr_cprs_aux: ∀h,g,L0,T0.
(∀L1,T1. h ⊢ ⦃L0, T0⦄ >[g] ⦃L1, T1⦄ → IH_snv_ltpr_tpr h g L1 T1) →
- â\88\80L1,T1. h â\8a¢ â¦\83L0, T0â¦\84 >[g] â¦\83L1, T1â¦\84 â\86\92 â¦\83h, L1â¦\84 â\8a© T1 :[g] →
- â\88\80L2. L1 â\9e¡ L2 â\86\92 â\88\80T2. L2 â\8a¢ T1 â\9e¡* T2 â\86\92 â¦\83h, L2â¦\84 â\8a© T2 :[g].
+ â\88\80L1,T1. h â\8a¢ â¦\83L0, T0â¦\84 >[g] â¦\83L1, T1â¦\84 â\86\92 â¦\83h, L1â¦\84 â\8a¢ T1 ¡[g] →
+ â\88\80L2. L1 â\9e¡ L2 â\86\92 â\88\80T2. L2 â\8a¢ T1 â\9e¡* T2 â\86\92 â¦\83h, L2â¦\84 â\8a¢ T2 ¡[g].
#h #g #L0 #T0 #IH #L1 #T1 #HLT0 #HT1 #L2 #HL12 #T2 #H
@(cprs_ind … H) -T2 [ /2 width=6 by snv_ltpr_cpr_aux/ ] -HT1
/5 width=6 by snv_ltpr_cpr_aux, ygt_yprs_trans, ltpr_cprs_yprs/
fact ssta_ltpr_cprs_aux: ∀h,g,L0,T0.
(∀L1,T1. h ⊢ ⦃L0, T0⦄ >[g] ⦃L1, T1⦄ → IH_snv_ltpr_tpr h g L1 T1) →
(∀L1,T1. h ⊢ ⦃L0, T0⦄ >[g] ⦃L1, T1⦄ → IH_ssta_ltpr_tpr h g L1 T1) →
- â\88\80L1,T1. h â\8a¢ â¦\83L0, T0â¦\84 >[g] â¦\83L1, T1â¦\84 â\86\92 â¦\83h, L1â¦\84 â\8a© T1 :[g] →
+ â\88\80L1,T1. h â\8a¢ â¦\83L0, T0â¦\84 >[g] â¦\83L1, T1â¦\84 â\86\92 â¦\83h, L1â¦\84 â\8a¢ T1 ¡[g] →
∀U1,l. ⦃h, L1⦄ ⊢ T1 •[g] ⦃l, U1⦄ →
∀L2. L1 ➡ L2 → ∀T2. L2 ⊢ T1 ➡* T2 →
∃∃U2. ⦃h, L2⦄ ⊢ T2 •[g] ⦃l, U2⦄ & L2 ⊢ U1 ⬌* U2.
(∀L1,T1. h ⊢ ⦃L0, T0⦄ >[g] ⦃L1, T1⦄ → IH_snv_ltpr_tpr h g L1 T1) →
(∀L1,T1. h ⊢ ⦃L0, T0⦄ >[g] ⦃L1, T1⦄ → IH_ssta_ltpr_tpr h g L1 T1) →
∀L1,L2,T1,T2. h ⊢ ⦃L0, T0⦄ >[g] ⦃L1, T1⦄ → h ⊢ ⦃L0, T0⦄ >[g] ⦃L2, T2⦄ →
- â¦\83h, L1â¦\84 â\8a© T1 :[g] â\86\92 â¦\83h, L2â¦\84 â\8a© T2 :[g] →
+ â¦\83h, L1â¦\84 â\8a¢ T1 ¡[g] â\86\92 â¦\83h, L2â¦\84 â\8a¢ T2 ¡[g] →
∀U1,l1. ⦃h, L1⦄ ⊢ T1 •[g] ⦃l1, U1⦄ →
∀U2,l2. ⦃h, L2⦄ ⊢ T2 •[g] ⦃l2, U2⦄ →
L1 ➡ L2 → L2 ⊢ T1 ⬌* T2 →
fact snv_sstas_aux: ∀h,g,L0,T0.
(∀L1,T1. h ⊢ ⦃L0, T0⦄ >[g] ⦃L1, T1⦄ → IH_snv_ssta h g L1 T1) →
- â\88\80L1,T1. h â\8a¢ â¦\83L0, T0â¦\84 >[g] â¦\83L1, T1â¦\84 â\86\92 â¦\83h, L1â¦\84 â\8a© T1 :[g] →
- â\88\80U1. â¦\83h, L1â¦\84 â\8a¢ T1 â\80¢*[g] U1 â\86\92 â¦\83h, L1â¦\84 â\8a© U1 :[g].
+ â\88\80L1,T1. h â\8a¢ â¦\83L0, T0â¦\84 >[g] â¦\83L1, T1â¦\84 â\86\92 â¦\83h, L1â¦\84 â\8a¢ T1 ¡[g] →
+ â\88\80U1. â¦\83h, L1â¦\84 â\8a¢ T1 â\80¢*[g] U1 â\86\92 â¦\83h, L1â¦\84 â\8a¢ U1 ¡[g].
#h #g #L0 #T0 #IH #L1 #T1 #HLT0 #HT1 #U1 #H
@(sstas_ind … H) -U1 // -HT1 /4 width=5 by ygt_yprs_trans, sstas_yprs/
qed-.
(∀L1,T1. h ⊢ ⦃L0, T0⦄ >[g] ⦃L1, T1⦄ → IH_snv_ssta h g L1 T1) →
(∀L1,T1. h ⊢ ⦃L0, T0⦄ >[g] ⦃L1, T1⦄ → IH_snv_ltpr_tpr h g L1 T1) →
(∀L1,T1. h ⊢ ⦃L0, T0⦄ >[g] ⦃L1, T1⦄ → IH_ssta_ltpr_tpr h g L1 T1) →
- â\88\80L1,T1. h â\8a¢ â¦\83L0, T0â¦\84 >[g] â¦\83L1, T1â¦\84 â\86\92 â¦\83h, L1â¦\84 â\8a© T1 :[g] →
+ â\88\80L1,T1. h â\8a¢ â¦\83L0, T0â¦\84 >[g] â¦\83L1, T1â¦\84 â\86\92 â¦\83h, L1â¦\84 â\8a¢ T1 ¡[g] →
∀L2. L1 ➡ L2 → ∀T2. L2 ⊢ T1 ➡* T2 → ∀U1. ⦃h, L1⦄ ⊢ T1 •*[g] U1 →
∃∃U2. ⦃h, L2⦄ ⊢ T2 •*[g] U2 & L2 ⊢ U1 ⬌* U2.
#h #g #L0 #T0 #IH3 #IH2 #IH1 #L1 #T1 #H01 #HT1 #L2 #HL12 #T2 #HT12 #U1 #H
(∀L1,T1. h ⊢ ⦃L0, T0⦄ >[g] ⦃L1, T1⦄ → IH_snv_ssta h g L1 T1) →
(∀L1,T1. h ⊢ ⦃L0, T0⦄ >[g] ⦃L1, T1⦄ → IH_snv_ltpr_tpr h g L1 T1) →
(∀L1,T1. h ⊢ ⦃L0, T0⦄ >[g] ⦃L1, T1⦄ → IH_ssta_ltpr_tpr h g L1 T1) →
- â\88\80L1,T1. h â\8a¢ â¦\83L0, T0â¦\84 >[g] â¦\83L1, T1â¦\84 â\86\92 â¦\83h, L1â¦\84 â\8a© T1 :[g] →
+ â\88\80L1,T1. h â\8a¢ â¦\83L0, T0â¦\84 >[g] â¦\83L1, T1â¦\84 â\86\92 â¦\83h, L1â¦\84 â\8a¢ T1 ¡[g] →
∀U1. ⦃h, L1⦄ ⊢ T1 •*➡*[g] U1 →
∀L2. L1 ➡ L2 → ∀T2. L2 ⊢ T1 ➡* T2 →
∃∃U2. ⦃h, L2⦄ ⊢ T2 •*➡*[g] U2 & L2 ⊢ U1 ➡* U2.
fact ssta_dxprs_aux: ∀h,g,L0,T0.
(∀L1,T1. h ⊢ ⦃L0, T0⦄ >[g] ⦃L1, T1⦄ → IH_snv_ltpr_tpr h g L1 T1) →
(∀L1,T1. h ⊢ ⦃L0, T0⦄ >[g] ⦃L1, T1⦄ → IH_ssta_ltpr_tpr h g L1 T1) →
- â\88\80L1,T1. h â\8a¢ â¦\83L0, T0â¦\84 >[g] â¦\83L1, T1â¦\84 â\86\92 â¦\83h, L1â¦\84 â\8a© T1 :[g] →
+ â\88\80L1,T1. h â\8a¢ â¦\83L0, T0â¦\84 >[g] â¦\83L1, T1â¦\84 â\86\92 â¦\83h, L1â¦\84 â\8a¢ T1 ¡[g] →
∀l,U1. ⦃h, L1⦄ ⊢ T1 •[g] ⦃l+1, U1⦄ → ∀T2. ⦃h, L1⦄ ⊢ T1 •*➡*[g] T2 →
∃∃U,U2. ⦃h, L1⦄ ⊢ U1 •*[g] U & ⦃h, L1⦄ ⊢ T2 •*[g] U2 & L1 ⊢ U ⬌* U2.
#h #g #L0 #T0 #IH2 #IH1 #L1 #T1 #H01 #HT1 #l #U1 #HTU1 #T2 * #T #HT1T #HTT2
(* Relocation properties ****************************************************)
-lemma snv_lift: â\88\80h,g,K,T. â¦\83h, Kâ¦\84 â\8a© T :[g] → ∀L,d,e. ⇩[d, e] L ≡ K →
- â\88\80U. â\87§[d, e] T â\89¡ U â\86\92 â¦\83h, Lâ¦\84 â\8a© U :[g].
+lemma snv_lift: â\88\80h,g,K,T. â¦\83h, Kâ¦\84 â\8a¢ T ¡[g] → ∀L,d,e. ⇩[d, e] L ≡ K →
+ â\88\80U. â\87§[d, e] T â\89¡ U â\86\92 â¦\83h, Lâ¦\84 â\8a¢ U ¡[g].
#h #g #K #T #H elim H -K -T
[ #K #k #L #d #e #_ #X #H
>(lift_inv_sort1 … H) -X -K -d -e //
]
qed.
-lemma snv_inv_lift: â\88\80h,g,L,U. â¦\83h, Lâ¦\84 â\8a© U :[g] → ∀K,d,e. ⇩[d, e] L ≡ K →
- â\88\80T. â\87§[d, e] T â\89¡ U â\86\92 â¦\83h, Kâ¦\84 â\8a© T :[g].
+lemma snv_inv_lift: â\88\80h,g,L,U. â¦\83h, Lâ¦\84 â\8a¢ U ¡[g] → ∀K,d,e. ⇩[d, e] L ≡ K →
+ â\88\80T. â\87§[d, e] T â\89¡ U â\86\92 â¦\83h, Kâ¦\84 â\8a¢ T ¡[g].
#h #g #L #U #H elim H -L -U
[ #L #k #K #d #e #_ #X #H
>(lift_inv_sort2 … H) -X -L -d -e //
(* Properties about dx parallel unfold **************************************)
-lemma snv_ltpss_dx_tpss_conf: â\88\80h,g,L1,T1. â¦\83h, L1â¦\84 â\8a© T1 :[g] →
+lemma snv_ltpss_dx_tpss_conf: â\88\80h,g,L1,T1. â¦\83h, L1â¦\84 â\8a¢ T1 ¡[g] →
∀L2,d,e. L1 ▶* [d, e] L2 →
- â\88\80T2. L2 â\8a¢ T1 â\96¶* [d, e] T2 â\86\92 â¦\83h, L2â¦\84 â\8a© T2 :[g].
+ â\88\80T2. L2 â\8a¢ T1 â\96¶* [d, e] T2 â\86\92 â¦\83h, L2â¦\84 â\8a¢ T2 ¡[g].
#h #g #L1 #T1 #H elim H -L1 -T1
[ #L1 #k #L2 #d #e #_ #X #H
>(tpss_inv_sort1 … H) -X //
]
qed-.
-lemma snv_ltpss_dx_conf: â\88\80h,g,L1,T. â¦\83h, L1â¦\84 â\8a© T :[g] →
- â\88\80L2,d,e. L1 â\96¶* [d, e] L2 â\86\92 â¦\83h, L2â¦\84 â\8a© T :[g].
+lemma snv_ltpss_dx_conf: â\88\80h,g,L1,T. â¦\83h, L1â¦\84 â\8a¢ T ¡[g] →
+ â\88\80L2,d,e. L1 â\96¶* [d, e] L2 â\86\92 â¦\83h, L2â¦\84 â\8a¢ T ¡[g].
#h #g #L1 #T #HT #L2 #d #e #HL12
@(snv_ltpss_dx_tpss_conf … HT … HL12) //
qed-.
-lemma snv_tpss_conf: â\88\80h,g,L,T1. â¦\83h, Lâ¦\84 â\8a© T1 :[g] →
- â\88\80T2,d,e. L â\8a¢ T1 â\96¶* [d, e] T2 â\86\92 â¦\83h, Lâ¦\84 â\8a© T2 :[g].
+lemma snv_tpss_conf: â\88\80h,g,L,T1. â¦\83h, Lâ¦\84 â\8a¢ T1 ¡[g] →
+ â\88\80T2,d,e. L â\8a¢ T1 â\96¶* [d, e] T2 â\86\92 â¦\83h, Lâ¦\84 â\8a¢ T2 ¡[g].
#h #g #L #T1 #HT1 #T2 #d #e #HT12
@(snv_ltpss_dx_tpss_conf … HT1 … HT12) //
qed-.
-lemma snv_tps_conf: â\88\80h,g,L,T1. â¦\83h, Lâ¦\84 â\8a© T1 :[g] →
- â\88\80T2,d,e. L â\8a¢ T1 â\96¶ [d, e] T2 â\86\92 â¦\83h, Lâ¦\84 â\8a© T2 :[g].
+lemma snv_tps_conf: â\88\80h,g,L,T1. â¦\83h, Lâ¦\84 â\8a¢ T1 ¡[g] →
+ â\88\80T2,d,e. L â\8a¢ T1 â\96¶ [d, e] T2 â\86\92 â¦\83h, Lâ¦\84 â\8a¢ T2 ¡[g].
#h #g #L #T1 #HT1 #T2 #d #e #HT12
@(snv_tpss_conf … HT1 T2) /2 width=3/
qed-.
(* Properties about sn parallel unfold **************************************)
lemma snv_ltpss_sn_conf: ∀h,g,L1,L2,d,e. L1 ⊢ ▶* [d, e] L2 →
- â\88\80T. â¦\83h, L1â¦\84 â\8a© T :[g] â\86\92 â¦\83h, L2â¦\84 â\8a© T :[g].
+ â\88\80T. â¦\83h, L1â¦\84 â\8a¢ T ¡[g] â\86\92 â¦\83h, L2â¦\84 â\8a¢ T ¡[g].
#h #g #L1 #L2 #d #e #H
lapply (ltpss_sn_ltpssa … H) -H #H @(ltpssa_ind … H) -L2 //
#L #L2 #_ #HL2 #IHL1 #T1 #HT1
(* Forward_lemmas on iterated stratified static type assignment for terms ***)
-lemma snv_sstas_fwd_correct: â\88\80h,g,L,T1,T2. â¦\83h, Lâ¦\84 â\8a© T1 :[g] → ⦃h, L⦄ ⊢ T1 •* [g] T2 →
+lemma snv_sstas_fwd_correct: â\88\80h,g,L,T1,T2. â¦\83h, Lâ¦\84 â\8a¢ T1 ¡[g] → ⦃h, L⦄ ⊢ T1 •* [g] T2 →
∃∃U2,l. ⦃h, L⦄ ⊢ T2 •[g] ⦃l, U2⦄.
#h #g #L #T1 #T2 #HT1 #HT12
elim (snv_fwd_ssta … HT1) -HT1 /2 width=5 by sstas_fwd_correct/
]
qed.
-lemma lsubsv_ygt: ∀h,g,L1,L2,T. h ⊢ L2 ⊩:⊑[g] L1 → (L1 = L2 → ⊥) →
+lemma lsubsv_ygt: ∀h,g,L1,L2,T. h ⊢ L2 ¡⊑[g] L1 → (L1 = L2 → ⊥) →
h ⊢ ⦃L1, T⦄ >[g] ⦃L2, T⦄.
/4 width=1/ qed.
| ypr_ltpr : ∀L2. L1 ➡ L2 → ypr h g L1 T1 L2 T1
| ypr_cpr : ∀T2. L1 ⊢ T1 ➡ T2 → ypr h g L1 T1 L1 T2
| ypr_ssta : ∀T2,l. ⦃h, L1⦄ ⊢ T1 •[g] ⦃l+1, T2⦄ → ypr h g L1 T1 L1 T2
-| ypr_lsubsv: ∀L2. h ⊢ L2 ⊩:⊑[g] L1 → ypr h g L1 T1 L2 T1
+| ypr_lsubsv: ∀L2. h ⊢ L2 ¡⊑[g] L1 → ypr h g L1 T1 L2 T1
.
interpretation
#h #g #L #T1 #T2 #H @(sstas_ind … H) -T2 // /3 width=4 by ypr_ssta, yprs_strap1/
qed.
-lemma lsubsv_yprs: ∀h,g,L1,L2,T. h ⊢ L2 ⊩:⊑[g] L1 → h ⊢ ⦃L1, T⦄ ≥[g] ⦃L2, T⦄.
+lemma lsubsv_yprs: ∀h,g,L1,L2,T. h ⊢ L2 ¡⊑[g] L1 → h ⊢ ⦃L1, T⦄ ≥[g] ⦃L2, T⦄.
/3 width=1/ qed.
lemma ltpr_cprs_yprs: ∀h,g,L1,L2,T1,T2. L1 ➡ L2 → L2 ⊢ T1 ➡* T2 →
| ysc_fw : ∀L2,T2. ♯{L2, T2} < ♯{L1, T1} → ysc h g L1 T1 L2 T2
| ysc_cpr : ∀T2. L1 ⊢ T1 ➡ T2 → (T1 = T2 → ⊥) → ysc h g L1 T1 L1 T2
| ysc_ssta : ∀T2,l. ⦃h, L1⦄ ⊢ T1 •[g] ⦃l+1, T2⦄ → ysc h g L1 T1 L1 T2
-| ysc_lsubsv: ∀L2. h ⊢ L2 ⊩:⊑[g] L1 → (L1 = L2 → ⊥) → ysc h g L1 T1 L2 T1
+| ysc_lsubsv: ∀L2. h ⊢ L2 ¡⊑[g] L1 → (L1 = L2 → ⊥) → ysc h g L1 T1 L2 T1
.
interpretation
(**************************************************************************)
(* THE FORMAL SYSTEM λδ: MATITA SOURCE FILES
- * Suggested invocation to start formal specifications with:
- * - Patience on me to gain peace and perfection! -
+ * Initial invocation: - Patience on me to gain peace and perfection! -
*)
include "ground_2/star.ma".
(* Dynamic typing ***********************************************************)
-notation "hvbox( â¦\83 term 46 h , break term 46 L â¦\84 â\8a© break term 46 T : break [ term 46 g ] )"
+notation "hvbox( â¦\83 term 46 h , break term 46 L â¦\84 â\8a¢ break term 46 T ¡ break [ term 46 g ] )"
non associative with precedence 45
for @{ 'NativeValid $h $g $L $T }.
-notation "hvbox( h ⊢ break term 46 L1 ⊩ : ⊑ break [ term 46 g ] break term 46 L2 )"
+notation "hvbox( h ⊢ break term 46 L1 ¡ ⊑ break [ term 46 g ] break term 46 L2 )"
non associative with precedence 45
for @{ 'CrSubEqV $h $g $L1 $L2 }.
}
]
[ { "local env. ref. for stratified native validity" * } {
- [ "lsubsv ( ? ⊢ ? ⊩:⊑[?] ? )" "lsubsv_ldrop" + "lsubsv_lsuba" + "lsubsv_ssta" + "lsubsv_dxprs" + "lsubsv_cpcs" + "lsubsv_snv" * ]
+ [ "lsubsv ( ? ⊢ ? ¡⊑[?] ? )" "lsubsv_ldrop" + "lsubsv_lsuba" + "lsubsv_ssta" + "lsubsv_dxprs" + "lsubsv_cpcs" + "lsubsv_snv" * ]
}
]
[ { "stratified native validity" * } {
- [ "snv ( â¦\83?,?â¦\84 â\8a© ? :[?] )" "snv_lift" + "snv_ltpss_dx" + "snv_ltpss_sn" + "snv_aaa" + "snv_ssta" + "snv_sstas" + "snv_ssta_ltpr" + "snv_ltpr" + "snv_cpcs" * ]
+ [ "snv ( â¦\83?,?â¦\84 â\8a¢ ? ¡[?] )" "snv_lift" + "snv_ltpss_dx" + "snv_ltpss_sn" + "snv_aaa" + "snv_ssta" + "snv_sstas" + "snv_ssta_ltpr" + "snv_ltpr" + "snv_cpcs" * ]
}
]
}