Theory Def_Init_Big

Up to index of Isabelle/HOL/HOL-IMP

theory Def_Init_Big
imports Com Def_Init_Exp
(* Author: Tobias Nipkow *)

theory Def_Init_Big
imports Com Def_Init_Exp
begin

subsection "Initialization-Sensitive Big Step Semantics"

inductive
big_step :: "(com × state option) => state option => bool" (infix "=>" 55)
where
None: "(c,None) => None" |
Skip: "(SKIP,s) => s" |
AssignNone: "aval a s = None ==> (x ::= a, Some s) => None" |
Assign: "aval a s = Some i ==> (x ::= a, Some s) => Some(s(x := Some i))" |
Seq: "(c1,s1) => s2 ==> (c2,s2) => s3 ==> (c1;c2,s1) => s3" |

IfNone: "bval b s = None ==> (IF b THEN c1 ELSE c2,Some s) => None" |
IfTrue: "[| bval b s = Some True; (c1,Some s) => s' |] ==>
(IF b THEN c1 ELSE c2,Some s) => s'"
|
IfFalse: "[| bval b s = Some False; (c2,Some s) => s' |] ==>
(IF b THEN c1 ELSE c2,Some s) => s'"
|

WhileNone: "bval b s = None ==> (WHILE b DO c,Some s) => None" |
WhileFalse: "bval b s = Some False ==> (WHILE b DO c,Some s) => Some s" |
WhileTrue:
"[| bval b s = Some True; (c,Some s) => s'; (WHILE b DO c,s') => s'' |] ==>
(WHILE b DO c,Some s) => s''"


lemmas big_step_induct = big_step.induct[split_format(complete)]

end