You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
obtainc::tyvarwhere"atom c \<sharp> (a, e, b, e2, e', e2', \<sigma>, \<Gamma>)"by(ruleobtain_fresh)
382
+
thenhavec:"atom c \<sharp> a""atom c \<sharp> e""atom c \<sharp> b""atom c \<sharp> e2""atom c \<sharp> e'""atom c \<sharp> e2'""atom c \<sharp> \<sigma>""atom c \<sharp> \<Gamma>"byauto
thenhave2:"e3 = (b \<leftrightarrow> c) \<bullet> e2"usingAbs_rename_bodybyblast
385
+
from1have3:"e = (c \<leftrightarrow> a) \<bullet> e3"usingST_TAbs(1)Abs_rename_body[ofce3ae]byargo
386
+
fromST_TAbs(3)have"e3 \<longrightarrow> (b \<leftrightarrow> c) \<bullet> e2'"using2Step.eqvtbyblast
387
+
thenhave4:"e \<longrightarrow> (c \<leftrightarrow> a) \<bullet> (b \<leftrightarrow> c) \<bullet> e2'"using3Step.eqvtbyblast
388
+
thenhave5:"BTyVar a k # \<Gamma> , \<Delta> \<turnstile> (c \<leftrightarrow> a) \<bullet> (b \<leftrightarrow> c) \<bullet> e2' : \<sigma>"usingTm_TAbs(2,4)beta_nf_defvalue_beta_nfbysimp
389
+
have"BTyVar c k # \<Gamma> , \<Delta> \<turnstile> (b \<leftrightarrow> c) \<bullet> e2' : (a \<leftrightarrow> c) \<bullet> \<sigma>"usingTm_eqvt_tyvar[OF5c(8)]flip_commutepermute_flip_cancelbysimp
390
+
thenhave6:"\<Gamma> , \<Delta> \<turnstile> \<Lambda> c : k . (b \<leftrightarrow> c) \<bullet> e2' : \<forall> c : k . (a \<leftrightarrow> c) \<bullet> \<sigma>"by(ruleTm.Tm_TAbs)
391
+
have7:"(\<Lambda> c : k . (b \<leftrightarrow> c) \<bullet> e2') = (\<Lambda> b : k . e2')"usingAbs_lst_renamec(6)byfastforce
392
+
have8:"(\<forall> c : k . (a \<leftrightarrow> c) \<bullet> \<sigma>) = (\<forall> a : k . \<sigma>)"usingAbs_lst_renamec(7)byfastforce
393
+
show?thesisusing678ST_TAbs(2)byargo
394
+
qed
395
+
next
396
+
case(Tm_TApp\<Gamma>\<Delta>eak\<sigma>\<tau>)
374
397
fromTm_TApp(4)show?case
375
398
proofcases
376
-
case(ST_BetaTIbk2e2)
377
-
obtainc::tyvarwhere"atom c \<sharp> (a, b, e2, \<sigma>)"usingobtain_freshbyblast
378
-
thenhavec:"atom c \<sharp> a""atom c \<sharp> b""atom c \<sharp> e2""atom c \<sharp> \<sigma>"byauto
399
+
case(ST_TBetae2bk2)
400
+
obtainc::tyvarwhere"atom c \<sharp> (a, b, e2, \<sigma>, \<Gamma>)"usingobtain_freshbyblast
401
+
thenhavec:"atom c \<sharp> a""atom c \<sharp> b""atom c \<sharp> e2""atom c \<sharp> \<sigma>""atom c \<sharp> \<Gamma>"byauto
thenhave1:"(a \<leftrightarrow> c) \<bullet> \<Delta> = \<Delta>"byauto
293
+
have"\<Delta> \<turnstile> BTyVar a k # \<Gamma>"by(rulecontext_valid(2)[OFassms(1)])
294
+
thenhave2:"(a \<leftrightarrow> c) \<bullet> \<Gamma> = \<Gamma>"usingassms(2)flip_fresh_freshbyblast
295
+
have3:"(a \<leftrightarrow> c) \<bullet> BTyVar a k = BTyVar c k"usingflip_fresh_freshbyforce
296
+
297
+
have"(a \<leftrightarrow> c) \<bullet> (BTyVar a k # \<Gamma>) , (a \<leftrightarrow> c) \<bullet> \<Delta> \<turnstile> (a \<leftrightarrow> c) \<bullet> e : (a \<leftrightarrow> c) \<bullet> \<tau>"by(ruleTm.eqvt[OFassms(1),of"(a \<leftrightarrow> c)"])
0 commit comments