# HG changeset patch # User Christian Urban # Date 1308904964 -3600 # Node ID fe290b4e508fe5fa8cce02a10239f30590f8caf0 # Parent a95a497e1f4f99ec65efd9a8f6bf142a8c3ff129 except for the interated binder case, finished definition in Calssical.thy diff -r a95a497e1f4f -r fe290b4e508f Nominal/Ex/Classical.thy --- a/Nominal/Ex/Classical.thy Fri Jun 24 11:18:18 2011 +0900 +++ b/Nominal/Ex/Classical.thy Fri Jun 24 09:42:44 2011 +0100 @@ -46,10 +46,12 @@ thm trm.supp thm trm.supp[simplified] -lemma swap_at_base_sort: "sort_of (atom a) \ sort_of (atom x) \ sort_of (atom b) \ sort_of (atom x) \ (atom a \ atom b) \ x = x" +lemma swap_at_base_sort: + "sort_of (atom a) \ sort_of (atom x) \ sort_of (atom b) \ sort_of (atom x) + \ (atom a \ atom b) \ x = x" by (rule swap_fresh_fresh) (simp_all add: fresh_at_base(1)) -nominal_primrec (* (invariant "\(_, e, d) y. atom e \ y \ atom d \ y") *) +nominal_primrec crename :: "trm \ coname \ coname \ trm" ("_[_\c>_]" [100,100,100] 100) where "(Ax x a)[d\c>e] = (if a=d then Ax x e else Ax x a)" @@ -71,8 +73,6 @@ apply(simp only: eqvt_def) apply(simp only: crename_graph_def) apply (rule, perm_simp, rule) - (*apply(erule crename_graph.induct) - apply(simp add: trm.fresh)*) apply(rule TrueI) -- "covered all cases" apply(case_tac x) @@ -91,6 +91,142 @@ apply(simp add: fresh_Pair fresh_at_base(1)) apply(simp add: eqvt_at_def swap_at_base_sort) apply simp + apply(elim conjE) + apply(erule Abs_lst1_fcb) + apply(simp add: Abs_fresh_iff) + apply(simp add: Abs_fresh_iff) + apply(erule fresh_eqvt_at) + apply(simp add: finite_supp) + apply(simp add: fresh_Pair fresh_at_base(1)) + apply(simp add: fresh_Pair) + apply(simp add: eqvt_at_def swap_at_base_sort swap_fresh_fresh) + apply simp + apply(elim conjE) + apply(subgoal_tac "eqvt_at crename_sumC (M, da, ea)") + apply(erule Abs_lst1_fcb) + apply(simp add: Abs_fresh_iff) + apply(simp add: Abs_fresh_iff) + apply(erule fresh_eqvt_at) + apply(simp add: finite_supp) + apply(simp add: fresh_Pair fresh_at_base(1)) + apply(simp add: eqvt_at_def swap_at_base_sort swap_fresh_fresh) + apply simp + apply(blast) + apply(elim conjE) + apply(erule Abs_lst1_fcb) + apply(simp add: Abs_fresh_iff) + apply(simp add: Abs_fresh_iff) + apply(erule fresh_eqvt_at) + apply(simp add: finite_supp) + apply(simp add: fresh_Pair fresh_at_base(1)) + apply(simp add: fresh_Pair) + apply(simp add: eqvt_at_def swap_at_base_sort swap_fresh_fresh) + apply simp + apply(erule conjE)+ + apply(rule conjI) + apply(subgoal_tac "eqvt_at crename_sumC (M, da, ea)") + apply(erule Abs_lst1_fcb) + apply(simp add: Abs_fresh_iff) + apply(simp add: Abs_fresh_iff) + apply(erule fresh_eqvt_at) + apply(simp add: finite_supp) + apply(simp add: fresh_Pair fresh_at_base(1)) + apply(simp add: eqvt_at_def swap_at_base_sort swap_fresh_fresh) + apply simp + apply(blast) + apply(subgoal_tac "eqvt_at crename_sumC (N, da, ea)") + apply(erule Abs_lst1_fcb) + apply(simp add: Abs_fresh_iff) + apply(simp add: Abs_fresh_iff) + apply(erule fresh_eqvt_at) + apply(simp add: finite_supp) + apply(simp add: fresh_Pair fresh_at_base(1)) + apply(simp add: eqvt_at_def swap_at_base_sort swap_fresh_fresh) + apply simp + apply(blast) + apply(elim conjE) + apply(erule Abs_lst1_fcb) + apply(simp add: Abs_fresh_iff) + apply(simp add: Abs_fresh_iff) + apply(erule fresh_eqvt_at) + apply(simp add: finite_supp) + apply(simp add: fresh_Pair fresh_at_base(1)) + apply(simp add: fresh_Pair) + apply(simp add: eqvt_at_def swap_at_base_sort swap_fresh_fresh) + apply simp + apply(elim conjE) + apply(erule Abs_lst1_fcb) + apply(simp add: Abs_fresh_iff) + apply(simp add: Abs_fresh_iff) + apply(erule fresh_eqvt_at) + apply(simp add: finite_supp) + apply(simp add: fresh_Pair fresh_at_base(1)) + apply(simp add: fresh_Pair) + apply(simp add: eqvt_at_def swap_at_base_sort swap_fresh_fresh) + apply simp + apply(erule conjE)+ + apply(subgoal_tac "eqvt_at crename_sumC (M, da, ea)") + apply(erule Abs_lst1_fcb) + apply(simp add: Abs_fresh_iff) + apply(simp add: Abs_fresh_iff) + apply(erule fresh_eqvt_at) + apply(simp add: finite_supp) + apply(simp add: fresh_Pair fresh_at_base(1)) + apply(simp add: eqvt_at_def swap_at_base_sort swap_fresh_fresh) + apply simp + apply(blast) + apply(erule conjE)+ + apply(subgoal_tac "eqvt_at crename_sumC (M, da, ea)") + apply(erule Abs_lst1_fcb) + apply(simp add: Abs_fresh_iff) + apply(simp add: Abs_fresh_iff) + apply(erule fresh_eqvt_at) + apply(simp add: finite_supp) + apply(simp add: fresh_Pair fresh_at_base(1)) + apply(simp add: eqvt_at_def swap_at_base_sort swap_fresh_fresh) + apply simp + apply(blast) + apply(rule conjI) + apply(elim conjE) + apply(erule Abs_lst1_fcb) + apply(simp add: Abs_fresh_iff) + apply(simp add: Abs_fresh_iff) + apply(erule fresh_eqvt_at) + apply(simp add: finite_supp) + apply(simp add: fresh_Pair fresh_at_base(1)) + apply(simp add: eqvt_at_def swap_at_base_sort) + apply simp + apply(elim conjE) + apply(erule Abs_lst1_fcb) + apply(simp add: Abs_fresh_iff) + apply(simp add: Abs_fresh_iff) + apply(erule fresh_eqvt_at) + apply(simp add: finite_supp) + apply(simp add: fresh_Pair fresh_at_base(1)) + apply(simp add: fresh_Pair) + apply(simp add: eqvt_at_def swap_at_base_sort swap_fresh_fresh) + apply simp + apply(erule conjE)+ + defer + apply(elim conjE) + apply(rule conjI) + apply(erule Abs_lst1_fcb) + apply(simp add: Abs_fresh_iff) + apply(simp add: Abs_fresh_iff) + apply(erule fresh_eqvt_at) + apply(simp add: finite_supp) + apply(simp add: fresh_Pair fresh_at_base(1)) + apply(simp add: eqvt_at_def swap_at_base_sort swap_fresh_fresh) + apply simp + apply(erule Abs_lst1_fcb) + apply(simp add: Abs_fresh_iff) + apply(simp add: Abs_fresh_iff) + apply(erule fresh_eqvt_at) + apply(simp add: finite_supp) + apply(simp add: fresh_Pair fresh_at_base(1)) + apply(simp add: fresh_Pair) + apply(simp add: eqvt_at_def swap_at_base_sort swap_fresh_fresh) + apply simp oops end