src/HOL/IMPP/EvenOdd.thy
changeset 27362 a6dc1769fdda
parent 19803 aa2581752afb
child 41837 bbd861837ebc
     1.1 --- a/src/HOL/IMPP/EvenOdd.thy	Wed Jun 25 21:25:51 2008 +0200
     1.2 +++ b/src/HOL/IMPP/EvenOdd.thy	Wed Jun 25 22:01:34 2008 +0200
     1.3 @@ -10,38 +10,41 @@
     1.4  imports Misc
     1.5  begin
     1.6  
     1.7 -constdefs
     1.8 -  even :: "nat => bool"
     1.9 -  "even n == 2 dvd n"
    1.10 +definition
    1.11 +  even :: "nat => bool" where
    1.12 +  "even n = (2 dvd n)"
    1.13  
    1.14 -consts
    1.15 -  Even :: pname
    1.16 +axiomatization
    1.17 +  Even :: pname and
    1.18    Odd :: pname
    1.19 -axioms
    1.20 -  Even_neq_Odd: "Even ~= Odd"
    1.21 +where
    1.22 +  Even_neq_Odd: "Even ~= Odd" and
    1.23    Arg_neq_Res:  "Arg  ~= Res"
    1.24  
    1.25 -constdefs
    1.26 -  evn :: com
    1.27 - "evn == IF (%s. s<Arg> = 0)
    1.28 +definition
    1.29 +  evn :: com where
    1.30 + "evn = (IF (%s. s<Arg> = 0)
    1.31           THEN Loc Res:==(%s. 0)
    1.32           ELSE(Loc Res:=CALL Odd(%s. s<Arg> - 1);;
    1.33                Loc Arg:=CALL Odd(%s. s<Arg> - 1);;
    1.34 -              Loc Res:==(%s. s<Res> * s<Arg>))"
    1.35 -  odd :: com
    1.36 - "odd == IF (%s. s<Arg> = 0)
    1.37 +              Loc Res:==(%s. s<Res> * s<Arg>)))"
    1.38 +
    1.39 +definition
    1.40 +  odd :: com where
    1.41 + "odd = (IF (%s. s<Arg> = 0)
    1.42           THEN Loc Res:==(%s. 1)
    1.43 -         ELSE(Loc Res:=CALL Even (%s. s<Arg> - 1))"
    1.44 +         ELSE(Loc Res:=CALL Even (%s. s<Arg> - 1)))"
    1.45  
    1.46  defs
    1.47    bodies_def: "bodies == [(Even,evn),(Odd,odd)]"
    1.48  
    1.49 -consts
    1.50 -  Z_eq_Arg_plus   :: "nat => nat assn" ("Z=Arg+_" [50]50)
    1.51 - "even_Z=(Res=0)" ::        "nat assn" ("Res'_ok")
    1.52 -defs
    1.53 -  Z_eq_Arg_plus_def: "Z=Arg+n == %Z s.      Z =  s<Arg>+n"
    1.54 -  Res_ok_def:       "Res_ok   == %Z s. even Z = (s<Res> = 0)"
    1.55 +definition
    1.56 +  Z_eq_Arg_plus :: "nat => nat assn" ("Z=Arg+_" [50]50) where
    1.57 +  "Z=Arg+n = (%Z s.      Z =  s<Arg>+n)"
    1.58 +
    1.59 +definition
    1.60 +  Res_ok :: "nat assn" where
    1.61 +  "Res_ok = (%Z s. even Z = (s<Res> = 0))"
    1.62  
    1.63  
    1.64  subsection "even"