src/HOL/IMP/Hoare.thy
author nipkow
Tue, 23 Jan 1996 10:59:35 +0100
changeset 1447 bc2c0acbbf29
parent 1374 5e407f2a3323
child 1476 608483c2122a
permissions -rw-r--r--
Added a verified verification-condition generator.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
936
a6d7b4084761 Hoare logic
nipkow
parents:
diff changeset
     1
(*  Title: 	HOL/IMP/Hoare.thy
938
621be7ec81d7 *** empty log message ***
nipkow
parents: 937
diff changeset
     2
    ID:         $Id$
936
a6d7b4084761 Hoare logic
nipkow
parents:
diff changeset
     3
    Author: 	Tobias Nipkow
a6d7b4084761 Hoare logic
nipkow
parents:
diff changeset
     4
    Copyright   1995 TUM
a6d7b4084761 Hoare logic
nipkow
parents:
diff changeset
     5
1447
bc2c0acbbf29 Added a verified verification-condition generator.
nipkow
parents: 1374
diff changeset
     6
Inductive definition of Hoare logic
936
a6d7b4084761 Hoare logic
nipkow
parents:
diff changeset
     7
*)
a6d7b4084761 Hoare logic
nipkow
parents:
diff changeset
     8
a6d7b4084761 Hoare logic
nipkow
parents:
diff changeset
     9
Hoare = Denotation +
1447
bc2c0acbbf29 Added a verified verification-condition generator.
nipkow
parents: 1374
diff changeset
    10
bc2c0acbbf29 Added a verified verification-condition generator.
nipkow
parents: 1374
diff changeset
    11
types assn = state => bool
bc2c0acbbf29 Added a verified verification-condition generator.
nipkow
parents: 1374
diff changeset
    12
936
a6d7b4084761 Hoare logic
nipkow
parents:
diff changeset
    13
consts
1447
bc2c0acbbf29 Added a verified verification-condition generator.
nipkow
parents: 1374
diff changeset
    14
  hoare :: "(assn * com * assn) set"
1374
5e407f2a3323 removed quotes from consts and syntax sections
clasohm
parents: 972
diff changeset
    15
  spec :: [state=>bool,com,state=>bool] => bool
936
a6d7b4084761 Hoare logic
nipkow
parents:
diff changeset
    16
defs
972
e61b058d58d2 changed syntax of tuples from <..., ...> to (..., ...)
clasohm
parents: 939
diff changeset
    17
  spec_def "spec P c Q == !s t. (s,t) : C(c) --> P s --> Q t"
939
534955033ed2 Added pretty-printing coments
nipkow
parents: 938
diff changeset
    18
1447
bc2c0acbbf29 Added a verified verification-condition generator.
nipkow
parents: 1374
diff changeset
    19
syntax "@hoare" :: [bool,com,bool] => bool ("{{(1_)}}/ (_)/ {{(1_)}}" 10)
bc2c0acbbf29 Added a verified verification-condition generator.
nipkow
parents: 1374
diff changeset
    20
translations "{{P}}c{{Q}}" == "(P,c,Q) : hoare"
939
534955033ed2 Added pretty-printing coments
nipkow
parents: 938
diff changeset
    21
1447
bc2c0acbbf29 Added a verified verification-condition generator.
nipkow
parents: 1374
diff changeset
    22
inductive "hoare"
bc2c0acbbf29 Added a verified verification-condition generator.
nipkow
parents: 1374
diff changeset
    23
intrs
bc2c0acbbf29 Added a verified verification-condition generator.
nipkow
parents: 1374
diff changeset
    24
  hoare_skip "{{P}}skip{{P}}"
bc2c0acbbf29 Added a verified verification-condition generator.
nipkow
parents: 1374
diff changeset
    25
  hoare_ass  "{{%s.P(s[A a s/x])}} x:=a {{P}}"
bc2c0acbbf29 Added a verified verification-condition generator.
nipkow
parents: 1374
diff changeset
    26
  hoare_semi "[| {{P}}c{{Q}}; {{Q}}d{{R}} |] ==> {{P}} c;d {{R}}"
bc2c0acbbf29 Added a verified verification-condition generator.
nipkow
parents: 1374
diff changeset
    27
  hoare_if   "[| {{%s. P s & B b s}}c{{Q}}; {{%s. P s & ~B b s}}d{{Q}} |] ==>
bc2c0acbbf29 Added a verified verification-condition generator.
nipkow
parents: 1374
diff changeset
    28
              {{P}} ifc b then c else d {{Q}}"
bc2c0acbbf29 Added a verified verification-condition generator.
nipkow
parents: 1374
diff changeset
    29
  hoare_while "[| {{%s. P s & B b s}} c {{P}} |] ==>
bc2c0acbbf29 Added a verified verification-condition generator.
nipkow
parents: 1374
diff changeset
    30
	       {{P}} while b do c {{%s. P s & ~B b s}}"
bc2c0acbbf29 Added a verified verification-condition generator.
nipkow
parents: 1374
diff changeset
    31
  hoare_conseq "[| !s. P' s --> P s; {{P}}c{{Q}}; !s. Q s --> Q' s |] ==>
bc2c0acbbf29 Added a verified verification-condition generator.
nipkow
parents: 1374
diff changeset
    32
		{{P'}}c{{Q'}}"
939
534955033ed2 Added pretty-printing coments
nipkow
parents: 938
diff changeset
    33
534955033ed2 Added pretty-printing coments
nipkow
parents: 938
diff changeset
    34
end