src/HOL/IMP/Expr.thy
changeset 27362 a6dc1769fdda
parent 23746 a455e69c31cc
child 37735 2bf3a2cb5e58
     1.1 --- a/src/HOL/IMP/Expr.thy	Wed Jun 25 21:25:51 2008 +0200
     1.2 +++ b/src/HOL/IMP/Expr.thy	Wed Jun 25 22:01:34 2008 +0200
     1.3 @@ -68,23 +68,22 @@
     1.4  lemmas [intro] = tru fls ROp noti andi ori
     1.5  
     1.6  subsection "Denotational semantics of arithmetic and boolean expressions"
     1.7 -consts
     1.8 -  A     :: "aexp => state => nat"
     1.9 -  B     :: "bexp => state => bool"
    1.10  
    1.11 -primrec
    1.12 +primrec A :: "aexp => state => nat"
    1.13 +where
    1.14    "A(N(n)) = (%s. n)"
    1.15 -  "A(X(x)) = (%s. s(x))"
    1.16 -  "A(Op1 f a) = (%s. f(A a s))"
    1.17 -  "A(Op2 f a0 a1) = (%s. f (A a0 s) (A a1 s))"
    1.18 +| "A(X(x)) = (%s. s(x))"
    1.19 +| "A(Op1 f a) = (%s. f(A a s))"
    1.20 +| "A(Op2 f a0 a1) = (%s. f (A a0 s) (A a1 s))"
    1.21  
    1.22 -primrec
    1.23 +primrec B :: "bexp => state => bool"
    1.24 +where
    1.25    "B(true) = (%s. True)"
    1.26 -  "B(false) = (%s. False)"
    1.27 -  "B(ROp f a0 a1) = (%s. f (A a0 s) (A a1 s))"
    1.28 -  "B(noti(b)) = (%s. ~(B b s))"
    1.29 -  "B(b0 andi b1) = (%s. (B b0 s) & (B b1 s))"
    1.30 -  "B(b0 ori b1) = (%s. (B b0 s) | (B b1 s))"
    1.31 +| "B(false) = (%s. False)"
    1.32 +| "B(ROp f a0 a1) = (%s. f (A a0 s) (A a1 s))"
    1.33 +| "B(noti(b)) = (%s. ~(B b s))"
    1.34 +| "B(b0 andi b1) = (%s. (B b0 s) & (B b1 s))"
    1.35 +| "B(b0 ori b1) = (%s. (B b0 s) | (B b1 s))"
    1.36  
    1.37  lemma [simp]: "(N(n),s) -a-> n' = (n = n')"
    1.38    by (rule,cases set: evala) auto