TFL/examples/Subst/Unifier.thy
author paulson
Tue, 04 Mar 1997 10:21:16 +0100
changeset 2715 79c35a051196
parent 2113 21266526ac42
permissions -rw-r--r--
Updated reference to Pelletier erratum

(*  Title:      Subst/unifier.thy
    Author:     Martin Coen, Cambridge University Computer Laboratory
    Copyright   1993  University of Cambridge

Definition of most general unifier
*)

Unifier = Subst + 

consts

  Unifier    :: "[('a*('a uterm))list,'a uterm,'a uterm] => bool"
  ">>"       :: "[('a*('a uterm))list,('a*('a uterm))list] => bool" (infixr 52)
  MGUnifier  :: "[('a*('a uterm))list,'a uterm,'a uterm] => bool"
  Idem       :: "('a*('a uterm))list => bool"

rules  (*Definitions*)

  Unifier_def      "Unifier s t u == t <| s = u <| s"
  MoreGeneral_def  "r >> s == ? q. s =s= r <> q"
  MGUnifier_def    "MGUnifier s t u == Unifier s t u & 
                                       (!r. Unifier r t u --> s >> r)"
  Idem_def         "Idem(s) == s <> s =s= s"
end