src/ZF/IMP/Evalc.ML
author nipkow
Mon, 08 Aug 1994 16:45:08 +0200
changeset 510 093665669f52
parent 496 3fc829fa81d2
permissions -rw-r--r--
Simplified some proofs. Added some type assumptions to the introduction rules.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
482
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
     1
(*  Title: 	ZF/IMP/Evalc.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 Evalc = Inductive_Fun    
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
     8
 (
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
     9
  val thy = Evalc0.thy;
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    10
  val thy_name = "Evalc"
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    11
  val rec_doms = [("evalc","com * (loc -> nat) * (loc -> nat)")];
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    12
  val sintrs =
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    13
      [
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    14
	"[| sigma: loc -> nat |] ==> <skip,sigma> -c-> sigma",
510
093665669f52 Simplified some proofs. Added some type assumptions to the introduction rules.
nipkow
parents: 496
diff changeset
    15
       	"[| m: nat; x: loc; a:aexp; <a,sigma> -a-> m |] ==> \
482
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    16
\          <X(x) := a,sigma> -c-> sigma[m/x]" , 
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    17
       "[| <c0,sigma> -c-> sigma2; <c1,sigma2> -c-> sigma1 |] ==> \
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    18
\          <c0 ; c1, sigma> -c-> sigma1",
510
093665669f52 Simplified some proofs. Added some type assumptions to the introduction rules.
nipkow
parents: 496
diff changeset
    19
       "[| b:bexp; c1:com; sigma:loc->nat;\
093665669f52 Simplified some proofs. Added some type assumptions to the introduction rules.
nipkow
parents: 496
diff changeset
    20
\          <b,sigma> -b-> 1; <c0,sigma> -c-> sigma1 |] ==> \
093665669f52 Simplified some proofs. Added some type assumptions to the introduction rules.
nipkow
parents: 496
diff changeset
    21
\       <ifc b then c0 else c1, sigma> -c-> sigma1 ",
093665669f52 Simplified some proofs. Added some type assumptions to the introduction rules.
nipkow
parents: 496
diff changeset
    22
       "[| b:bexp; c0:com; sigma:loc->nat;\
093665669f52 Simplified some proofs. Added some type assumptions to the introduction rules.
nipkow
parents: 496
diff changeset
    23
\          <b,sigma> -b-> 0; <c1,sigma> -c-> sigma1 |] ==> \
093665669f52 Simplified some proofs. Added some type assumptions to the introduction rules.
nipkow
parents: 496
diff changeset
    24
\       <ifc b then c0 else c1, sigma> -c-> sigma1 ",
093665669f52 Simplified some proofs. Added some type assumptions to the introduction rules.
nipkow
parents: 496
diff changeset
    25
       "[| b:bexp; c:com; <b, sigma> -b-> 0 |] ==> \
482
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    26
\          <while b do c,sigma> -c-> sigma ",
510
093665669f52 Simplified some proofs. Added some type assumptions to the introduction rules.
nipkow
parents: 496
diff changeset
    27
       "[| b:bexp; c:com; <b,sigma> -b-> 1; <c,sigma> -c-> sigma2; \
482
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    28
\          <while b do c, sigma2> -c-> sigma1 |] ==> \
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    29
\          <while b do c, sigma> -c-> sigma1 "];
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    30
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    31
  val monos = [];
3a4e092ba69c Initial revision
nipkow
parents:
diff changeset
    32
  val con_defs = [assign_def];
496
3fc829fa81d2 Inductive defs need no longer mention SigmaI/E2
lcp
parents: 482
diff changeset
    33
  val type_intrs = Bexp.intrs@Com.intrs@[if_type,lam_type,apply_type];
3fc829fa81d2 Inductive defs need no longer mention SigmaI/E2
lcp
parents: 482
diff changeset
    34
  val type_elims = [make_elim(Evala.dom_subset RS subsetD),
3fc829fa81d2 Inductive defs need no longer mention SigmaI/E2
lcp
parents: 482
diff changeset
    35
		    make_elim(Evalb.dom_subset RS subsetD) ]);