Remove 'HERE1' and 'HERE3'.
--- a/Nominal/Ex/BetaCR.thy Tue Dec 20 16:12:32 2011 +0900
+++ b/Nominal/Ex/BetaCR.thy Tue Dec 20 16:49:03 2011 +0900
@@ -52,31 +52,14 @@
equivariance beta
-(* HERE 1 *)
nominal_inductive beta
avoids b3: x
+ | b4: x
by (simp_all add: fresh_star_def fresh_Pair lam.fresh fresh_fact)
-(* This also works, but we cannot have them together: *)
-(*nominal_inductive beta
- avoids b4: x
- by (simp_all add: fresh_star_def fresh_Pair lam.fresh fresh_fact)*)
-(* But I need a combination, possibly with an 'and' syntax:
-nominal_inductive beta
- avoids b3: x and b4: x
- by (simp_all add: fresh_star_def fresh_Pair lam.fresh fresh_fact)
-*)
(* The combination should look like this: *)
-lemma beta_strong_induct:
- assumes "x1 \<longrightarrow>b x2"
- and "\<And>t1 t2 s c. \<lbrakk> t1 \<longrightarrow>b t2; \<And>c. P c t1 t2\<rbrakk> \<Longrightarrow> P c (App t1 s) (App t2 s)"
- and "\<And>s1 s2 t c. \<lbrakk> s1 \<longrightarrow>b s2; \<And>c. P c s1 s2\<rbrakk> \<Longrightarrow> P c (App t s1) (App t s2)"
- and "\<And>t1 t2 x c. \<lbrakk>{atom x} \<sharp>* c; t1 \<longrightarrow>b t2; \<And>c. P c t1 t2\<rbrakk> \<Longrightarrow> P c (Lam [x]. t1) (Lam [x]. t2)"
- and "\<And>x s t c. \<lbrakk>{atom x} \<sharp>* c; atom x \<sharp> s\<rbrakk> \<Longrightarrow> P c (App (Lam [x]. t) s) (t [x ::= s])"
- shows "P (c\<Colon>'a\<Colon>fs) x1 x2"
- sorry
inductive
beta_star :: "lam \<Rightarrow> lam \<Rightarrow> bool" (" _ \<longrightarrow>b* _" [80,80] 80)
@@ -201,10 +184,7 @@
lemma beta_subst2_pre:
assumes "A \<longrightarrow>b B" shows "A [x ::= C] \<longrightarrow>b* B [x ::= C]"
using assms
-(* HERE 3: nominal_induct doesn't work - leaves the assumption *)
-(* apply (nominal_induct avoiding: x C rule: beta_strong_induct)*)
- apply -
- apply (erule beta_strong_induct[of A B "\<lambda>c A B. A [(fst c) ::= (snd c)] \<longrightarrow>b* B [(fst c) ::= (snd c)]" "(x, C)", simplified])
+ apply (nominal_induct avoiding: x C rule: beta.strong_induct)
apply (auto simp add: App_beta fresh_star_def fresh_Pair Lam_beta)[3]
apply (subst substitution_lemma)
apply (auto simp add: fresh_star_def fresh_Pair fresh_at_base)[2]