inductive frees: relation3 lenv term rtmap ≝
| frees_sort: ∀f,L,s. 𝐈⦃f⦄ → frees L (⋆s) f
-| frees_atom: â\88\80f,i. ð\9d\90\88â¦\83fâ¦\84 â\86\92 frees (â\8b\86) (#i) (â\86\91*[i]⫯f)
+| frees_atom: â\88\80f,i. ð\9d\90\88â¦\83fâ¦\84 â\86\92 frees (â\8b\86) (#i) (⫯*[i]â\86\91f)
| frees_pair: ∀f,I,L,V. frees L V f →
- frees (L.â\93\91{I}V) (#0) (⫯f)
-| frees_unit: â\88\80f,I,L. ð\9d\90\88â¦\83fâ¦\84 â\86\92 frees (L.â\93¤{I}) (#0) (⫯f)
+ frees (L.â\93\91{I}V) (#0) (â\86\91f)
+| frees_unit: â\88\80f,I,L. ð\9d\90\88â¦\83fâ¦\84 â\86\92 frees (L.â\93¤{I}) (#0) (â\86\91f)
| frees_lref: ∀f,I,L,i. frees L (#i) f →
- frees (L.â\93\98{I}) (#⫯i) (â\86\91f)
+ frees (L.â\93\98{I}) (#â\86\91i) (⫯f)
| frees_gref: ∀f,L,l. 𝐈⦃f⦄ → frees L (§l) f
| frees_bind: ∀f1,f2,f,p,I,L,V,T. frees L V f1 → frees (L.ⓑ{I}V) T f2 →
f1 ⋓ ⫱f2 ≘ f → frees L (ⓑ{p,I}V.T) f
/2 width=5 by frees_inv_sort_aux/ qed-.
fact frees_inv_atom_aux: ∀f,L,X. L ⊢ 𝐅*⦃X⦄ ≘ f → ∀i. L = ⋆ → X = #i →
- â\88\83â\88\83g. ð\9d\90\88â¦\83gâ¦\84 & f = â\86\91*[i]⫯g.
+ â\88\83â\88\83g. ð\9d\90\88â¦\83gâ¦\84 & f = ⫯*[i]â\86\91g.
#f #L #X #H elim H -f -L -X
[ #f #L #s #_ #j #_ #H destruct
| #f #i #Hf #j #_ #H destruct /2 width=3 by ex2_intro/
]
qed-.
-lemma frees_inv_atom: â\88\80f,i. â\8b\86 â\8a¢ ð\9d\90\85*â¦\83#iâ¦\84 â\89\98 f â\86\92 â\88\83â\88\83g. ð\9d\90\88â¦\83gâ¦\84 & f = â\86\91*[i]⫯g.
+lemma frees_inv_atom: â\88\80f,i. â\8b\86 â\8a¢ ð\9d\90\85*â¦\83#iâ¦\84 â\89\98 f â\86\92 â\88\83â\88\83g. ð\9d\90\88â¦\83gâ¦\84 & f = ⫯*[i]â\86\91g.
/2 width=5 by frees_inv_atom_aux/ qed-.
fact frees_inv_pair_aux: ∀f,L,X. L ⊢ 𝐅*⦃X⦄ ≘ f → ∀I,K,V. L = K.ⓑ{I}V → X = #0 →
- â\88\83â\88\83g. K â\8a¢ ð\9d\90\85*â¦\83Vâ¦\84 â\89\98 g & f = ⫯g.
+ â\88\83â\88\83g. K â\8a¢ ð\9d\90\85*â¦\83Vâ¦\84 â\89\98 g & f = â\86\91g.
#f #L #X * -f -L -X
[ #f #L #s #_ #Z #Y #X #_ #H destruct
| #f #i #_ #Z #Y #X #H destruct
]
qed-.
-lemma frees_inv_pair: â\88\80f,I,K,V. K.â\93\91{I}V â\8a¢ ð\9d\90\85*â¦\83#0â¦\84 â\89\98 f â\86\92 â\88\83â\88\83g. K â\8a¢ ð\9d\90\85*â¦\83Vâ¦\84 â\89\98 g & f = ⫯g.
+lemma frees_inv_pair: â\88\80f,I,K,V. K.â\93\91{I}V â\8a¢ ð\9d\90\85*â¦\83#0â¦\84 â\89\98 f â\86\92 â\88\83â\88\83g. K â\8a¢ ð\9d\90\85*â¦\83Vâ¦\84 â\89\98 g & f = â\86\91g.
/2 width=6 by frees_inv_pair_aux/ qed-.
fact frees_inv_unit_aux: ∀f,L,X. L ⊢ 𝐅*⦃X⦄ ≘ f → ∀I,K. L = K.ⓤ{I} → X = #0 →
- â\88\83â\88\83g. ð\9d\90\88â¦\83gâ¦\84 & f = ⫯g.
+ â\88\83â\88\83g. ð\9d\90\88â¦\83gâ¦\84 & f = â\86\91g.
#f #L #X * -f -L -X
[ #f #L #s #_ #Z #Y #_ #H destruct
| #f #i #_ #Z #Y #H destruct
]
qed-.
-lemma frees_inv_unit: â\88\80f,I,K. K.â\93¤{I} â\8a¢ ð\9d\90\85*â¦\83#0â¦\84 â\89\98 f â\86\92 â\88\83â\88\83g. ð\9d\90\88â¦\83gâ¦\84 & f = ⫯g.
+lemma frees_inv_unit: â\88\80f,I,K. K.â\93¤{I} â\8a¢ ð\9d\90\85*â¦\83#0â¦\84 â\89\98 f â\86\92 â\88\83â\88\83g. ð\9d\90\88â¦\83gâ¦\84 & f = â\86\91g.
/2 width=7 by frees_inv_unit_aux/ qed-.
-fact frees_inv_lref_aux: â\88\80f,L,X. L â\8a¢ ð\9d\90\85*â¦\83Xâ¦\84 â\89\98 f â\86\92 â\88\80I,K,j. L = K.â\93\98{I} â\86\92 X = #(⫯j) →
- â\88\83â\88\83g. K â\8a¢ ð\9d\90\85*â¦\83#jâ¦\84 â\89\98 g & f = â\86\91g.
+fact frees_inv_lref_aux: â\88\80f,L,X. L â\8a¢ ð\9d\90\85*â¦\83Xâ¦\84 â\89\98 f â\86\92 â\88\80I,K,j. L = K.â\93\98{I} â\86\92 X = #(â\86\91j) →
+ â\88\83â\88\83g. K â\8a¢ ð\9d\90\85*â¦\83#jâ¦\84 â\89\98 g & f = ⫯g.
#f #L #X * -f -L -X
[ #f #L #s #_ #Z #Y #j #_ #H destruct
| #f #i #_ #Z #Y #j #H destruct
]
qed-.
-lemma frees_inv_lref: â\88\80f,I,K,i. K.â\93\98{I} â\8a¢ ð\9d\90\85*â¦\83#(⫯i)⦄ ≘ f →
- â\88\83â\88\83g. K â\8a¢ ð\9d\90\85*â¦\83#iâ¦\84 â\89\98 g & f = â\86\91g.
+lemma frees_inv_lref: â\88\80f,I,K,i. K.â\93\98{I} â\8a¢ ð\9d\90\85*â¦\83#(â\86\91i)⦄ ≘ f →
+ â\88\83â\88\83g. K â\8a¢ ð\9d\90\85*â¦\83#iâ¦\84 â\89\98 g & f = ⫯g.
/2 width=6 by frees_inv_lref_aux/ qed-.
fact frees_inv_gref_aux: ∀f,L,X. L ⊢ 𝐅*⦃X⦄ ≘ f → ∀x. X = §x → 𝐈⦃f⦄.
#L #T @eq_repl_sym /2 width=3 by frees_eq_repl_back/
qed-.
-lemma frees_lref_push: â\88\80f,i. â\8b\86 â\8a¢ ð\9d\90\85*â¦\83#iâ¦\84 â\89\98 f â\86\92 â\8b\86 â\8a¢ ð\9d\90\85*â¦\83#⫯iâ¦\84 â\89\98 â\86\91f.
+lemma frees_lref_push: â\88\80f,i. â\8b\86 â\8a¢ ð\9d\90\85*â¦\83#iâ¦\84 â\89\98 f â\86\92 â\8b\86 â\8a¢ ð\9d\90\85*â¦\83#â\86\91iâ¦\84 â\89\98 ⫯f.
#f #i #H
elim (frees_inv_atom … H) -H #g #Hg #H destruct
/2 width=1 by frees_atom/