### Booleans

[
Datatype booleans      Alias bools
Funcon   true
Funcon   false
Funcon   not
Funcon   implies
Funcon   and
Funcon   or
Funcon   exclusive-or  Alias xor
]
Datatype
booleans ::= true | false
Alias
bools = booleans
Funcon
not(_:booleans) : =>booleans

not(B) is logical negation.

Rule
not(false) ~> true
Rule
not(true) ~> false
Funcon
implies(_:booleans, _:booleans) : =>booleans

implies(B1, B2) is logical implication.

Rule
implies(false, false) ~> true
Rule
implies(false, true) ~> true
Rule
implies(true, true) ~> true
Rule
implies(true, false) ~> false
Funcon
and(_:booleans*) : =>booleans

and(B, ...) is logical conjunction of any number of Boolean values.

Rule
and( ) ~> true
Rule
and(false, _*:booleans*) ~> false
Rule
and(true, B*:booleans*) ~> and(B*)
Funcon
or(_:booleans*) : =>booleans

or(B, ...) is logical disjunction of any number of Boolean values.

Rule
or( ) ~> false
Rule
or(true, _*:booleans*) ~> true
Rule
or(false, B*:booleans*) ~> or(B*)
Funcon
exclusive-or(_:booleans, _:booleans) : =>booleans
Alias
xor = exclusive-or

exclusive-or(B1, B2) is exclusive disjunction.

Rule
exclusive-or(false, false) ~> false
Rule
exclusive-or(false, true)  ~> true
Rule
exclusive-or(true, false)  ~> true
Rule
exclusive-or(true, true)   ~> false

 From the PLanCompS Project CBS-beta issuesâ€¦ Suggest an improvementâ€¦