inductive cpy: ynat → ynat → relation4 genv lenv term term ≝
| cpy_atom : ∀I,G,L,d,e. cpy d e G L (⓪{I}) (⓪{I})
| cpy_subst: ∀I,G,L,K,V,W,i,d,e. d ≤ yinj i → i < d+e →
- â\87©[i] L â\89¡ K.â\93\91{I}V â\86\92 â\87§[0, i+1] V ≡ W → cpy d e G L (#i) W
+ â¬\87[i] L â\89¡ K.â\93\91{I}V â\86\92 â¬\86[0, i+1] V ≡ W → cpy d e G L (#i) W
| cpy_bind : ∀a,I,G,L,V1,V2,T1,T2,d,e.
cpy d e G L V1 V2 → cpy (⫯d) e G (L.ⓑ{I}V1) T1 T2 →
cpy d e G L (ⓑ{a,I}V1.T1) (ⓑ{a,I}V2.T2)
qed.
(* Basic_1: was: subst1_ex *)
-lemma cpy_full: â\88\80I,G,K,V,T1,L,d. â\87©[d] L ≡ K.ⓑ{I}V →
- â\88\83â\88\83T2,T. â¦\83G, Lâ¦\84 â\8a¢ T1 â\96¶[d, 1] T2 & â\87§[d, 1] T ≡ T2.
+lemma cpy_full: â\88\80I,G,K,V,T1,L,d. â¬\87[d] L ≡ K.ⓑ{I}V →
+ â\88\83â\88\83T2,T. â¦\83G, Lâ¦\84 â\8a¢ T1 â\96¶[d, 1] T2 & â¬\86[d, 1] T ≡ T2.
#I #G #K #V #T1 elim T1 -T1
[ * #i #L #d #HLK
/2 width=4 by lift_sort, lift_gref, ex2_2_intro/
(* Basic forward lemmas *****************************************************)
lemma cpy_fwd_up: ∀G,L,U1,U2,dt,et. ⦃G, L⦄ ⊢ U1 ▶[dt, et] U2 →
- â\88\80T1,d,e. â\87§[d, e] T1 ≡ U1 →
+ â\88\80T1,d,e. â¬\86[d, e] T1 ≡ U1 →
d ≤ dt → d + e ≤ dt + et →
- â\88\83â\88\83T2. â¦\83G, Lâ¦\84 â\8a¢ U1 â\96¶[d+e, dt+et-(d+e)] U2 & â\87§[d, e] T2 ≡ U2.
+ â\88\83â\88\83T2. â¦\83G, Lâ¦\84 â\8a¢ U1 â\96¶[d+e, dt+et-(d+e)] U2 & â¬\86[d, e] T2 ≡ U2.
#G #L #U1 #U2 #dt #et #H elim H -G -L -U1 -U2 -dt -et
[ * #i #G #L #dt #et #T1 #d #e #H #_
[ lapply (lift_inv_sort2 … H) -H #H destruct /2 width=3 by ex2_intro/
fact cpy_inv_atom1_aux: ∀G,L,T1,T2,d,e. ⦃G, L⦄ ⊢ T1 ▶[d, e] T2 → ∀J. T1 = ⓪{J} →
T2 = ⓪{J} ∨
∃∃I,K,V,i. d ≤ yinj i & i < d + e &
- â\87©[i] L ≡ K.ⓑ{I}V &
- â\87§[O, i+1] V ≡ T2 &
+ â¬\87[i] L ≡ K.ⓑ{I}V &
+ â¬\86[O, i+1] V ≡ T2 &
J = LRef i.
#G #L #T1 #T2 #d #e * -G -L -T1 -T2 -d -e
[ #I #G #L #d #e #J #H destruct /2 width=1 by or_introl/
lemma cpy_inv_atom1: ∀I,G,L,T2,d,e. ⦃G, L⦄ ⊢ ⓪{I} ▶[d, e] T2 →
T2 = ⓪{I} ∨
∃∃J,K,V,i. d ≤ yinj i & i < d + e &
- â\87©[i] L ≡ K.ⓑ{J}V &
- â\87§[O, i+1] V ≡ T2 &
+ â¬\87[i] L ≡ K.ⓑ{J}V &
+ â¬\86[O, i+1] V ≡ T2 &
I = LRef i.
/2 width=4 by cpy_inv_atom1_aux/ qed-.
lemma cpy_inv_lref1: ∀G,L,T2,i,d,e. ⦃G, L⦄ ⊢ #i ▶[d, e] T2 →
T2 = #i ∨
∃∃I,K,V. d ≤ i & i < d + e &
- â\87©[i] L ≡ K.ⓑ{I}V &
- â\87§[O, i+1] V ≡ T2.
+ â¬\87[i] L ≡ K.ⓑ{I}V &
+ â¬\86[O, i+1] V ≡ T2.
#G #L #T2 #i #d #e #H
elim (cpy_inv_atom1 … H) -H /2 width=1 by or_introl/
* #I #K #V #j #Hdj #Hjde #HLK #HVT2 #H destruct /3 width=5 by ex4_3_intro, or_intror/
/2 width=6 by cpy_inv_refl_O2_aux/ qed-.
(* Basic_1: was: subst1_gen_lift_eq *)
-lemma cpy_inv_lift1_eq: â\88\80G,T1,U1,d,e. â\87§[d, e] T1 ≡ U1 →
+lemma cpy_inv_lift1_eq: â\88\80G,T1,U1,d,e. â¬\86[d, e] T1 ≡ U1 →
∀L,U2. ⦃G, L⦄ ⊢ U1 ▶[d, e] U2 → U1 = U2.
#G #T1 #U1 #d #e #HTU1 #L #U2 #HU12 elim (cpy_fwd_up … HU12 … HTU1) -HU12 -HTU1
/2 width=4 by cpy_inv_refl_O2/