diff -r 4b4742aa43f2 -r 11f6a561eb4b Nominal/Ex/Classical.thy --- a/Nominal/Ex/Classical.thy Sat Dec 17 17:03:01 2011 +0000 +++ b/Nominal/Ex/Classical.thy Sat Dec 17 17:08:47 2011 +0000 @@ -385,52 +385,6 @@ thm crename.eqvt nrename.eqvt -nominal_primrec - substn :: "trm \ name \ coname \ trm \ trm" ("_{_:=<_>._}" [100,100,100,100] 100) -where - "(Ax x a){y:=.P} = (if x=y then Cut .P (y).Ax y a else Ax x a)" -| "\atom a \ (c, P); atom x \ (y, P)\ \ (Cut .M (x).N){y:=.P} = - (if M=Ax y a then Cut .P (x).(N{y:=.P}) else Cut .(M{y:=.P}) (x).(N{y:=.P}))" -| "atom x\ (y, P) \ (NotR (x).M a){y:=.P} = NotR (x).(M{y:=.P}) a" -| "\atom a\ (c, P); atom x' \ (M, y, P)\ \ (NotL .M x){y:=.P} = - (if x=y then Cut .P (x').NotL .(M{y:=.P}) x' else NotL .(M{y:=.P}) x)" -| "\atom a \ (c, P); atom b \ (c, P)\ \ - (AndR .M .N d){y:=.P} = AndR .(M{y:=.P}) .(N{y:=.P}) d" -| "atom x \ (y, P) \ (AndL1 (x).M z){y:=.P} = - (if z=y then Cut .P (z').AndL1 (x).(M{y:=.P}) z' else AndL1 (x).(M{y:=.P}) z)" -| "atom x \ (y, P) \ (AndL2 (x).M z){y:=.P} = - (if z=y then Cut .P (z').AndL2 (x).(M{y:=.P}) z' else AndL2 (x).(M{y:=.P}) z)" -| "atom a \ (c, P) \ (OrR1 .M b){y:=.P} = OrR1 .(M{y:=.P}) b" -| "atom a \ (c, P) \ (OrR2 .M b){y:=.P} = OrR2 .(M{y:=.P}) b" -| "\atom x \ (y, P); atom u \ (y, P)\ \ (OrL (x).M (u).N z){y:=.P} = - (if z=y then Cut .P (z').OrL (x).(M{y:=.P}) (u).(N{y:=.P}) z' - else OrL (x).(M{y:=.P}) (u).(N{y:=.P}) z)" -| "\atom a \ (c, P); atom x \ (y, P)\ \ (ImpR (x)..M b){y:=.P} = ImpR (x)..(M{y:=.P}) b" -| "\atom a \ (c, P); atom x \ (y, P)\ \ (ImpL .M (x).N z){y:=.P} = - (if y=z then Cut .P (z').ImpL .(M{y:=.P}) (x).(N{y:=.P}) z' - else ImpL .(M{y:=.P}) (x).(N{y:=.P}) z)" - apply(simp only: eqvt_def) - apply(simp only: substn_graph_def) - apply (rule, perm_simp, rule) - apply(rule TrueI) - -- "covered all cases" - apply(case_tac x) - apply(rule_tac y="a" and c="(b, c, d)" in trm.strong_exhaust) - apply (simp_all add: fresh_star_def fresh_Pair)[12] - apply(metis)+ - apply(subgoal_tac "\x'::name. atom x' \ (trm, b, d)") - apply(auto simp add: fresh_Pair)[1] - apply(metis)+ - apply(subgoal_tac "\x'::name. atom x' \ (trm, b, d)") - apply(auto simp add: fresh_Pair)[1] - apply(rule obtain_fresh) - apply(auto)[1] - apply(metis)+ - -- "compatibility" - apply(all_trivials) - apply(simp) - oops - end