author | Christian Urban <christian.urban@kcl.ac.uk> |
Sun, 10 Apr 2022 22:14:00 +0100 | |
changeset 616 | 935124ddd3ec |
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 |
|
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
3 |
theory Mgu = Main + Terms + Fresh + Equ + Substs: |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
4 |
|
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
5 |
(* unification problems *) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
6 |
|
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
7 |
syntax |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
8 |
"_equ_prob" :: "trm \<Rightarrow> trm \<Rightarrow> (trm\<times>trm)" ("_ \<approx>? _" [81,81] 81) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
9 |
"_fresh_prob" :: "string \<Rightarrow> trm \<Rightarrow> (string\<times>trm)" ("_ \<sharp>? _" [81,81] 81) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
10 |
|
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
11 |
translations |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
12 |
"t1 \<approx>? t2" \<rightharpoonup> "(t1,t2)" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
13 |
" a \<sharp>? t" \<rightharpoonup> "(a,t)" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
14 |
|
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
15 |
(* all solutions for a unification problem *) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
16 |
|
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
17 |
types |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
18 |
problem_type = "((trm\<times>trm)list) \<times> ((string\<times>trm)list)" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
19 |
unifier_type = "fresh_envs \<times> substs" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
20 |
|
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
21 |
consts |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
22 |
U :: "problem_type \<Rightarrow> (unifier_type set)" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
23 |
defs all_solutions_def : |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
24 |
"U P \<equiv> {(nabla,s). |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
25 |
(\<forall> (t1,t2)\<in>set (fst P). nabla \<turnstile> subst s t1 \<approx> subst s t2) \<and> |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
26 |
(\<forall> (a,t)\<in>set (snd P). nabla \<turnstile> a \<sharp> subst s t) }" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
27 |
|
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
28 |
(* set of variables in unification problems *) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
29 |
|
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
30 |
consts |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
31 |
vars_fprobs :: "((string\<times>trm) list) \<Rightarrow> (string set)" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
32 |
vars_eprobs :: "((trm\<times>trm)list) \<Rightarrow> (string set)" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
33 |
vars_probs :: "problem_type \<Rightarrow> nat" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
34 |
primrec |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
35 |
"vars_fprobs [] = {}" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
36 |
"vars_fprobs (x#xs) = (vars_trm (snd x))\<union>(vars_fprobs xs)" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
37 |
primrec |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
38 |
"vars_eprobs [] = {}" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
39 |
"vars_eprobs (x#xs) = (vars_trm (snd x))\<union>(vars_trm (fst x))\<union>(vars_eprobs xs)" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
40 |
defs |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
41 |
vars_probs_def: "vars_probs P \<equiv> card((vars_fprobs (snd P))\<union>(vars_eprobs (fst P)))" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
42 |
|
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
43 |
|
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
44 |
(* most general unifier *) |
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 |
consts |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
47 |
mgu :: "problem_type \<Rightarrow> unifier_type \<Rightarrow> bool" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
48 |
defs mgu_def: |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
49 |
"mgu P unif \<equiv> |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
50 |
\<forall> (nabla,s1)\<in> U P. (\<exists> s2. (nabla\<Turnstile>(subst s2) (fst unif)) \<and> |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
51 |
(nabla\<Turnstile>subst (s2 \<bullet>(snd unif)) \<approx> subst s1))" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
52 |
|
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
53 |
(* idempotency of a unifier *) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
54 |
|
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
55 |
consts |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
56 |
idem :: "unifier_type \<Rightarrow> bool" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
57 |
defs |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
58 |
idem_def: "idem unif \<equiv> (fst unif)\<Turnstile> subst ((snd unif)\<bullet>(snd unif)) \<approx> subst (snd unif)" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
59 |
|
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
60 |
(* application of a substitution to a problem *) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
61 |
|
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
62 |
consts |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
63 |
apply_subst :: "substs \<Rightarrow> problem_type \<Rightarrow> problem_type" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
64 |
defs apply_subst_def: |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
65 |
"apply_subst s P \<equiv> (map (\<lambda>(t1,t2). (subst s t1 \<approx>? subst s t2)) (fst P), |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
66 |
map (\<lambda>(a,t). (a \<sharp>? (subst s t)) ) (snd P))" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
67 |
|
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
68 |
(* equality reductions *) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
69 |
|
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
70 |
consts |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
71 |
s_red :: "(problem_type \<times> substs \<times> problem_type) set" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
72 |
syntax |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
73 |
"_s_red" :: "problem_type \<Rightarrow> substs \<Rightarrow> problem_type \<Rightarrow> bool" ("_ \<turnstile> _ \<leadsto> _ " [80,80,80] 80) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
74 |
translations "P1 \<turnstile>sigma\<leadsto> P2" \<rightleftharpoons> "(P1,sigma,P2)\<in>s_red" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
75 |
inductive s_red |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
76 |
intros |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
77 |
unit_sred[intro!,dest!]: "((Unit\<approx>?Unit)#xs,ys) \<turnstile>[]\<leadsto> (xs,ys)" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
78 |
paar_sred[intro!,dest!]: "((Paar t1 t2\<approx>?Paar s1 s2)#xs,ys) \<turnstile>[]\<leadsto> ((t1\<approx>?s1)#(t2\<approx>?s2)#xs,ys)" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
79 |
func_sred[intro!,dest!]: "((Func F t1\<approx>?Func F t2)#xs,ys) \<turnstile>[]\<leadsto> ((t1\<approx>?t2)#xs,ys)" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
80 |
abst_aa_sred[intro!,dest!]: "((Abst a t1\<approx>?Abst a t2)#xs,ys) \<turnstile>[]\<leadsto> ((t1\<approx>?t2)#xs,ys)" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
81 |
abst_ab_sred[intro!]: "a\<noteq>b\<Longrightarrow> |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
82 |
((Abst a t1\<approx>?Abst b t2)#xs,ys) \<turnstile>[]\<leadsto> ((t1\<approx>?swap [(a,b)] t2)#xs,(a\<sharp>?t2)#ys)" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
83 |
atom_sred[intro!,dest!]: "((Atom a\<approx>?Atom a)#xs,ys) \<turnstile>[]\<leadsto> (xs,ys)" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
84 |
susp_sred[intro!,dest!]: "((Susp pi1 X\<approx>?Susp pi2 X)#xs,ys) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
85 |
\<turnstile>[]\<leadsto> (xs,(map (\<lambda>a. a\<sharp>? Susp [] X) (ds_list pi1 pi2))@ys)" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
86 |
var_1_sred[intro!]: "\<not>(occurs X t)\<Longrightarrow>((Susp pi X\<approx>?t)#xs,ys) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
87 |
\<turnstile>[(X,swap (rev pi) t)]\<leadsto> apply_subst [(X,swap (rev pi) t)] (xs,ys)" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
88 |
var_2_sred[intro!]: "\<not>(occurs X t)\<Longrightarrow>((t\<approx>?Susp pi X)#xs,ys) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
89 |
\<turnstile>[(X,swap (rev pi) t)]\<leadsto> apply_subst [(X,swap (rev pi) t)] (xs,ys)" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
90 |
|
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
91 |
(* freshness reductions *) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
92 |
|
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
93 |
consts |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
94 |
c_red :: "(problem_type \<times> fresh_envs \<times> problem_type) set" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
95 |
syntax |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
96 |
"_c_red" :: "problem_type \<Rightarrow> fresh_envs \<Rightarrow> problem_type \<Rightarrow> bool" ("_ \<turnstile> _ \<rightarrow> _ " [80,80,80] 80) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
97 |
translations "P1 \<turnstile>nabla\<rightarrow> P2" \<rightleftharpoons> "(P1,nabla,P2)\<in>c_red" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
98 |
inductive c_red |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
99 |
intros |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
100 |
unit_cred[intro!]: "([],(a \<sharp>? Unit)#xs) \<turnstile>{}\<rightarrow> ([],xs)" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
101 |
paar_cred[intro!]: "([],(a \<sharp>? Paar t1 t2)#xs) \<turnstile>{}\<rightarrow> ([],(a\<sharp>?t1)#(a\<sharp>?t2)#xs)" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
102 |
func_cred[intro!]: "([],(a \<sharp>? Func F t)#xs) \<turnstile>{}\<rightarrow> ([],(a\<sharp>?t)#xs)" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
103 |
abst_aa_cred[intro!]: "([],(a \<sharp>? Abst a t)#xs) \<turnstile>{}\<rightarrow> ([],xs)" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
104 |
abst_ab_cred[intro!]: "a\<noteq>b\<Longrightarrow>([],(a \<sharp>? Abst b t)#xs) \<turnstile>{}\<rightarrow> ([],(a\<sharp>?t)#xs)" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
105 |
atom_cred[intro!]: "a\<noteq>b\<Longrightarrow>([],(a \<sharp>? Atom b)#xs) \<turnstile>{}\<rightarrow> ([],xs)" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
106 |
susp_cred[intro!]: "([],(a \<sharp>? Susp pi X)#xs) \<turnstile>{((swapas (rev pi) a),X)}\<rightarrow> ([],xs)" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
107 |
|
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
108 |
(* unification reduction sequence *) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
109 |
|
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
110 |
consts |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
111 |
red_plus :: "(problem_type \<times> unifier_type \<times> problem_type) set" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
112 |
syntax |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
113 |
red_plus :: "problem_type \<Rightarrow> unifier_type \<Rightarrow> problem_type \<Rightarrow> bool" ("_ \<Turnstile> _ \<Rightarrow> _ " [80,80,80] 80) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
114 |
|
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
115 |
translations "P1 \<Turnstile>(nabla,s)\<Rightarrow> P2" \<rightleftharpoons> "(P1,(nabla,s),P2)\<in>red_plus" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
116 |
inductive red_plus |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
117 |
intros |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
118 |
sred_single[intro!]: "\<lbrakk>P1\<turnstile>s1\<leadsto>P2\<rbrakk>\<Longrightarrow>P1\<Turnstile>({},s1)\<Rightarrow>P2" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
119 |
cred_single[intro!]: "\<lbrakk>P1\<turnstile>nabla1\<rightarrow>P2\<rbrakk>\<Longrightarrow>P1\<Turnstile>(nabla1,[])\<Rightarrow>P2" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
120 |
sred_step[intro!]: "\<lbrakk>P1\<turnstile>s1\<leadsto>P2;P2\<Turnstile>(nabla2,s2)\<Rightarrow>P3\<rbrakk>\<Longrightarrow>P1\<Turnstile>(nabla2,(s2\<bullet>s1))\<Rightarrow>P3" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
121 |
cred_step[intro!]: "\<lbrakk>P1\<turnstile>nabla1\<rightarrow>P2;P2\<Turnstile>(nabla2,[])\<Rightarrow>P3\<rbrakk>\<Longrightarrow>P1\<Turnstile>(nabla2\<union>nabla1,[])\<Rightarrow>P3" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
122 |
|
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
123 |
lemma mgu_idem: |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
124 |
"\<lbrakk>(nabla1,s1)\<in>U P; |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
125 |
\<forall>(nabla2,s2)\<in> U P. nabla2\<Turnstile>(subst s2) nabla1 \<and> nabla2\<Turnstile>subst(s2 \<bullet> s1)\<approx>subst s2 \<rbrakk>\<Longrightarrow> |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
126 |
mgu P (nabla1,s1)\<and>idem (nabla1,s1)" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
127 |
apply(rule conjI) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
128 |
apply(simp only: mgu_def) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
129 |
apply(rule ballI) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
130 |
apply(simp) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
131 |
apply(drule_tac x="x" in bspec) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
132 |
apply(assumption) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
133 |
apply(force) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
134 |
apply(drule_tac x="(nabla1,s1)" in bspec) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
135 |
apply(assumption) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
136 |
apply(simp add: idem_def) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
137 |
done |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
138 |
|
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
139 |
lemma problem_subst_comm: "((nabla,s2)\<in>U (apply_subst s1 P)) = ((nabla,(s2\<bullet>s1))\<in>U P)" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
140 |
apply(simp add: all_solutions_def apply_subst_def) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
141 |
apply(auto) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
142 |
apply(drule_tac x="(a,b)" in bspec, assumption, simp add: subst_comp_expand)+ |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
143 |
done |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
144 |
|
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
145 |
lemma P1_to_P2_sred: |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
146 |
"\<lbrakk>(nabla1,s1)\<in>U P1; P1 \<turnstile>s2\<leadsto> P2 \<rbrakk>\<Longrightarrow>((nabla1,s1)\<in>U P2) \<and> (nabla1\<Turnstile>subst (s1\<bullet>s2)\<approx>subst s1)" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
147 |
apply(ind_cases "P1 \<turnstile>s2\<leadsto> P2") |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
148 |
apply(simp_all) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
149 |
--Unit |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
150 |
apply(force intro!: equ_refl simp add: all_solutions_def ext_subst_def subst_equ_def subst_susp) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
151 |
--Paar |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
152 |
apply(simp add: all_solutions_def ext_subst_def subst_equ_def subst_susp) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
153 |
apply(force intro!: equ_refl dest!: equ_paar_elim) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
154 |
--Func |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
155 |
apply(simp add: all_solutions_def ext_subst_def subst_equ_def subst_susp) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
156 |
apply(force intro!: equ_refl dest!: equ_func_elim) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
157 |
--Abst.aa |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
158 |
apply(simp add: all_solutions_def ext_subst_def subst_equ_def subst_susp) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
159 |
apply(force intro!: equ_refl dest!: equ_abst_aa_elim) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
160 |
--Abst.ab |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
161 |
apply(simp add: all_solutions_def ext_subst_def subst_equ_def subst_susp) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
162 |
apply(force intro!: equ_refl dest!: equ_abst_ab_elim simp add: subst_swap_comm) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
163 |
--Atom |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
164 |
apply(simp add: all_solutions_def ext_subst_def subst_equ_def subst_susp) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
165 |
apply(force intro!: equ_refl) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
166 |
--Susp |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
167 |
apply(rule conjI) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
168 |
apply(auto) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
169 |
apply(simp add: all_solutions_def) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
170 |
apply(erule conjE)+ |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
171 |
apply(simp add: ds_list_equ_ds) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
172 |
apply(simp only: subst_susp) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
173 |
apply(drule equ_pi1_pi2_dec[THEN mp]) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
174 |
apply(auto) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
175 |
apply(drule_tac x="aa" in bspec) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
176 |
apply(assumption) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
177 |
apply(simp add: subst_susp) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
178 |
apply(simp add: subst_equ_def subst_susp) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
179 |
apply(rule ballI) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
180 |
apply(rule equ_refl) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
181 |
--Var.one |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
182 |
apply(drule_tac "t2.1"="swap (rev pi) t" in subst_not_occurs[THEN mp]) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
183 |
apply(simp only: problem_subst_comm) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
184 |
apply(simp add: all_solutions_def ext_subst_def subst_equ_def) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
185 |
apply(rule conjI) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
186 |
apply(rule ballI) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
187 |
apply(erule conjE)+ |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
188 |
apply(drule unif_1) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
189 |
apply(clarify) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
190 |
apply(drule_tac x="(a,b)" in bspec) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
191 |
apply(assumption) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
192 |
apply(simp) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
193 |
apply(simp add: unif_2a) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
194 |
apply(erule conjE)+ |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
195 |
apply(drule unif_1) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
196 |
apply(rule ballI) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
197 |
apply(clarify) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
198 |
apply(drule_tac x="(a,b)" in bspec) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
199 |
apply(assumption) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
200 |
apply(simp) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
201 |
apply(simp add: unif_2b) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
202 |
apply(rule unif_1) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
203 |
apply(simp add: all_solutions_def) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
204 |
--Var.two |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
205 |
apply(drule_tac "t2.1"="swap (rev pi) t" in subst_not_occurs[THEN mp]) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
206 |
apply(simp only: problem_subst_comm) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
207 |
apply(simp add: all_solutions_def ext_subst_def subst_equ_def) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
208 |
apply(auto) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
209 |
apply(drule_tac x="(a,b)" in bspec) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
210 |
apply(assumption) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
211 |
apply(simp) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
212 |
apply(drule equ_sym) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
213 |
apply(drule unif_1) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
214 |
apply(simp add: unif_2a) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
215 |
apply(drule_tac x="(a,b)" in bspec) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
216 |
apply(assumption) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
217 |
apply(simp) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
218 |
apply(drule equ_sym) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
219 |
apply(drule unif_1) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
220 |
apply(simp add: unif_2b) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
221 |
apply(rule unif_1) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
222 |
apply(rule equ_sym) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
223 |
apply(simp add: all_solutions_def) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
224 |
done |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
225 |
|
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
226 |
lemma P1_from_P2_sred: "\<lbrakk>(nabla1,s1)\<in>U P2; P1\<turnstile>s2\<leadsto>P2\<rbrakk>\<Longrightarrow>(nabla1,s1\<bullet>s2)\<in>U P1" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
227 |
apply(ind_cases "P1 \<turnstile>s2\<leadsto> P2") |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
228 |
--Susp.Paar.Func.Abst.aa |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
229 |
apply(simp add: all_solutions_def, force) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
230 |
apply(simp add: all_solutions_def, force) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
231 |
apply(simp add: all_solutions_def, force) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
232 |
apply(simp add: all_solutions_def, force) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
233 |
--Abst.ab |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
234 |
apply(simp only: all_solutions_def) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
235 |
apply(force simp add: subst_swap_comm) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
236 |
--Atom |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
237 |
apply(simp only: all_solutions_def, force) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
238 |
--Susp |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
239 |
apply(simp) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
240 |
apply(auto) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
241 |
apply(simp add: all_solutions_def) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
242 |
apply(simp add: ds_list_equ_ds) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
243 |
apply(subgoal_tac "nabla1\<turnstile>(swap pi1 (subst s1 (Susp [] X)))\<approx>(swap pi2 (subst s1 (Susp [] X)))") |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
244 |
apply(simp add: subst_susp subst_swap_comm) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
245 |
apply(simp add: subst_susp subst_swap_comm) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
246 |
apply(rule equ_pi1_pi2_add[THEN mp]) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
247 |
apply(drule conjunct2) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
248 |
apply(auto) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
249 |
apply(drule_tac x="(a,Susp [] X)" in bspec) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
250 |
apply(auto) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
251 |
apply(simp add: subst_susp) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
252 |
--Var.one |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
253 |
apply(simp only: problem_subst_comm) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
254 |
apply(simp only: all_solutions_def) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
255 |
apply(simp) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
256 |
apply(simp only: subst_comp_expand) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
257 |
apply(subgoal_tac "subst [(X, swap (rev pi) t)] t = t")--A |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
258 |
apply(simp add: subst_susp) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
259 |
apply(simp only: subst_swap_comm) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
260 |
apply(simp only: equ_pi_to_right[THEN sym]) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
261 |
apply(simp only: equ_involutive_right) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
262 |
apply(rule equ_refl) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
263 |
--A |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
264 |
apply(rule subst_not_occurs[THEN mp]) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
265 |
apply(assumption) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
266 |
--Var.two |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
267 |
apply(simp only: problem_subst_comm) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
268 |
apply(simp only: all_solutions_def) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
269 |
apply(simp) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
270 |
apply(simp only: subst_comp_expand) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
271 |
apply(subgoal_tac "subst [(X, swap (rev pi) t)] t = t")--B |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
272 |
apply(simp add: subst_susp) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
273 |
apply(simp only: subst_swap_comm) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
274 |
apply(simp only: equ_pi_to_left[THEN sym]) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
275 |
apply(simp only: equ_involutive_left) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
276 |
apply(rule equ_refl) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
277 |
--B |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
278 |
apply(rule subst_not_occurs[THEN mp]) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
279 |
apply(assumption) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
280 |
done |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
281 |
|
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
282 |
lemma P1_to_P2_cred: |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
283 |
"\<lbrakk>(nabla1,s1)\<in>U P1; P1 \<turnstile>nabla2\<rightarrow> P2 \<rbrakk>\<Longrightarrow>((nabla1,s1)\<in>U P2) \<and> (nabla1\<Turnstile>(subst s1) nabla2)" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
284 |
apply(ind_cases " P1\<turnstile>nabla2\<rightarrow>P2") |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
285 |
apply(simp_all) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
286 |
apply(auto simp add: ext_subst_def all_solutions_def) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
287 |
apply(rule fresh_swap_left[THEN mp]) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
288 |
apply(simp add: subst_swap_comm[THEN sym] subst_susp) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
289 |
done |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
290 |
|
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
291 |
lemma P1_from_P2_cred: |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
292 |
"\<lbrakk>(nabla1,s1)\<in>U P2; P1 \<turnstile>nabla2\<rightarrow> P2; nabla3\<Turnstile>(subst s1) nabla2\<rbrakk>\<Longrightarrow>(nabla1\<union>nabla3,s1)\<in>U P1" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
293 |
apply(ind_cases "P1 \<turnstile>nabla2\<rightarrow> P2") |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
294 |
apply(simp_all) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
295 |
apply(auto simp add: ext_subst_def all_solutions_def fresh_weak) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
296 |
apply(simp add: subst_susp) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
297 |
apply(rule fresh_swap_right[THEN mp]) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
298 |
apply(drule_tac "nabla2.1"="nabla1" in fresh_weak[THEN mp]) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
299 |
apply(subgoal_tac "nabla3 \<union> nabla1=nabla1 \<union> nabla3")--A |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
300 |
apply(simp) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
301 |
apply(rule Un_commute) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
302 |
done |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
303 |
|
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
304 |
lemma P1_to_P2_red_plus: "\<lbrakk>P1 \<Turnstile>(nabla,s)\<Rightarrow>P2\<rbrakk>\<Longrightarrow> (nabla1,s1)\<in>U P1 \<longrightarrow> |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
305 |
((nabla1,s1)\<in>U P2)\<and>(nabla1\<Turnstile>subst (s1\<bullet>s)\<approx>subst s1)\<and>(nabla1\<Turnstile>(subst s1) nabla)" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
306 |
apply(erule red_plus.induct) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
307 |
-- sred |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
308 |
apply(rule impI) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
309 |
apply(drule_tac "P2.0"="P2" and "s2.0"="s1a" in P1_to_P2_sred) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
310 |
apply(force) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
311 |
apply(rule conjI, force)+ |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
312 |
apply(force simp add: ext_subst_def) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
313 |
-- cred |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
314 |
apply(rule impI) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
315 |
apply(drule_tac "P2.0"="P2" and "nabla2.0"="nabla1a" in P1_to_P2_cred) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
316 |
apply(assumption) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
317 |
apply(force intro!: equ_refl simp add: subst_equ_def) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
318 |
-- sred |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
319 |
apply(rule impI) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
320 |
apply(drule_tac "P2.0"="P2" and "s2.0"="s1a" in P1_to_P2_sred) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
321 |
apply(assumption) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
322 |
apply(erule conjE)+ |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
323 |
apply(rule conjI) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
324 |
apply(force) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
325 |
apply(rule conjI) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
326 |
apply(drule mp) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
327 |
apply(assumption) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
328 |
apply(erule conjE)+ |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
329 |
apply(rule_tac "s2.0"="((s1\<bullet>s2)\<bullet>s1a)" in subst_trans) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
330 |
apply(simp only: subst_assoc subst_equ_def) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
331 |
apply(rule ballI) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
332 |
apply(rule equ_refl) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
333 |
apply(rule_tac "s2.0"="(s1\<bullet>s1a)" in subst_trans) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
334 |
apply(rule subst_cancel_right) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
335 |
apply(assumption) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
336 |
apply(assumption) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
337 |
apply(force) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
338 |
-- cred |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
339 |
apply(rule impI) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
340 |
apply(drule_tac "P2.0"="P2" and "nabla2.0"="nabla1a" in P1_to_P2_cred) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
341 |
apply(auto simp add: ext_subst_def) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
342 |
done |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
343 |
|
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
344 |
lemma P1_from_P2_red_plus: "\<lbrakk>P1 \<Turnstile>(nabla,s)\<Rightarrow>P2\<rbrakk>\<Longrightarrow>(nabla1,s1)\<in>U P2\<longrightarrow> |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
345 |
nabla3\<Turnstile>(subst s1)(nabla)\<longrightarrow>(nabla1\<union>nabla3,(s1\<bullet>s))\<in>U P1" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
346 |
apply(erule red_plus.induct) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
347 |
-- sred |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
348 |
apply(rule impI)+ |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
349 |
apply(drule_tac "P1.0"="P1" and "s2.0"="s1a" in P1_from_P2_sred) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
350 |
apply(assumption) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
351 |
apply(force simp only: all_solutions_def equ_weak fresh_weak) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
352 |
-- cred |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
353 |
apply(rule impI)+ |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
354 |
apply(drule_tac "P1.0"="P1" and "nabla3.0"="nabla3" and "nabla2.0"="nabla1a" in P1_from_P2_cred) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
355 |
apply(assumption)+ |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
356 |
apply(simp add: all_solutions_def) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
357 |
-- sred |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
358 |
apply(rule impI)+ |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
359 |
apply(simp) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
360 |
apply(drule_tac "P1.0"="P1" and "P2.0"="P2" and "s2.0"="s1a" in P1_from_P2_sred) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
361 |
apply(assumption) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
362 |
apply(simp add: all_solutions_def subst_assoc) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
363 |
-- cred |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
364 |
apply(rule impI)+ |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
365 |
apply(subgoal_tac "nabla3 \<Turnstile> (subst s1) nabla2")--A |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
366 |
apply(simp) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
367 |
apply(drule_tac "P1.0"="P1" and "P2.0"="P2" and |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
368 |
"nabla2.0"="nabla1a" and "nabla3.0"="nabla3" in P1_from_P2_cred) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
369 |
apply(assumption) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
370 |
apply(simp) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
371 |
apply(simp add: ext_subst_def) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
372 |
apply(subgoal_tac "nabla1 \<union> nabla3 \<union> nabla3=nabla1 \<union> nabla3")--A |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
373 |
apply(simp) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
374 |
--A |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
375 |
apply(force) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
376 |
--B |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
377 |
apply(simp add: ext_subst_def) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
378 |
done |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
379 |
|
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
380 |
lemma mgu: "\<lbrakk>P \<Turnstile>(nabla,s)\<Rightarrow>([],[])\<rbrakk>\<Longrightarrow> mgu P (nabla,s) \<and> idem (nabla,s)" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
381 |
apply(frule_tac "nabla3.2"="nabla" and "nabla2"="nabla" and |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
382 |
"s1.2"="[]" and "nabla1.2"="{}" |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
383 |
in P1_from_P2_red_plus[THEN mp,THEN mp]) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
384 |
apply(force simp add: all_solutions_def) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
385 |
apply(force simp add: ext_subst_def) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
386 |
apply(rule mgu_idem) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
387 |
apply(simp add: all_solutions_def) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
388 |
apply(rule ballI) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
389 |
apply(clarify) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
390 |
apply(drule_tac "nabla1.0"="a" and "s1.0"="b"in P1_to_P2_red_plus) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
391 |
apply(simp) |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
392 |
done |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
393 |
|
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
394 |
end |
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
395 |
|
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
396 |
|
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
397 |
|
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
398 |
|
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
399 |
|
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
400 |
|
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
401 |
|
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
402 |
|
5c816239deaa
added Unification subdirectory
Christian Urban <urbanc@in.tum.de>
parents:
diff
changeset
|
403 |