src/ZF/IMP/Denotation.thy
author wenzelm
Thu, 14 Oct 1999 15:04:36 +0200
changeset 7866 3ccaa11b6df9
parent 6047 f2e0938ba38d
child 11320 56aa53caf333
permissions -rw-r--r--
pdf: generate thumbnails if ISABELLE_THUMBPDF set;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1478
2b8c2a7547ab expanded tabs
clasohm
parents: 1401
diff changeset
     1
(*  Title:      ZF/IMP/Denotation.thy
482
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
     2
    ID:         $Id$
1478
2b8c2a7547ab expanded tabs
clasohm
parents: 1401
diff changeset
     3
    Author:     Heiko Loetzbeyer & Robert Sandner, TUM
482
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
     4
    Copyright   1994 TUM
511
b2be4790da7a re-organized using new theory sections
lcp
parents: 500
diff changeset
     5
b2be4790da7a re-organized using new theory sections
lcp
parents: 500
diff changeset
     6
Denotational semantics of expressions & commands
482
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
     7
*)
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
     8
511
b2be4790da7a re-organized using new theory sections
lcp
parents: 500
diff changeset
     9
Denotation = Com + 
482
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    10
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    11
consts
1401
0c439768f45c removed quotes from consts and syntax sections
clasohm
parents: 1155
diff changeset
    12
  A     :: i => i => i
0c439768f45c removed quotes from consts and syntax sections
clasohm
parents: 1155
diff changeset
    13
  B     :: i => i => i
0c439768f45c removed quotes from consts and syntax sections
clasohm
parents: 1155
diff changeset
    14
  C     :: i => i
0c439768f45c removed quotes from consts and syntax sections
clasohm
parents: 1155
diff changeset
    15
  Gamma :: [i,i,i] => i
482
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    16
1478
2b8c2a7547ab expanded tabs
clasohm
parents: 1401
diff changeset
    17
rules   (*NOT definitional*)
2b8c2a7547ab expanded tabs
clasohm
parents: 1401
diff changeset
    18
  A_nat_def     "A(N(n)) == (%sigma. n)"
2b8c2a7547ab expanded tabs
clasohm
parents: 1401
diff changeset
    19
  A_loc_def     "A(X(x)) == (%sigma. sigma`x)" 
2b8c2a7547ab expanded tabs
clasohm
parents: 1401
diff changeset
    20
  A_op1_def     "A(Op1(f,a)) == (%sigma. f`A(a,sigma))"
2b8c2a7547ab expanded tabs
clasohm
parents: 1401
diff changeset
    21
  A_op2_def     "A(Op2(f,a0,a1)) == (%sigma. f`<A(a0,sigma),A(a1,sigma)>)"
482
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    22
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    23
1478
2b8c2a7547ab expanded tabs
clasohm
parents: 1401
diff changeset
    24
  B_true_def    "B(true) == (%sigma. 1)"
2b8c2a7547ab expanded tabs
clasohm
parents: 1401
diff changeset
    25
  B_false_def   "B(false) == (%sigma. 0)"
2b8c2a7547ab expanded tabs
clasohm
parents: 1401
diff changeset
    26
  B_op_def      "B(ROp(f,a0,a1)) == (%sigma. f`<A(a0,sigma),A(a1,sigma)>)" 
482
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    27
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    28
1478
2b8c2a7547ab expanded tabs
clasohm
parents: 1401
diff changeset
    29
  B_not_def     "B(noti(b)) == (%sigma. not(B(b,sigma)))"
2b8c2a7547ab expanded tabs
clasohm
parents: 1401
diff changeset
    30
  B_and_def     "B(b0 andi b1) == (%sigma. B(b0,sigma) and B(b1,sigma))"
2b8c2a7547ab expanded tabs
clasohm
parents: 1401
diff changeset
    31
  B_or_def      "B(b0 ori b1) == (%sigma. B(b0,sigma) or B(b1,sigma))"
511
b2be4790da7a re-organized using new theory sections
lcp
parents: 500
diff changeset
    32
1478
2b8c2a7547ab expanded tabs
clasohm
parents: 1401
diff changeset
    33
  C_skip_def    "C(skip) == id(loc->nat)"
6047
f2e0938ba38d converted to use new primrec section and update operator
paulson
parents: 1478
diff changeset
    34
  C_assign_def  "C(x asgt a) == {io:(loc->nat)*(loc->nat). 
f2e0938ba38d converted to use new primrec section and update operator
paulson
parents: 1478
diff changeset
    35
                               snd(io) = fst(io)(x := A(a,fst(io)))}"
482
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    36
1478
2b8c2a7547ab expanded tabs
clasohm
parents: 1401
diff changeset
    37
  C_comp_def    "C(c0 ; c1) == C(c1) O C(c0)"
2b8c2a7547ab expanded tabs
clasohm
parents: 1401
diff changeset
    38
  C_if_def      "C(ifc b then c0 else c1) == {io:C(c0). B(b,fst(io))=1} Un 
2b8c2a7547ab expanded tabs
clasohm
parents: 1401
diff changeset
    39
                                             {io:C(c1). B(b,fst(io))=0}"
482
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    40
1478
2b8c2a7547ab expanded tabs
clasohm
parents: 1401
diff changeset
    41
  Gamma_def     "Gamma(b,c) == (%phi.{io : (phi O C(c)). B(b,fst(io))=1} Un 
2b8c2a7547ab expanded tabs
clasohm
parents: 1401
diff changeset
    42
                                     {io : id(loc->nat). B(b,fst(io))=0})"
482
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    43
1478
2b8c2a7547ab expanded tabs
clasohm
parents: 1401
diff changeset
    44
  C_while_def   "C(while b do c) == lfp((loc->nat)*(loc->nat), Gamma(b,c))"
482
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    45
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    46
end