2113
|
1 |
(* Title: Subst/unifier.thy
|
|
2 |
Author: Martin Coen, Cambridge University Computer Laboratory
|
|
3 |
Copyright 1993 University of Cambridge
|
|
4 |
|
|
5 |
Definition of most general unifier
|
|
6 |
*)
|
|
7 |
|
|
8 |
Unifier = Subst +
|
|
9 |
|
|
10 |
consts
|
|
11 |
|
|
12 |
Unifier :: "[('a*('a uterm))list,'a uterm,'a uterm] => bool"
|
|
13 |
">>" :: "[('a*('a uterm))list,('a*('a uterm))list] => bool" (infixr 52)
|
|
14 |
MGUnifier :: "[('a*('a uterm))list,'a uterm,'a uterm] => bool"
|
|
15 |
Idem :: "('a*('a uterm))list => bool"
|
|
16 |
|
|
17 |
rules (*Definitions*)
|
|
18 |
|
|
19 |
Unifier_def "Unifier s t u == t <| s = u <| s"
|
|
20 |
MoreGeneral_def "r >> s == ? q. s =s= r <> q"
|
|
21 |
MGUnifier_def "MGUnifier s t u == Unifier s t u &
|
|
22 |
(!r. Unifier r t u --> s >> r)"
|
|
23 |
Idem_def "Idem(s) == s <> s =s= s"
|
|
24 |
end
|