src/FOL/ex/Prolog.thy
author wenzelm
Sun, 27 Nov 2005 20:06:24 +0100
changeset 18267 5ee688e36eeb
parent 17245 1c519a3cca59
child 19819 14de4d05d275
permissions -rw-r--r--
* Provers/induct: obtain pattern;

(*  Title:      FOL/ex/prolog.thy
    ID:         $Id$
    Author:     Lawrence C Paulson, Cambridge University Computer Laboratory
    Copyright   1992  University of Cambridge
*)

header {* First-Order Logic: PROLOG examples *}

theory Prolog
imports FOL
begin

typedecl 'a list
arities list :: ("term") "term"
consts
  Nil     :: "'a list"
  Cons    :: "['a, 'a list]=> 'a list"    (infixr ":" 60)
  app     :: "['a list, 'a list, 'a list] => o"
  rev     :: "['a list, 'a list] => o"
axioms
  appNil:  "app(Nil,ys,ys)"
  appCons: "app(xs,ys,zs) ==> app(x:xs, ys, x:zs)"
  revNil:  "rev(Nil,Nil)"
  revCons: "[| rev(xs,ys);  app(ys, x:Nil, zs) |] ==> rev(x:xs, zs)"

ML {* use_legacy_bindings (the_context ()) *}

end