# HG changeset patch # User kleing # Date 1368676158 -36000 # Node ID 59963cda805a8f34b6c6dd1426dd3aefa0810289 # Parent db08e493cf441fd11cdb7e864d7517b058365a01 explicitly state equivalence relation for sim; tweak syntax of sem_equiv diff -r db08e493cf44 -r 59963cda805a src/HOL/IMP/Big_Step.thy --- a/src/HOL/IMP/Big_Step.thy Thu May 16 02:13:42 2013 +0200 +++ b/src/HOL/IMP/Big_Step.thy Thu May 16 13:49:18 2013 +1000 @@ -226,6 +226,13 @@ lemma sim_while_cong: "c \ c' \ WHILE b DO c \ WHILE b DO c'" by (metis sim_while_cong_aux) +text {* Command equivalence is an equivalence relation, i.e.\ it is +reflexive, symmetric, and transitive. Because we used an abbreviation +above, Isabelle derives this automatically. *} + +lemma sim_refl: "c \ c" by simp +lemma sim_sym: "(c \ c') = (c' \ c)" by auto +lemma sim_trans: "c \ c' \ c' \ c'' \ c \ c''" by auto subsection "Execution is deterministic" diff -r db08e493cf44 -r 59963cda805a src/HOL/IMP/Sem_Equiv.thy --- a/src/HOL/IMP/Sem_Equiv.thy Thu May 16 02:13:42 2013 +0200 +++ b/src/HOL/IMP/Sem_Equiv.thy Thu May 16 13:49:18 2013 +1000 @@ -7,12 +7,12 @@ type_synonym assn = "state \ bool" definition - equiv_up_to :: "assn \ com \ com \ bool" ("_ \ _ \ _" [60,0,10] 60) + equiv_up_to :: "assn \ com \ com \ bool" ("_ \ _ \ _" [50,0,10] 50) where "P \ c \ c' \ \s s'. P s \ (c,s) \ s' \ (c',s) \ s'" definition - bequiv_up_to :: "assn \ bexp \ bexp \ bool" ("_ \ _ <\> _" [60,0,10] 60) + bequiv_up_to :: "assn \ bexp \ bexp \ bool" ("_ \ _ <\> _" [50,0,10] 50) where "P \ b <\> b' \ \s. P s \ bval b s = bval b' s"