src/HOL/Nominal/Examples/Fsub.thy
changeset 19972 89c5afe4139a
parent 19501 9afa7183dfc2
child 20395 9a60e3151244
equal deleted inserted replaced
19971:ddf69abaffa8 19972:89c5afe4139a
   176 next
   176 next
   177   case (valid_cons T X \<Gamma>)
   177   case (valid_cons T X \<Gamma>)
   178   have "\<turnstile> (pi\<bullet>\<Gamma>) ok" by fact
   178   have "\<turnstile> (pi\<bullet>\<Gamma>) ok" by fact
   179   moreover
   179   moreover
   180   have "X\<sharp>(domain \<Gamma>)" by fact
   180   have "X\<sharp>(domain \<Gamma>)" by fact
   181   hence "(pi\<bullet>X)\<sharp>(domain (pi\<bullet>\<Gamma>))" by (simp add: fresh_eqvt domain_eqvt[symmetric])
   181   hence "(pi\<bullet>X)\<sharp>(domain (pi\<bullet>\<Gamma>))" by (simp add: fresh_bij domain_eqvt[symmetric])
   182   moreover
   182   moreover
   183   have "T closed_in \<Gamma>" by fact
   183   have "T closed_in \<Gamma>" by fact
   184   hence "(pi\<bullet>T) closed_in (pi\<bullet>\<Gamma>)" by (simp add: closed_in_eqvt)
   184   hence "(pi\<bullet>T) closed_in (pi\<bullet>\<Gamma>)" by (simp add: closed_in_eqvt)
   185   ultimately show "\<turnstile> (pi\<bullet>((X,T)#\<Gamma>)) ok" by simp
   185   ultimately show "\<turnstile> (pi\<bullet>((X,T)#\<Gamma>)) ok" by simp
   186 qed
   186 qed
   339             simp add: pt_list_set_pi[OF pt_tyvrs_inst, symmetric])
   339             simp add: pt_list_set_pi[OF pt_tyvrs_inst, symmetric])
   340 apply(force intro: valid_eqvt
   340 apply(force intro: valid_eqvt
   341             dest: pt_set_bij2[OF pt_tyvrs_inst, OF at_tyvrs_inst]
   341             dest: pt_set_bij2[OF pt_tyvrs_inst, OF at_tyvrs_inst]
   342             simp add: domain_eqvt)
   342             simp add: domain_eqvt)
   343 apply(force)
   343 apply(force)
   344 apply(force intro!: S_Forall simp add: fresh_prod fresh_eqvt)
   344 apply(force intro!: S_Forall simp add: fresh_prod fresh_bij)
   345 done
   345 done
   346 
   346 
   347 text {* The most painful part of the subtyping definition is the strengthening of the
   347 text {* The most painful part of the subtyping definition is the strengthening of the
   348   induction principle. The induction principle that comes for free with the definition of 
   348   induction principle. The induction principle that comes for free with the definition of 
   349   @{term "subtype_of"} requires to prove the @{text "S_Forall"}-case for \emph{all} binders
   349   @{term "subtype_of"} requires to prove the @{text "S_Forall"}-case for \emph{all} binders