# HG changeset patch # User urbanc # Date 1138105686 -3600 # Node ID 0eabf66582d0c3465d01671dd84c4be3887e9321 # Parent f0dd51087eb3315c7524f327fb4e946c4c5c1b44 the additional freshness-condition in the one-induction is not needed anywhere. diff -r f0dd51087eb3 -r 0eabf66582d0 src/HOL/Nominal/Examples/CR.thy --- a/src/HOL/Nominal/Examples/CR.thy Tue Jan 24 00:44:39 2006 +0100 +++ b/src/HOL/Nominal/Examples/CR.thy Tue Jan 24 13:28:06 2006 +0100 @@ -204,7 +204,7 @@ and a1: "\t s1 s2 x. s1\\<^isub>\s2 \ (\z. P z s1 s2) \ P x (App s1 t) (App s2 t)" and a2: "\t s1 s2 x. s1\\<^isub>\s2 \ (\z. P z s1 s2) \ P x (App t s1) (App t s2)" and a3: "\a s1 s2 x. a\x \ s1\\<^isub>\s2 \ (\z. P z s1 s2) \ P x (Lam [a].s1) (Lam [a].s2)" - and a4: "\a t1 s1 x. a\(s1,x) \ P x (App (Lam [a].t1) s1) (t1[a::=s1])" + and a4: "\a t1 s1 x. a\x \ P x (App (Lam [a].t1) s1) (t1[a::=s1])" shows "P x t s" proof - from a have "\(pi::name prm) x. P x (pi\t) (pi\s)" @@ -239,7 +239,7 @@ have f: "\c::name. c\(pi\a,pi\s1,pi\s2,x)" by (rule at_exists_fresh[OF at_name_inst], simp add: fs_name1) then obtain c::"name" - where f1: "c\(pi\a)" and f2: "c\(pi\s2,x)" and f3: "c\(pi\s1)" and f4: "c\(pi\s2)" + where f1: "c\(pi\a)" and f2: "c\x" and f3: "c\(pi\s1)" and f4: "c\(pi\s2)" by (force simp add: fresh_prod fresh_atm) have x: "P x (App (Lam [c].(([(c,pi\a)]@pi)\s1)) (pi\s2)) ((([(c,pi\a)]@pi)\s1)[c::=(pi\s2)])" using a4 f2 by (blast intro!: eqvt_beta) @@ -291,7 +291,7 @@ P x (App t1 s1) (App t2 s2)" and a3: "\a s1 s2 x. a\x \ s1\\<^isub>1s2 \ (\z. P z s1 s2) \ P x (Lam [a].s1) (Lam [a].s2)" and a4: "\a t1 t2 s1 s2 x. - a\(s1,s2,x) \ t1\\<^isub>1t2 \ (\z. P z t1 t2) \ s1\\<^isub>1s2 \ (\z. P z s1 s2) + a\x \ t1\\<^isub>1t2 \ (\z. P z t1 t2) \ s1\\<^isub>1s2 \ (\z. P z s1 s2) \ P x (App (Lam [a].t1) s1) (t2[a::=s2])" shows "P x t s" proof - @@ -332,7 +332,7 @@ have f: "\c::name. c\(pi\a,pi\t1,pi\t2,pi\s1,pi\s2,x)" by (rule at_exists_fresh[OF at_name_inst], simp add: fs_name1) then obtain c::"name" - where f1: "c\(pi\a)" and f2: "c\(pi\s1,pi\s2,x)" and f3: "c\(pi\t1)" and f4: "c\(pi\t2)" + where f1: "c\(pi\a)" and f2: "c\x" and f3: "c\(pi\t1)" and f4: "c\(pi\t2)" by (force simp add: fresh_prod at_fresh[OF at_name_inst]) have x: "P x (App (Lam [c].(([(c,pi\a)]@pi)\t1)) (pi\s1)) ((([(c,pi\a)]@pi)\t2)[c::=(pi\s2)])" using a4 f2 j0 j1 j2 j3 by (simp, blast intro!: eqvt_one) @@ -496,7 +496,7 @@ assumes a: "M\\<^isub>1M'" and b: "N\\<^isub>1N'" shows "M[x::=N]\\<^isub>1M'[x::=N']" -using prems +using a b proof (nominal_induct M M' avoiding: N N' x rule: one_induct) case (o1 M) thus ?case by (simp add: one_subst_aux) @@ -508,7 +508,7 @@ thus ?case by simp next case (o4 a M1 M2 N1 N2) - have e3: "a\N1" "a\N2" "a\N" "a\N'" "a\x" by fact + have e3: "a\N" "a\N'" "a\x" by fact show ?case proof - have "(App (Lam [a].M1) N1)[x::=N] = App (Lam [a].(M1[x::=N])) (N1[x::=N])" using e3 by simp