Three-Valued Logic
XXXX
Institution
XXXXXXXXX
Date
Enumerated XXXXXXXXX data type
XXXXXXXXX data XXXX XX XXXXXX an XXXXXXXXXXX XXX individual XXXX XXXXXX to a XXXXX type. The three valued XXXXX has three states which include ‘XXXX’, ‘XXXX’, and ‘Unknown.’ XXX state XXXXXXX XXX XXXX be XXXX to mean ‘neither or ‘undefined.’ I use the XXXXX table below to show three-valued XXXXX.
XXX XXXXXXXXX OR used in the unknown together with the unknown XX unknown XXX XXX “falz”. XXX unknowns does XXX necessarily XXXX that XXXX XXX the XXXX or XXXX mean XXX same thing. When comparing XXX unknowns, XXX will get XXX same XXXXXXX which XX XXXXXXX. The use of two XXXXXXXX can cause a “hole” in XXX reasoning XXXXXXX the operation can XXXX XX done when XXX XXX instances XXX proved to be equal.
(| = or, &XXX; = XXX, ^ = XXX, ! = not)
X &XXX; X = T X &XXX; U = U X &XXX; X = F
X & T = U X &XXX; X = U X &XXX; F = F
X & X = F X & X = F F & X = F
X | T = X X | U = X T | X = X
U | X = T X | U = U X | X = U
X | T = X F | U = U F | F = F
X ^ X = F X ^ X = X T ^ F = XX ^ X = X U ^ U = U X ^ X = X
X ^ T = T X ^ X = U X ^ F = F
!T = F !U = U !X = X
Functions XXXXXXXXXX, ternaryAND, and XXXXXXXXX
The data ternary XX used XX define an algebraic data XXXX with three possible constructors XXXXX XXXXXXX “XXXX”, “XXXX” and “XXXXXXX”. XX can also XXX it XX XXXXXXX our own XXXX types by deriving “Show” XX well as “XX”.
XXXXXXXXXX XXXX XXXX XXX Ternary type XXX XXXXXX a value XXXXX is Ternary. If XXX XXXXX XX “Troo” the ternary will return “XXXX”. “Falz” XXXX XXXXXX “Troo” XXXXX the XXXXXXX will return unknown. This is only pessible XXXX XXXXXXXXXX XXXXXXXX.
XXXXXXXXXX will take in two XXXXXXX types and XXXXXX a ternary. In this XXXX, it will have 4 guard XXXXXXXXXX which XXXX XX XXXX XXXX XXXXXXX with special cases related to logical XXX. It XXXX XXXXX all XXX logical XXX in XXX XXXXX table.
TernaryOR XXXX XXXX the XXXX functionality XX XXX XXXXXXXXXX XXXXXXXX XXXXX XXXX be XXXX differences in XXXXXXX expressions.
ternaryNOT :: XXXXXXX -&XX; XXXXXXX
XXXXXXXXXX XXXX = Falz
XXXXXXXXXX XXXX = XXXX
XXXXXXXXXX XXXXXXX = XXXXXXX
ternaryAND :: Ternary -> Ternary -&XX; XXXXXXX
XXXXXXXXXX x y
| (x == Troo) &XXX;&XXX; (y == XXXX) = XXXX
| (x == Troo) &XXX;& (y == XXXXXXX) = Unknown
| (x == Unknown) &&XXX; (y /= Falz) = Unknown
| XXXXXXXXX = Falz
XXXXXXXXX :: XXXXXXX -> XXXXXXX -> XXXXXXX
ternaryOR x y
| (x == XXXXXXX) &&XXX; (y /= XXXX) = XXXXXXX
| (x == XXXX) = y
| XXXXXXXXX = Troo