diff -r ed54ec416bb3 -r 5c816239deaa Unification/Atoms.thy --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Unification/Atoms.thy Sun Apr 29 11:29:56 2012 +0100 @@ -0,0 +1,46 @@ + +theory Atoms = Main + Swap + Terms: + +consts atms :: "(string \ string) list \ string set" +primrec +"atms [] = {}" +"atms (x#xs) = ((atms xs) \ {fst(x),snd(x)})" + +lemma [simp]: + "atms (xs@ys) = atms xs \ atms ys" +apply(induct_tac xs, auto) +done + +lemma [simp]: + "atms (rev pi) = atms pi" +apply(induct_tac pi, simp_all) +done + +lemma a_not_in_atms: + "a\atms pi \ a = swapas pi a" +apply(induct_tac pi, auto) +done + +lemma swapas_pi_ineq_a: + "swapas pi a \ a \ a\atms pi" +apply(case_tac "a\atms pi") +apply(simp)+ +apply(drule a_not_in_atms[THEN mp]) +apply(simp) +done + +lemma a_ineq_swapas_pi: + "a \ swapas pi a \ a\atms pi" +apply(case_tac "a\atms pi") +apply(simp_all add: a_not_in_atms) +done + +lemma swapas_pi_in_atms[THEN mp]: + "a\atms pi \ swapas pi a\atms pi" +apply(subgoal_tac "\pi1. (a\atms pi1) \ swapas pi a\(atms pi1 \ atms pi)") +apply(force) +apply(induct_tac pi) +apply(auto) +done + +end \ No newline at end of file