[[.: _exp]]:
Store -> (Int union Bool)
[[N: intexp]](s) = [[N: int]]
[[@L: intexp]](s) = lookup([[L: intloc]], s)
[[not E: boolexp]](s) = not([[E: boolexp]](s))
[[E_1+E_2: intexp]](s) =
plus([[E_1: intexp]](s),
[[E_2: intexp]](s))
[[E_1=E_2: boolexp]](s) =
equalbool([[E_1:
boolexp]](s), [[E_2: boolexp]](s))
[[E_1=E_2: boolexp]](s) =
equalint([[E_1:
intexp]](s), [[E_2: intexp]](s))
[[.: intloc]]: Location
[[loc_i: intloc]] = loc_i
[[.: int]]: Int
[[n: int]] = n
The meaning of an expression is a function from Store to Int or Bool.