# HG changeset patch # User wenzelm # Date 1214424677 -7200 # Node ID a8672b0e2b156a08a0314c4cc987382092adef43 # Parent 6d93bbe5633e53ce713d06d0f5b8c6a0d4770804 modernized specifications; diff -r 6d93bbe5633e -r a8672b0e2b15 src/HOL/IMPP/Hoare.thy --- a/src/HOL/IMPP/Hoare.thy Wed Jun 25 22:01:35 2008 +0200 +++ b/src/HOL/IMPP/Hoare.thy Wed Jun 25 22:11:17 2008 +0200 @@ -21,36 +21,40 @@ translations "a assn" <= (type)"a => state => bool" -constdefs - state_not_singleton :: bool - "state_not_singleton == \s t::state. s ~= t" (* at least two elements *) +definition + state_not_singleton :: bool where + "state_not_singleton = (\s t::state. s ~= t)" (* at least two elements *) - peek_and :: "'a assn => (state => bool) => 'a assn" (infixr "&>" 35) - "peek_and P p == %Z s. P Z s & p s" +definition + peek_and :: "'a assn => (state => bool) => 'a assn" (infixr "&>" 35) where + "peek_and P p = (%Z s. P Z s & p s)" datatype 'a triple = triple "'a assn" com "'a assn" ("{(1_)}./ (_)/ .{(1_)}" [3,60,3] 58) -consts - triple_valid :: "nat => 'a triple => bool" ( "|=_:_" [0 , 58] 57) - hoare_valids :: "'a triple set => 'a triple set => bool" ("_||=_" [58, 58] 57) -syntax - triples_valid:: "nat => 'a triple set => bool" ("||=_:_" [0 , 58] 57) - hoare_valid :: "'a triple set => 'a triple => bool" ("_|=_" [58, 58] 57) +definition + triple_valid :: "nat => 'a triple => bool" ( "|=_:_" [0 , 58] 57) where + "|=n:t = (case t of {P}.c.{Q} => + !Z s. P Z s --> (!s'. -n-> s' --> Q Z s'))" +abbreviation + triples_valid :: "nat => 'a triple set => bool" ("||=_:_" [0 , 58] 57) where + "||=n:G == Ball G (triple_valid n)" -defs triple_valid_def: "|=n:t == case t of {P}.c.{Q} => - !Z s. P Z s --> (!s'. -n-> s' --> Q Z s')" -translations "||=n:G" == "Ball G (triple_valid n)" -defs hoare_valids_def: "G||=ts == !n. ||=n:G --> ||=n:ts" -translations "G |=t " == " G||={t}" +definition + hoare_valids :: "'a triple set => 'a triple set => bool" ("_||=_" [58, 58] 57) where + "G||=ts = (!n. ||=n:G --> ||=n:ts)" +abbreviation + hoare_valid :: "'a triple set => 'a triple => bool" ("_|=_" [58, 58] 57) where + "G |=t == G||={t}" (* Most General Triples *) -constdefs MGT :: "com => state triple" ("{=}._.{->}" [60] 58) - "{=}.c.{->} == {%Z s0. Z = s0}. c .{%Z s1. -c-> s1}" +definition + MGT :: "com => state triple" ("{=}._.{->}" [60] 58) where + "{=}.c.{->} = {%Z s0. Z = s0}. c .{%Z s1. -c-> s1}" inductive - hoare_derivs :: "'a triple set => 'a triple set => bool" ("_||-_" [58, 58] 57) - and hoare_deriv :: "'a triple set => 'a triple => bool" ("_|-_" [58, 58] 57) + hoare_derivs :: "'a triple set => 'a triple set => bool" ("_||-_" [58, 58] 57) and + hoare_deriv :: "'a triple set => 'a triple => bool" ("_|-_" [58, 58] 57) where "G |-t == G||-{t}"