src/ZF/Bool.thy
author lcp
Mon, 20 Sep 1993 17:02:11 +0200
changeset 8 c3d2c6dcf3f0
parent 0 a5a9c433f639
child 14 1c0926788772
permissions -rw-r--r--
Installation of new simplfier. Previously appeared to set up the old simplifier to rewrite with the partial ordering [=, something not possible with the new simplifier. But such rewriting appears not to have actually been used, and there were few complications. In terms.ML setloop was used to avoid infinite rewriting with the letrec rule. Congruence rules were deleted, and an occasional SIMP_TAC had to become asm_simp_tac.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
0
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     1
(*  Title: 	ZF/bool.thy
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     2
    ID:         $Id$
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     3
    Author: 	Lawrence C Paulson, Cambridge University Computer Laboratory
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     4
    Copyright   1992  University of Cambridge
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     5
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     6
Booleans in Zermelo-Fraenkel Set Theory 
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     7
*)
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     8
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
     9
Bool = ZF +
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    10
consts
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    11
    "1"		::      "i"     	("1")
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    12
    bool        ::      "i"
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    13
    cond        ::      "[i,i,i]=>i"
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    14
    not		::	"i=>i"
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    15
    and         ::      "[i,i]=>i"      (infixl 70)
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    16
    or		::      "[i,i]=>i"      (infixl 65)
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    17
    xor		::      "[i,i]=>i"      (infixl 65)
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    18
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    19
rules
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    20
    one_def 	"1    == succ(0)"
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    21
    bool_def	"bool == {0,1}"
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    22
    cond_def	"cond(b,c,d) == if(b=1,c,d)"
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    23
    not_def	"not(b) == cond(b,0,1)"
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    24
    and_def	"a and b == cond(a,b,0)"
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    25
    or_def	"a or b == cond(a,1,b)"
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    26
    xor_def	"a xor b == cond(a,not(b),b)"
a5a9c433f639 Initial revision
clasohm
parents:
diff changeset
    27
end