author | Christian Urban <christian dot urban at kcl dot ac dot uk> |
Tue, 28 Jul 2015 21:46:23 +0100 | |
changeset 374 | cde52ae55d33 |
parent 107 | 5c816239deaa |
permissions | -rw-r--r-- |
107
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
1 |
|
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
2 |
theory Atoms = Main + Swap + Terms: |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
3 |
|
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
4 |
consts atms :: "(string \<times> string) list \<Rightarrow> string set" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
5 |
primrec |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
6 |
"atms [] = {}" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
7 |
"atms (x#xs) = ((atms xs) \<union> {fst(x),snd(x)})" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
8 |
|
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
9 |
lemma [simp]: |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
10 |
"atms (xs@ys) = atms xs \<union> atms ys" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
11 |
apply(induct_tac xs, auto) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
12 |
done |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
13 |
|
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
14 |
lemma [simp]: |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
15 |
"atms (rev pi) = atms pi" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
16 |
apply(induct_tac pi, simp_all) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
17 |
done |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
18 |
|
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
19 |
lemma a_not_in_atms: |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
20 |
"a\<notin>atms pi \<longrightarrow> a = swapas pi a" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
21 |
apply(induct_tac pi, auto) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
22 |
done |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
23 |
|
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
24 |
lemma swapas_pi_ineq_a: |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
25 |
"swapas pi a \<noteq> a \<longrightarrow> a\<in>atms pi" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
26 |
apply(case_tac "a\<in>atms pi") |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
27 |
apply(simp)+ |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
28 |
apply(drule a_not_in_atms[THEN mp]) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
29 |
apply(simp) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
30 |
done |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
31 |
|
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
32 |
lemma a_ineq_swapas_pi: |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
33 |
"a \<noteq> swapas pi a \<longrightarrow> a\<in>atms pi" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
34 |
apply(case_tac "a\<in>atms pi") |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
35 |
apply(simp_all add: a_not_in_atms) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
36 |
done |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
37 |
|
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
38 |
lemma swapas_pi_in_atms[THEN mp]: |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
39 |
"a\<in>atms pi \<longrightarrow> swapas pi a\<in>atms pi" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
40 |
apply(subgoal_tac "\<forall>pi1. (a\<in>atms pi1) \<longrightarrow> swapas pi a\<in>(atms pi1 \<union> atms pi)") |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
41 |
apply(force) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
42 |
apply(induct_tac pi) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
43 |
apply(auto) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
44 |
done |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
45 |
|
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
46 |
end |