(* Title: HOL/IMPP/Com.thy Author: David von Oheimb (based on a theory by Tobias Nipkow et al), TUM *) section ‹Semantics of arithmetic and boolean expressions, Syntax of commands› theory Com imports Main begin type_synonym val = nat (* for the meta theory, this may be anything, but types cannot be refined later *) typedecl glb typedecl loc axiomatization Arg :: loc and Res :: loc datatype vname = Glb glb | Loc loc type_synonym globs = "glb => val" type_synonym locals = "loc => val" datatype state = st globs locals (* for the meta theory, the following would be sufficient: typedecl state consts st :: "[globs , locals] => state" *) type_synonym aexp = "state => val" type_synonym bexp = "state => bool" typedecl pname