(* Title: HOL/IMPP/EvenOdd.thy Author: David von Oheimb, TUM *)
section‹Example of mutually recursive procedures verified with Hoare logic›
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 - 1);; Loc Arg:=CALL Odd(%s. s - 1);; Loc Res:==(%s. s * s)))"
definition
odd :: com where "odd = (IF (%s. s = 0) THEN Loc Res:==(%s. 1) ELSE(Loc Res:=CALL Even (%s. s - 1)))"
overloading bodies ≡ bodies begin definition"bodies == [(Even,evn),(Odd,odd)]" end
definition
Z_eq_Arg_plus :: "nat => nat assn" (‹Z=Arg+_› [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 und die Messung sind noch experimentell.