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
lemmaty_permute:"\<lbrakk> \<Gamma> \<turnstile> S <: T ; wf \<Delta> ; set \<Gamma> = set \<Delta> \<rbrakk> \<Longrightarrow> \<Delta> \<turnstile> S <: T"
lemmaweaken_closed:"\<lbrakk> S closed_in \<Gamma> ; \<Gamma> \<bottom> \<Delta> \<rbrakk> \<Longrightarrow> S closed_in \<Gamma>,,\<Delta>"
47
+
lemmaweaken_closed:"\<lbrakk> FFVars_sftypeP S \<subseteq> dom \<Gamma> ; \<Gamma> \<bottom> \<Delta> \<rbrakk> \<Longrightarrow> FFVars_sftypeP S \<subseteq> dom (\<Gamma>,,\<Delta>)"
lemmawf_insert:"\<lbrakk> wf (\<Gamma>,,\<Delta>); x \<notin> dom \<Gamma> ; x \<notin> dom \<Delta> ; T closed_in \<Gamma> \<rbrakk> \<Longrightarrow> wf (\<Gamma>,,x<:T,,\<Delta>)"
57
+
lemmawf_insert:"\<lbrakk> wf (\<Gamma>,,\<Delta>); x \<notin> dom \<Gamma> ; x \<notin> dom \<Delta> ; FFVars_sftypeP T \<subseteq> dom \<Gamma> \<rbrakk> \<Longrightarrow> wf (\<Gamma>,,x<:T,,\<Delta>)"
57
58
by(induction\<Delta>)auto
58
59
59
60
lemmaty_weakening:
@@ -64,7 +65,8 @@ using assms proof (binder_induction \<Gamma> S T avoiding: "dom \<Delta>" \<Gamm
corollaryty_weakening_extend:"\<lbrakk> \<Gamma> \<turnstile> S <: T ; X \<notin> dom \<Gamma> ; Q closed_in \<Gamma> \<rbrakk> \<Longrightarrow> \<Gamma>,,X<:Q \<turnstile> S <: T"
79
+
corollaryty_weakening_extend:"\<lbrakk> \<Gamma> \<turnstile> S <: T ; X \<notin> dom \<Gamma> ; FFVars_sftypeP Q \<subseteq> dom \<Gamma> \<rbrakk> \<Longrightarrow> \<Gamma>,,X<:Q \<turnstile> S <: T"
ty_trans:"\<lbrakk> \<Gamma> \<turnstile> S <: Q ; \<Gamma> \<turnstile> Q <: T \<rbrakk> \<Longrightarrow> \<Gamma> \<turnstile> S <: T"
175
177
andty_narrow:"\<lbrakk> (\<Gamma>,, X <: Q),, \<Delta> \<turnstile> M <: N ; \<Gamma> \<turnstile> R <: Q ; wf (\<Gamma>,, X <: R,, \<Delta>) ;
176
-
M closed_in (\<Gamma>,, X <: R,, \<Delta>) ; N closed_in (\<Gamma>,, X <: R,, \<Delta>) \<rbrakk> \<Longrightarrow> (\<Gamma>,, X <: R),, \<Delta> \<turnstile> M <: N"
178
+
FFVars_sftypeP M \<subseteq> dom (\<Gamma>,, X <: R,, \<Delta>) ; FFVars_sftypeP N \<subseteq> dom (\<Gamma>,, X <: R,, \<Delta>) \<rbrakk> \<Longrightarrow> (\<Gamma>,, X <: R),, \<Delta> \<turnstile> M <: N"
havex:"U closed_in (\<Gamma>,, X <: R,, \<Delta>')"usingSA_Trans_TVar(2)well_scoped(1)byfastforce
292
+
havex:"FFVars_sftypeP U \<subseteq> dom (\<Gamma>,, X <: R,, \<Delta>')"usingSA_Trans_TVar(2)well_scoped(1)byfastforce
291
293
show?thesis
292
294
apply(rulety.SA_Trans_TVar)
293
295
usingSA_Trans_TVarFalsexbyauto
@@ -340,7 +342,7 @@ proof -
340
342
proof(cases"Y = Z")
341
343
caseTrue
342
344
thenhaveu:"U = \<forall> X <: Q\<^sub>1 . Q\<^sub>2"usingSA_Trans_TVar(1,2)context_determwf_contextbyblast
343
-
have"\<forall> X <: Q\<^sub>1 . Q\<^sub>2 closed_in \<Gamma>,, Z <: R,, \<Delta>'"usingSA_Trans_TVar(2)Trueuwell_scoped(1)byfastforce
345
+
have"FFVars_sftypeP (\<forall> X <: Q\<^sub>1 . Q\<^sub>2) \<subseteq> dom (\<Gamma>,, Z <: R,, \<Delta>')"usingSA_Trans_TVar(2)Trueuwell_scoped(1)byfastforce
344
346
thenhave"\<Gamma>,, Z <: R,, \<Delta>' \<turnstile> \<forall> X <: Q\<^sub>1 . Q\<^sub>2 <: T"usingSA_Trans_TVarTrueubyauto
345
347
moreoverhave"\<Gamma>,, Z <: R,, \<Delta>' \<turnstile> R <: \<forall> X <: Q\<^sub>1 . Q\<^sub>2"usingty_weakening[OFty_weakening_extend[OFSA_Trans_TVar(4)]]
|wf_Cons[intro!]:"\<lbrakk> x \<notin> dom \<Gamma> ; T closed_in \<Gamma> ; wf \<Gamma>\<rbrakk> \<Longrightarrow> wf (\<Gamma>,,x<:T)"
16
+
|wf_Cons[intro!]:"\<lbrakk> x \<notin> dom \<Gamma> ; FFVars_sftypeP T \<subseteq> dom \<Gamma> ; wf \<Gamma>\<rbrakk> \<Longrightarrow> wf (\<Gamma>,,x<:T)"
14
17
15
18
inductive_cases
16
19
wfE[elim]:"wf \<Gamma>"
@@ -29,7 +32,7 @@ lemma extend_eqvt:
29
32
30
33
lemmaclosed_in_eqvt:
31
34
assumes"bij f""|supp f| <o |UNIV::var set|"
32
-
shows"S closed_in \<Gamma> \<Longrightarrow> rrename_sftypeP f S closed_in map_context f \<Gamma>"
35
+
shows"FFVars_sftypeP S \<subseteq> dom \<Gamma> \<Longrightarrow> FFVars_sftypeP (rrename_sftypeP f S) \<subseteq> dom (map_context f \<Gamma>)"
0 commit comments