(* Title: FOL/ex/prolog.thy ID: $Id: Prolog.thy,v 1.5 2005/09/03 15:15:52 wenzelm Exp $ 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