src/ZF/IMP/Aexp.ML
author wenzelm
Thu, 14 Oct 1999 15:04:36 +0200
changeset 7866 3ccaa11b6df9
parent 482 3a4e092ba69c
permissions -rw-r--r--
pdf: generate thumbnails if ISABELLE_THUMBPDF set;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
482
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
     1
(*  Title: 	ZF/IMP/Aexp.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 Aexp = Datatype_Fun
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
     8
 (
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
     9
  val thy = Univ.thy |> add_consts [("loc", "i", NoSyn)]
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    10
  val thy_name = "Aexp"
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
        "aexp", "univ(loc Un (nat->nat) Un ((nat*nat) -> nat) )",
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    14
          [
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    15
           (["N","X"],	"i => i", NoSyn),
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    16
           (["Op1"],    "[i,i] => i", NoSyn),
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    17
           (["Op2"],    "[i,i,i] => i", NoSyn) 
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    18
          ]
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    19
       )];
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    20
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    21
  val rec_styp = "i";
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    22
  val ext = None;
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    23
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    24
  val sintrs = 
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    25
      [
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    26
       "n:nat ==> N(n) : aexp", 
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    27
       "x:loc ==> X(x) : aexp",
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    28
       "[| f: nat -> nat; a : aexp |] ==> Op1(f,a) : aexp",
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    29
       "[| f: (nat * nat) -> nat; a0 : aexp; a1: aexp |] \
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    30
\          ==> Op2(f,a0,a1) : aexp"
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    31
      ];
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    32
  val monos = [];
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    33
  val type_intrs = datatype_intrs;
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    34
  val type_elims = datatype_elims;
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    35
 );