Files
IBAFLang/IBAF-cbs/Funcons-beta/Values/Primitive/Booleans/Booleans.cbs
2023-11-01 09:29:33 +01:00

88 lines
1.4 KiB
Plaintext

### 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