(* Title: HOL/IMPP/EvenOdd.thy Author: David von Oheimb, TUM
*)
section \<open>Example of mutually recursive procedures verified with Hoare logic\<close>
theory EvenOdd imports Main Misc begin
axiomatization
Even :: pname and
Odd :: pname where
Even_neq_Odd: "Even ~= Odd"and
Arg_neq_Res: "Arg ~= Res"
definition
evn :: com where "evn = (IF (%s. s = 0) THEN Loc Res:==(%s. 0)
ELSE(Loc Res:=CALL Odd(%s. s<Arg> - 1);;
Loc Arg:=CALL Odd(%s. s<Arg> - 1);;
Loc Res:==(%s. s<Res> * s<Arg>)))"
definition
odd :: com where "odd = (IF (%s. s = 0) THEN Loc Res:==(%s. 1)
ELSE(Loc Res:=CALL Even (%s. s<Arg> - 1)))"
overloading bodies \<equiv> bodies begin definition"bodies == [(Even,evn),(Odd,odd)]" end
definition
Z_eq_Arg_plus :: "nat => nat assn" (\<open>Z=Arg+_\<close> [50]50) where "Z=Arg+n = (%Z s. Z = s+n)"
definition
Res_ok :: "nat assn"where "Res_ok = (%Z s. even Z = (s = 0))"
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.