diff -r 4b03e3586f7f -r 31781b2de73d src/HOL/Nominal/Examples/Class.thy --- a/src/HOL/Nominal/Examples/Class.thy Thu Jun 14 22:59:42 2007 +0200 +++ b/src/HOL/Nominal/Examples/Class.thy Thu Jun 14 23:04:36 2007 +0200 @@ -5878,7 +5878,7 @@ qed next case (Cut b M z N x a y) - have fs: "b\x" "b\a" "b\y" "b\N" "z\x" "z\a" "z\y" "z\M" by fact + have fs: "b\x" "b\a" "b\y" "b\N" "z\x" "z\a" "z\y" "z\M" by fact+ have ih1: "M{x:=.Ax y a} \\<^isub>a* M[x\n>y]" by fact have ih2: "N{x:=.Ax y a} \\<^isub>a* N[x\n>y]" by fact show "(Cut .M (z).N){x:=.Ax y a} \\<^isub>a* (Cut .M (z).N)[x\n>y]" @@ -5900,14 +5900,14 @@ qed next case (NotR z M b x a y) - have fs: "z\x" "z\a" "z\y" "z\b" by fact + have fs: "z\x" "z\a" "z\y" "z\b" by fact+ have ih: "M{x:=.Ax y a} \\<^isub>a* M[x\n>y]" by fact have "(NotR (z).M b){x:=.Ax y a} = NotR (z).(M{x:=.Ax y a}) b" using fs by simp also have "\ \\<^isub>a* NotR (z).(M[x\n>y]) b" using ih by (auto intro: a_star_congs) finally show "(NotR (z).M b){x:=.Ax y a} \\<^isub>a* (NotR (z).M b)[x\n>y]" using fs by simp next case (NotL b M z x a y) - have fs: "b\x" "b\a" "b\y" "b\z" by fact + have fs: "b\x" "b\a" "b\y" "b\z" by fact+ have ih: "M{x:=.Ax y a} \\<^isub>a* M[x\n>y]" by fact show "(NotL .M z){x:=.Ax y a} \\<^isub>a* (NotL .M z)[x\n>y]" proof(cases "z=x") @@ -5939,7 +5939,7 @@ qed next case (AndR c M d N e x a y) - have fs: "c\x" "c\a" "c\y" "d\x" "d\a" "d\y" "d\c" "c\N" "c\e" "d\M" "d\e" by fact + have fs: "c\x" "c\a" "c\y" "d\x" "d\a" "d\y" "d\c" "c\N" "c\e" "d\M" "d\e" by fact+ have ih1: "M{x:=.Ax y a} \\<^isub>a* M[x\n>y]" by fact have ih2: "N{x:=.Ax y a} \\<^isub>a* N[x\n>y]" by fact have "(AndR .M .N e){x:=.Ax y a} = AndR .(M{x:=.Ax y a}) .(N{x:=.Ax y a}) e" @@ -5949,7 +5949,7 @@ using fs by simp next case (AndL1 u M v x a y) - have fs: "u\x" "u\a" "u\y" "u\v" by fact + have fs: "u\x" "u\a" "u\y" "u\v" by fact+ have ih: "M{x:=.Ax y a} \\<^isub>a* M[x\n>y]" by fact show "(AndL1 (u).M v){x:=.Ax y a} \\<^isub>a* (AndL1 (u).M v)[x\n>y]" proof(cases "v=x") @@ -5983,7 +5983,7 @@ qed next case (AndL2 u M v x a y) - have fs: "u\x" "u\a" "u\y" "u\v" by fact + have fs: "u\x" "u\a" "u\y" "u\v" by fact+ have ih: "M{x:=.Ax y a} \\<^isub>a* M[x\n>y]" by fact show "(AndL2 (u).M v){x:=.Ax y a} \\<^isub>a* (AndL2 (u).M v)[x\n>y]" proof(cases "v=x") @@ -6017,21 +6017,21 @@ qed next case (OrR1 c M d x a y) - have fs: "c\x" "c\a" "c\y" "c\d" by fact + have fs: "c\x" "c\a" "c\y" "c\d" by fact+ have ih: "M{x:=.Ax y a} \\<^isub>a* M[x\n>y]" by fact have "(OrR1 .M d){x:=.Ax y a} = OrR1 .(M{x:=.Ax y a}) d" using fs by (simp add: fresh_atm) also have "\ \\<^isub>a* OrR1 .(M[x\n>y]) d" using ih by (auto intro: a_star_congs) finally show "(OrR1 .M d){x:=.Ax y a} \\<^isub>a* (OrR1 .M d)[x\n>y]" using fs by simp next case (OrR2 c M d x a y) - have fs: "c\x" "c\a" "c\y" "c\d" by fact + have fs: "c\x" "c\a" "c\y" "c\d" by fact+ have ih: "M{x:=.Ax y a} \\<^isub>a* M[x\n>y]" by fact have "(OrR2 .M d){x:=.Ax y a} = OrR2 .(M{x:=.Ax y a}) d" using fs by (simp add: fresh_atm) also have "\ \\<^isub>a* OrR2 .(M[x\n>y]) d" using ih by (auto intro: a_star_congs) finally show "(OrR2 .M d){x:=.Ax y a} \\<^isub>a* (OrR2 .M d)[x\n>y]" using fs by simp next case (OrL u M v N z x a y) - have fs: "u\x" "u\a" "u\y" "v\x" "v\a" "v\y" "v\u" "u\N" "u\z" "v\M" "v\z" by fact + have fs: "u\x" "u\a" "u\y" "v\x" "v\a" "v\y" "v\u" "u\N" "u\z" "v\M" "v\z" by fact+ have ih1: "M{x:=.Ax y a} \\<^isub>a* M[x\n>y]" by fact have ih2: "N{x:=.Ax y a} \\<^isub>a* N[x\n>y]" by fact show "(OrL (u).M (v).N z){x:=.Ax y a} \\<^isub>a* (OrL (u).M (v).N z)[x\n>y]" @@ -6070,7 +6070,7 @@ qed next case (ImpR z c M d x a y) - have fs: "z\x" "z\a" "z\y" "c\x" "c\a" "c\y" "z\d" "c\d" by fact + have fs: "z\x" "z\a" "z\y" "c\x" "c\a" "c\y" "z\d" "c\d" by fact+ have ih: "M{x:=.Ax y a} \\<^isub>a* M[x\n>y]" by fact have "(ImpR (z)..M d){x:=.Ax y a} = ImpR (z)..(M{x:=.Ax y a}) d" using fs by simp also have "\ \\<^isub>a* ImpR (z)..(M[x\n>y]) d" using ih by (auto intro: a_star_congs) @@ -6135,7 +6135,7 @@ qed next case (Cut c M z N b a x) - have fs: "c\b" "c\a" "c\x" "c\N" "z\b" "z\a" "z\x" "z\M" by fact + have fs: "c\b" "c\a" "c\x" "c\N" "z\b" "z\a" "z\x" "z\M" by fact+ have ih1: "M{b:=(x).Ax x a} \\<^isub>a* M[b\c>a]" by fact have ih2: "N{b:=(x).Ax x a} \\<^isub>a* N[b\c>a]" by fact show "(Cut .M (z).N){b:=(x).Ax x a} \\<^isub>a* (Cut .M (z).N)[b\c>a]" @@ -6157,7 +6157,7 @@ qed next case (NotR z M c b a x) - have fs: "z\b" "z\a" "z\x" "z\c" by fact + have fs: "z\b" "z\a" "z\x" "z\c" by fact+ have ih: "M{b:=(x).Ax x a} \\<^isub>a* M[b\c>a]" by fact show "(NotR (z).M c){b:=(x).Ax x a} \\<^isub>a* (NotR (z).M c)[b\c>a]" proof (cases "c=b") @@ -6190,14 +6190,14 @@ qed next case (NotL c M z b a x) - have fs: "c\b" "c\a" "c\x" "c\z" by fact + have fs: "c\b" "c\a" "c\x" "c\z" by fact+ have ih: "M{b:=(x).Ax x a} \\<^isub>a* M[b\c>a]" by fact have "(NotL .M z){b:=(x).Ax x a} = NotL .(M{b:=(x).Ax x a}) z" using fs by simp also have "\ \\<^isub>a* NotL .(M[b\c>a]) z" using ih by (auto intro: a_star_congs) finally show "(NotL .M z){b:=(x).Ax x a} \\<^isub>a* (NotL .M z)[b\c>a]" using fs by simp next case (AndR c M d N e b a x) - have fs: "c\b" "c\a" "c\x" "d\b" "d\a" "d\x" "d\c" "c\N" "c\e" "d\M" "d\e" by fact + have fs: "c\b" "c\a" "c\x" "d\b" "d\a" "d\x" "d\c" "c\N" "c\e" "d\M" "d\e" by fact+ have ih1: "M{b:=(x).Ax x a} \\<^isub>a* M[b\c>a]" by fact have ih2: "N{b:=(x).Ax x a} \\<^isub>a* N[b\c>a]" by fact show "(AndR .M .N e){b:=(x).Ax x a} \\<^isub>a* (AndR .M .N e)[b\c>a]" @@ -6235,21 +6235,21 @@ qed next case (AndL1 u M v b a x) - have fs: "u\b" "u\a" "u\x" "u\v" by fact + have fs: "u\b" "u\a" "u\x" "u\v" by fact+ have ih: "M{b:=(x).Ax x a} \\<^isub>a* M[b\c>a]" by fact have "(AndL1 (u).M v){b:=(x).Ax x a} = AndL1 (u).(M{b:=(x).Ax x a}) v" using fs by simp also have "\ \\<^isub>a* AndL1 (u).(M[b\c>a]) v" using ih by (auto intro: a_star_congs) finally show "(AndL1 (u).M v){b:=(x).Ax x a} \\<^isub>a* (AndL1 (u).M v)[b\c>a]" using fs by simp next case (AndL2 u M v b a x) - have fs: "u\b" "u\a" "u\x" "u\v" by fact + have fs: "u\b" "u\a" "u\x" "u\v" by fact+ have ih: "M{b:=(x).Ax x a} \\<^isub>a* M[b\c>a]" by fact have "(AndL2 (u).M v){b:=(x).Ax x a} = AndL2 (u).(M{b:=(x).Ax x a}) v" using fs by simp also have "\ \\<^isub>a* AndL2 (u).(M[b\c>a]) v" using ih by (auto intro: a_star_congs) finally show "(AndL2 (u).M v){b:=(x).Ax x a} \\<^isub>a* (AndL2 (u).M v)[b\c>a]" using fs by simp next case (OrR1 c M d b a x) - have fs: "c\b" "c\a" "c\x" "c\d" by fact + have fs: "c\b" "c\a" "c\x" "c\d" by fact+ have ih: "M{b:=(x).Ax x a} \\<^isub>a* M[b\c>a]" by fact show "(OrR1 .M d){b:=(x).Ax x a} \\<^isub>a* (OrR1 .M d)[b\c>a]" proof(cases "d=b") @@ -6283,7 +6283,7 @@ qed next case (OrR2 c M d b a x) - have fs: "c\b" "c\a" "c\x" "c\d" by fact + have fs: "c\b" "c\a" "c\x" "c\d" by fact+ have ih: "M{b:=(x).Ax x a} \\<^isub>a* M[b\c>a]" by fact show "(OrR2 .M d){b:=(x).Ax x a} \\<^isub>a* (OrR2 .M d)[b\c>a]" proof(cases "d=b") @@ -6317,7 +6317,7 @@ qed next case (OrL u M v N z b a x) - have fs: "u\b" "u\a" "u\x" "v\b" "v\a" "v\x" "v\u" "u\N" "u\z" "v\M" "v\z" by fact + have fs: "u\b" "u\a" "u\x" "v\b" "v\a" "v\x" "v\u" "u\N" "u\z" "v\M" "v\z" by fact+ have ih1: "M{b:=(x).Ax x a} \\<^isub>a* M[b\c>a]" by fact have ih2: "N{b:=(x).Ax x a} \\<^isub>a* N[b\c>a]" by fact have "(OrL (u).M (v).N z){b:=(x).Ax x a} = OrL (u).(M{b:=(x).Ax x a}) (v).(N{b:=(x).Ax x a}) z" @@ -6326,7 +6326,7 @@ finally show "(OrL (u).M (v).N z){b:=(x).Ax x a} \\<^isub>a* (OrL (u).M (v).N z)[b\c>a]" using fs by simp next case (ImpR z c M d b a x) - have fs: "z\b" "z\a" "z\x" "c\b" "c\a" "c\x" "z\d" "c\d" by fact + have fs: "z\b" "z\a" "z\x" "c\b" "c\a" "c\x" "z\d" "c\d" by fact+ have ih: "M{b:=(x).Ax x a} \\<^isub>a* M[b\c>a]" by fact show "(ImpR (z)..M d){b:=(x).Ax x a} \\<^isub>a* (ImpR (z)..M d)[b\c>a]" proof(cases "b=d") @@ -6360,7 +6360,7 @@ qed next case (ImpL c M u N v b a x) - have fs: "c\b" "c\a" "c\x" "u\b" "u\a" "u\x" "c\N" "c\v" "u\M" "u\v" by fact + have fs: "c\b" "c\a" "c\x" "u\b" "u\a" "u\x" "c\N" "c\v" "u\M" "u\v" by fact+ have ih1: "M{b:=(x).Ax x a} \\<^isub>a* M[b\c>a]" by fact have ih2: "N{b:=(x).Ax x a} \\<^isub>a* N[b\c>a]" by fact have "(ImpL .M (u).N v){b:=(x).Ax x a} = ImpL .(M{b:=(x).Ax x a}) (u).(N{b:=(x).Ax x a}) v" @@ -7124,7 +7124,7 @@ using a proof(nominal_induct M avoiding: x a P b y Q rule: trm.induct) case (Ax z c) - have fs: "a\(Q,b)" "x\(y,P,Q)" "b\Q" "y\P" by fact + have fs: "a\(Q,b)" "x\(y,P,Q)" "b\Q" "y\P" by fact+ { assume asm: "z=x \ c=b" have "(Ax x b){x:=.P}{b:=(y).Q} = (Cut .P (x).Ax x b){b:=(y).Q}" using fs by simp also have "\ = Cut .(P{b:=(y).Q}) (y).Q" @@ -10052,7 +10052,7 @@ proof (induct a rule: SNa.induct) case (SNaI x) note SNa' = this - have "SNa b" . + have "SNa b" by fact thus ?case proof (induct b rule: SNa.induct) case (SNaI y)