diff options
Diffstat (limited to 'src/algebra')
-rw-r--r-- | src/algebra/boolean.spad.pamphlet | 32 | ||||
-rw-r--r-- | src/algebra/strap/BOOLEAN.lsp | 141 |
2 files changed, 84 insertions, 89 deletions
diff --git a/src/algebra/boolean.spad.pamphlet b/src/algebra/boolean.spad.pamphlet index f7cc1e9a..76c3c49b 100644 --- a/src/algebra/boolean.spad.pamphlet +++ b/src/algebra/boolean.spad.pamphlet @@ -315,25 +315,29 @@ Boolean(): Join(OrderedFinite, Logic, PropositionalLogic, ConvertibleTo InputFor test: % -> % ++ test(b) returns b and is provided for compatibility with the new compiler. == add + import EQ: (%,%) -> Boolean from Foreign Builtin + import AND: (%,%) -> % from Foreign Builtin + import OR: (%,%) -> % from Foreign Builtin + import NOT: % -> % from Foreign Builtin + test a == a - nt(a: %): % == NOT(a)$Lisp true == 'T pretend % - false == NIL$Lisp + false == NIL$Foreign(Builtin) sample() == true - not b == nt b + not b == NOT b ~ b == (b => false; true) - a and b == AND(a,b)$Lisp - a /\ b == AND(a,b)$Lisp - a or b == OR(a,b)$Lisp - a \/ b == OR(a,b)$Lisp - xor(a, b) == (a => nt b; b) - nor(a, b) == (a => false; nt b) - nand(a, b) == (a => nt b; true) - a = b == EQ(a, b)$Lisp + a and b == AND(a,b) + a /\ b == AND(a,b) + a or b == OR(a,b) + a \/ b == OR(a,b) + xor(a, b) == (a => NOT b; b) + nor(a, b) == (a => false; NOT b) + nand(a, b) == (a => NOT b; true) + a = b == EQ(a, b) implies(a, b) == (a => b; true) - equiv(a,b) == EQ(a, b)$Lisp - a < b == (b => nt a; false) + equiv(a,b) == EQ(a, b) + a < b == (b => NOT a; false) size() == 2 index i == @@ -450,9 +454,7 @@ Bits(): Exports == Implementation where ++ This domain implements Kleene's 3-valued propositional logic. KleeneTrivalentLogic(): Public == Private where Public == PropositionalLogic with - false: % ++ the definite falsehood value unknown: % ++ the indefinite `unknown' - true: % ++ the definite truth value case: (%,[| false |]) -> Boolean ++ x case false holds if the value of `x' is `false' case: (%,[| unknown |]) -> Boolean diff --git a/src/algebra/strap/BOOLEAN.lsp b/src/algebra/strap/BOOLEAN.lsp index b8bd682a..d672850f 100644 --- a/src/algebra/strap/BOOLEAN.lsp +++ b/src/algebra/strap/BOOLEAN.lsp @@ -6,160 +6,153 @@ (PUT '|BOOLEAN;test;2$;1| '|SPADreplace| '(XLAM (|a|) |a|)) -(DECLAIM (FTYPE (FUNCTION (|%Boolean| |%Shell|) |%Boolean|) - |BOOLEAN;nt|)) - -(PUT '|BOOLEAN;nt| '|SPADreplace| 'NOT) +(DECLAIM (FTYPE (FUNCTION (|%Shell|) |%Boolean|) |BOOLEAN;true;$;2|)) -(DECLAIM (FTYPE (FUNCTION (|%Shell|) |%Boolean|) |BOOLEAN;true;$;3|)) +(PUT '|BOOLEAN;true;$;2| '|SPADreplace| '(XLAM NIL 'T)) -(PUT '|BOOLEAN;true;$;3| '|SPADreplace| '(XLAM NIL 'T)) +(DECLAIM (FTYPE (FUNCTION (|%Shell|) |%Boolean|) |BOOLEAN;false;$;3|)) -(DECLAIM (FTYPE (FUNCTION (|%Shell|) |%Boolean|) |BOOLEAN;false;$;4|)) - -(PUT '|BOOLEAN;false;$;4| '|SPADreplace| '(XLAM NIL NIL)) +(PUT '|BOOLEAN;false;$;3| '|SPADreplace| '(XLAM NIL NIL)) (DECLAIM (FTYPE (FUNCTION (|%Boolean| |%Shell|) |%Boolean|) - |BOOLEAN;not;2$;5|)) + |BOOLEAN;not;2$;4|)) -(PUT '|BOOLEAN;not;2$;5| '|SPADreplace| 'NOT) +(PUT '|BOOLEAN;not;2$;4| '|SPADreplace| 'NOT) (DECLAIM (FTYPE (FUNCTION (|%Boolean| |%Shell|) |%Boolean|) - |BOOLEAN;~;2$;6|)) + |BOOLEAN;~;2$;5|)) (DECLAIM (FTYPE (FUNCTION (|%Boolean| |%Boolean| |%Shell|) |%Boolean|) - |BOOLEAN;and;3$;7|)) + |BOOLEAN;and;3$;6|)) -(PUT '|BOOLEAN;and;3$;7| '|SPADreplace| 'AND) +(PUT '|BOOLEAN;and;3$;6| '|SPADreplace| 'AND) (DECLAIM (FTYPE (FUNCTION (|%Boolean| |%Boolean| |%Shell|) |%Boolean|) - |BOOLEAN;/\\;3$;8|)) + |BOOLEAN;/\\;3$;7|)) -(PUT '|BOOLEAN;/\\;3$;8| '|SPADreplace| 'AND) +(PUT '|BOOLEAN;/\\;3$;7| '|SPADreplace| 'AND) (DECLAIM (FTYPE (FUNCTION (|%Boolean| |%Boolean| |%Shell|) |%Boolean|) - |BOOLEAN;or;3$;9|)) + |BOOLEAN;or;3$;8|)) -(PUT '|BOOLEAN;or;3$;9| '|SPADreplace| 'OR) +(PUT '|BOOLEAN;or;3$;8| '|SPADreplace| 'OR) (DECLAIM (FTYPE (FUNCTION (|%Boolean| |%Boolean| |%Shell|) |%Boolean|) - |BOOLEAN;\\/;3$;10|)) + |BOOLEAN;\\/;3$;9|)) -(PUT '|BOOLEAN;\\/;3$;10| '|SPADreplace| 'OR) +(PUT '|BOOLEAN;\\/;3$;9| '|SPADreplace| 'OR) (DECLAIM (FTYPE (FUNCTION (|%Boolean| |%Boolean| |%Shell|) |%Boolean|) - |BOOLEAN;xor;3$;11|)) + |BOOLEAN;xor;3$;10|)) (DECLAIM (FTYPE (FUNCTION (|%Boolean| |%Boolean| |%Shell|) |%Boolean|) - |BOOLEAN;nor;3$;12|)) + |BOOLEAN;nor;3$;11|)) (DECLAIM (FTYPE (FUNCTION (|%Boolean| |%Boolean| |%Shell|) |%Boolean|) - |BOOLEAN;nand;3$;13|)) + |BOOLEAN;nand;3$;12|)) (DECLAIM (FTYPE (FUNCTION (|%Boolean| |%Boolean| |%Shell|) |%Boolean|) - |BOOLEAN;=;3$;14|)) + |BOOLEAN;=;3$;13|)) -(PUT '|BOOLEAN;=;3$;14| '|SPADreplace| 'EQ) +(PUT '|BOOLEAN;=;3$;13| '|SPADreplace| 'EQ) (DECLAIM (FTYPE (FUNCTION (|%Boolean| |%Boolean| |%Shell|) |%Boolean|) - |BOOLEAN;implies;3$;15|)) + |BOOLEAN;implies;3$;14|)) (DECLAIM (FTYPE (FUNCTION (|%Boolean| |%Boolean| |%Shell|) |%Boolean|) - |BOOLEAN;equiv;3$;16|)) + |BOOLEAN;equiv;3$;15|)) -(PUT '|BOOLEAN;equiv;3$;16| '|SPADreplace| 'EQ) +(PUT '|BOOLEAN;equiv;3$;15| '|SPADreplace| 'EQ) (DECLAIM (FTYPE (FUNCTION (|%Boolean| |%Boolean| |%Shell|) |%Boolean|) - |BOOLEAN;<;3$;17|)) + |BOOLEAN;<;3$;16|)) (DECLAIM (FTYPE (FUNCTION (|%Shell|) (|%IntegerSection| 0)) - |BOOLEAN;size;Nni;18|)) + |BOOLEAN;size;Nni;17|)) -(PUT '|BOOLEAN;size;Nni;18| '|SPADreplace| '(XLAM NIL 2)) +(PUT '|BOOLEAN;size;Nni;17| '|SPADreplace| '(XLAM NIL 2)) (DECLAIM (FTYPE (FUNCTION ((|%IntegerSection| 1) |%Shell|) |%Boolean|) - |BOOLEAN;index;Pi$;19|)) + |BOOLEAN;index;Pi$;18|)) (DECLAIM (FTYPE (FUNCTION (|%Boolean| |%Shell|) (|%IntegerSection| 1)) - |BOOLEAN;lookup;$Pi;20|)) + |BOOLEAN;lookup;$Pi;19|)) -(DECLAIM (FTYPE (FUNCTION (|%Shell|) |%Boolean|) |BOOLEAN;random;$;21|)) +(DECLAIM (FTYPE (FUNCTION (|%Shell|) |%Boolean|) |BOOLEAN;random;$;20|)) (DECLAIM (FTYPE (FUNCTION (|%Boolean| |%Shell|) |%Thing|) - |BOOLEAN;convert;$If;22|)) + |BOOLEAN;convert;$If;21|)) (DECLAIM (FTYPE (FUNCTION (|%Boolean| |%Shell|) |%Thing|) - |BOOLEAN;coerce;$Of;23|)) + |BOOLEAN;coerce;$Of;22|)) (DEFUN |BOOLEAN;test;2$;1| (|a| $) (DECLARE (IGNORE $)) |a|) -(DEFUN |BOOLEAN;nt| (|a| $) (DECLARE (IGNORE $)) (NOT |a|)) - -(DEFUN |BOOLEAN;true;$;3| ($) (DECLARE (IGNORE $)) 'T) +(DEFUN |BOOLEAN;true;$;2| ($) (DECLARE (IGNORE $)) 'T) -(DEFUN |BOOLEAN;false;$;4| ($) (DECLARE (IGNORE $)) NIL) +(DEFUN |BOOLEAN;false;$;3| ($) (DECLARE (IGNORE $)) NIL) -(DEFUN |BOOLEAN;not;2$;5| (|b| $) (DECLARE (IGNORE $)) (NOT |b|)) +(DEFUN |BOOLEAN;not;2$;4| (|b| $) (DECLARE (IGNORE $)) (NOT |b|)) -(DEFUN |BOOLEAN;~;2$;6| (|b| $) (COND (|b| 'NIL) ('T 'T))) +(DEFUN |BOOLEAN;~;2$;5| (|b| $) (COND (|b| 'NIL) ('T 'T))) -(DEFUN |BOOLEAN;and;3$;7| (|a| |b| $) +(DEFUN |BOOLEAN;and;3$;6| (|a| |b| $) (DECLARE (IGNORE $)) (AND |a| |b|)) -(DEFUN |BOOLEAN;/\\;3$;8| (|a| |b| $) +(DEFUN |BOOLEAN;/\\;3$;7| (|a| |b| $) (DECLARE (IGNORE $)) (AND |a| |b|)) -(DEFUN |BOOLEAN;or;3$;9| (|a| |b| $) +(DEFUN |BOOLEAN;or;3$;8| (|a| |b| $) (DECLARE (IGNORE $)) (OR |a| |b|)) -(DEFUN |BOOLEAN;\\/;3$;10| (|a| |b| $) +(DEFUN |BOOLEAN;\\/;3$;9| (|a| |b| $) (DECLARE (IGNORE $)) (OR |a| |b|)) -(DEFUN |BOOLEAN;xor;3$;11| (|a| |b| $) +(DEFUN |BOOLEAN;xor;3$;10| (|a| |b| $) (COND (|a| (NOT |b|)) ('T |b|))) -(DEFUN |BOOLEAN;nor;3$;12| (|a| |b| $) +(DEFUN |BOOLEAN;nor;3$;11| (|a| |b| $) (COND (|a| 'NIL) ('T (NOT |b|)))) -(DEFUN |BOOLEAN;nand;3$;13| (|a| |b| $) +(DEFUN |BOOLEAN;nand;3$;12| (|a| |b| $) (COND (|a| (NOT |b|)) ('T 'T))) -(DEFUN |BOOLEAN;=;3$;14| (|a| |b| $) +(DEFUN |BOOLEAN;=;3$;13| (|a| |b| $) (DECLARE (IGNORE $)) (EQ |a| |b|)) -(DEFUN |BOOLEAN;implies;3$;15| (|a| |b| $) (COND (|a| |b|) ('T 'T))) +(DEFUN |BOOLEAN;implies;3$;14| (|a| |b| $) (COND (|a| |b|) ('T 'T))) -(DEFUN |BOOLEAN;equiv;3$;16| (|a| |b| $) +(DEFUN |BOOLEAN;equiv;3$;15| (|a| |b| $) (DECLARE (IGNORE $)) (EQ |a| |b|)) -(DEFUN |BOOLEAN;<;3$;17| (|a| |b| $) (COND (|b| (NOT |a|)) ('T 'NIL))) +(DEFUN |BOOLEAN;<;3$;16| (|a| |b| $) (COND (|b| (NOT |a|)) ('T 'NIL))) -(DEFUN |BOOLEAN;size;Nni;18| ($) (DECLARE (IGNORE $)) 2) +(DEFUN |BOOLEAN;size;Nni;17| ($) (DECLARE (IGNORE $)) 2) -(DEFUN |BOOLEAN;index;Pi$;19| (|i| $) +(DEFUN |BOOLEAN;index;Pi$;18| (|i| $) (COND ((SPADCALL |i| (|getShellEntry| $ 28)) 'NIL) ('T 'T))) -(DEFUN |BOOLEAN;lookup;$Pi;20| (|a| $) (COND (|a| 1) ('T 2))) +(DEFUN |BOOLEAN;lookup;$Pi;19| (|a| $) (COND (|a| 1) ('T 2))) -(DEFUN |BOOLEAN;random;$;21| ($) +(DEFUN |BOOLEAN;random;$;20| ($) (COND ((SPADCALL (|random|) (|getShellEntry| $ 28)) 'NIL) ('T 'T))) -(DEFUN |BOOLEAN;convert;$If;22| (|x| $) +(DEFUN |BOOLEAN;convert;$If;21| (|x| $) (COND (|x| '|true|) ('T '|false|))) -(DEFUN |BOOLEAN;coerce;$Of;23| (|x| $) +(DEFUN |BOOLEAN;coerce;$Of;22| (|x| $) (COND (|x| '|true|) ('T '|false|))) (DEFUN |Boolean| () (PROG () (RETURN - (PROG (#0=#:G1426) + (PROG (#0=#:G1425) (RETURN (COND ((LETT #0# (HGET |$ConstructorCache| '|Boolean|) |Boolean|) @@ -189,21 +182,21 @@ (MAKEPROP '|Boolean| '|infovec| (LIST '#(NIL NIL NIL NIL NIL NIL |BOOLEAN;test;2$;1| (CONS IDENTITY - (FUNCALL (|dispatchFunction| |BOOLEAN;true;$;3|) $)) + (FUNCALL (|dispatchFunction| |BOOLEAN;true;$;2|) $)) (CONS IDENTITY - (FUNCALL (|dispatchFunction| |BOOLEAN;false;$;4|) $)) - |BOOLEAN;not;2$;5| (|Boolean|) (0 . |false|) (4 . |true|) - |BOOLEAN;~;2$;6| |BOOLEAN;and;3$;7| |BOOLEAN;/\\;3$;8| - |BOOLEAN;or;3$;9| |BOOLEAN;\\/;3$;10| |BOOLEAN;xor;3$;11| - |BOOLEAN;nor;3$;12| |BOOLEAN;nand;3$;13| |BOOLEAN;=;3$;14| - |BOOLEAN;implies;3$;15| |BOOLEAN;equiv;3$;16| - |BOOLEAN;<;3$;17| (|NonNegativeInteger|) - |BOOLEAN;size;Nni;18| (|Integer|) (8 . |even?|) - (|PositiveInteger|) |BOOLEAN;index;Pi$;19| (13 . |One|) - |BOOLEAN;lookup;$Pi;20| (17 . |random|) - |BOOLEAN;random;$;21| (|InputForm|) - |BOOLEAN;convert;$If;22| (|OutputForm|) - |BOOLEAN;coerce;$Of;23| (|SingleInteger|) (|String|)) + (FUNCALL (|dispatchFunction| |BOOLEAN;false;$;3|) $)) + |BOOLEAN;not;2$;4| (|Boolean|) (0 . |false|) (4 . |true|) + |BOOLEAN;~;2$;5| |BOOLEAN;and;3$;6| |BOOLEAN;/\\;3$;7| + |BOOLEAN;or;3$;8| |BOOLEAN;\\/;3$;9| |BOOLEAN;xor;3$;10| + |BOOLEAN;nor;3$;11| |BOOLEAN;nand;3$;12| |BOOLEAN;=;3$;13| + |BOOLEAN;implies;3$;14| |BOOLEAN;equiv;3$;15| + |BOOLEAN;<;3$;16| (|NonNegativeInteger|) + |BOOLEAN;size;Nni;17| (|Integer|) (8 . |even?|) + (|PositiveInteger|) |BOOLEAN;index;Pi$;18| (13 . |One|) + |BOOLEAN;lookup;$Pi;19| (17 . |random|) + |BOOLEAN;random;$;20| (|InputForm|) + |BOOLEAN;convert;$If;21| (|OutputForm|) + |BOOLEAN;coerce;$Of;22| (|SingleInteger|) (|String|)) '#(~= 21 ~ 27 |xor| 32 |true| 38 |test| 42 |size| 47 |random| 51 |or| 55 |not| 61 |nor| 66 |nand| 72 |min| 78 |max| 88 |lookup| 98 |latex| 103 |index| 108 |implies| 113 |hash| |