diff -r 003b5781b845 -r 071f40487734 src/HOL/Nominal/Examples/SOS.thy --- a/src/HOL/Nominal/Examples/SOS.thy Wed May 21 22:04:58 2008 +0200 +++ b/src/HOL/Nominal/Examples/SOS.thy Thu May 22 16:34:41 2008 +0200 @@ -31,7 +31,7 @@ fixes x::"name" and T::"ty" shows "x\T" -by (induct T rule: ty.weak_induct) +by (induct T rule: ty.induct) (auto simp add: fresh_nat) text {* Parallel and single substitution. *} @@ -80,7 +80,7 @@ fixes pi::"name prm" and t::"trm" shows "pi\(\) = (pi\\)<(pi\t)>" -by (nominal_induct t avoiding: \ rule: trm.induct) +by (nominal_induct t avoiding: \ rule: trm.strong_induct) (perm_simp add: fresh_bij lookup_eqvt)+ lemma fresh_psubst: @@ -89,12 +89,12 @@ assumes "z\t" and "z\\" shows "z\(\)" using assms -by (nominal_induct t avoiding: z \ t rule: trm.induct) +by (nominal_induct t avoiding: z \ t rule: trm.strong_induct) (auto simp add: abs_fresh lookup_fresh) lemma psubst_empty[simp]: shows "[] = t" - by (nominal_induct t rule: trm.induct) + by (nominal_induct t rule: trm.strong_induct) (auto simp add: fresh_list_nil) text {* Single substitution *} @@ -116,28 +116,28 @@ assumes a: "z\t\<^isub>1" "z\t\<^isub>2" shows "z\t\<^isub>1[y::=t\<^isub>2]" using a -by (nominal_induct t\<^isub>1 avoiding: z y t\<^isub>2 rule: trm.induct) +by (nominal_induct t\<^isub>1 avoiding: z y t\<^isub>2 rule: trm.strong_induct) (auto simp add: abs_fresh fresh_atm) lemma fresh_subst': assumes "x\e'" shows "x\e[x::=e']" using assms -by (nominal_induct e avoiding: x e' rule: trm.induct) +by (nominal_induct e avoiding: x e' rule: trm.strong_induct) (auto simp add: fresh_atm abs_fresh fresh_nat) lemma forget: assumes a: "x\e" shows "e[x::=e'] = e" using a -by (nominal_induct e avoiding: x e' rule: trm.induct) +by (nominal_induct e avoiding: x e' rule: trm.strong_induct) (auto simp add: fresh_atm abs_fresh) lemma psubst_subst_psubst: assumes h: "x\\" shows "\[x::=e'] = ((x,e')#\)" using h -by (nominal_induct e avoiding: \ x e' rule: trm.induct) +by (nominal_induct e avoiding: \ x e' rule: trm.strong_induct) (auto simp add: fresh_list_cons fresh_atm forget lookup_fresh lookup_fresh') text {* Typing Judgements *} @@ -264,7 +264,7 @@ and "\ \ e': T'" shows "\ \ e[x::=e'] : T" using assms -proof (nominal_induct e avoiding: \ e' x arbitrary: T rule: trm.induct) +proof (nominal_induct e avoiding: \ e' x arbitrary: T rule: trm.strong_induct) case (Var y \ e' x T) have h1: "(x,T')#\ \ Var y : T" by fact have h2: "\ \ e' : T'" by fact @@ -421,7 +421,7 @@ assumes a: "x\V T" shows "(pi\x)\V T" using a -apply(nominal_induct T arbitrary: pi x rule: ty.induct) +apply(nominal_induct T arbitrary: pi x rule: ty.strong_induct) apply(auto simp add: trm.inject) apply(simp add: eqvts) apply(rule_tac x="pi\xa" in exI) @@ -477,7 +477,7 @@ lemma Vs_are_values: assumes a: "e \ V T" shows "val e" -using a by (nominal_induct T arbitrary: e rule: ty.induct) (auto) +using a by (nominal_induct T arbitrary: e rule: ty.strong_induct) (auto) lemma values_reduce_to_themselves: assumes a: "val v" @@ -531,7 +531,7 @@ and h2: "\ Vcloses \" shows "\v. \ \ v \ v \ V T" using h2 h1 -proof(nominal_induct e avoiding: \ \ arbitrary: T rule: trm.induct) +proof(nominal_induct e avoiding: \ \ arbitrary: T rule: trm.strong_induct) case (App e\<^isub>1 e\<^isub>2 \ \ T) have ih\<^isub>1:"\\ \ T. \\ Vcloses \; \ \ e\<^isub>1 : T\ \ \v. \1> \ v \ v \ V T" by fact have ih\<^isub>2:"\\ \ T. \\ Vcloses \; \ \ e\<^isub>2 : T\ \ \v. \2> \ v \ v \ V T" by fact