src/ZF/IMP/Com.ML
author nipkow
Thu, 21 Jul 1994 14:27:00 +0200
changeset 482 3a4e092ba69c
child 511 b2be4790da7a
permissions -rw-r--r--
Initial revision
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
482
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
     1
(*  Title: 	ZF/IMP/Com.ML
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
     2
    ID:         $Id$
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
     3
    Author: 	Heiko Loetzbeyer & Robert Sandner, TUM
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
     4
    Copyright   1994 TUM
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
     5
*)
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
     6
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
     7
structure Com = Datatype_Fun
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
     8
 (
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
     9
  val thy = Bexp.thy;
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    10
  val thy_name = "Com";
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    11
  val rec_specs = 
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    12
      [
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    13
       (
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    14
        "com", "univ(aexp Un bexp)",
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    15
	  [
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    16
           (["skip"],		"i", NoSyn),
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    17
	   ([":="],	"[i,i] => i", Infixl 60),
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    18
	   ([";"],	"[i,i] => i", Infixl 60),
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    19
	   (["whileC"], 	"[i,i] => i", Mixfix("while _ do _",[],60)),
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    20
	   (["ifC"],		"[i,i,i] => i",
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    21
              Mixfix("ifc _ then _ else _",[],60))
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    22
          ]
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    23
       )
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    24
      ];
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    25
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    26
  val rec_styp = "i";
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    27
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    28
  val sintrs = 
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    29
       [
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    30
	"skip : com",
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    31
	"[| x:loc; a:aexp|] ==> X(x) := a : com",
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    32
	"[| c0:com; c1:com|] ==> c0 ; c1 : com",
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    33
	"[| b:bexp; c:com|] ==> while b do c : com",
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    34
	"[| b:bexp; c0:com; c1:com|] ==> ifc b then c0 else c1 : com"
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    35
       ];
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    36
  val monos = [];
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    37
  val type_intrs = datatype_intrs@Aexp.intrs;
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    38
  val type_elims = datatype_elims
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    39
 );