Math::Logic::Ternary::Trit - ternary logical information unit
This documentation refers to version 0.003 of Math::Logic::Ternary::Trit.
use Math::Logic::Ternary::Trit; $a = Math::Logic::Ternary::Trit->true; $a = Math::Logic::Ternary::Trit->from_string('true'); # same as above $a = Math::Logic::Ternary::Trit->from_int(1); # same as above $a = Math::Logic::Ternary::Trit->from_bool(1 == 1); # same as above $b = Math::Logic::Ternary::Trit->false; $b = Math::Logic::Ternary::Trit->from_string('false'); # same as above $b = Math::Logic::Ternary::Trit->from_int(-1); # same as above $b = Math::Logic::Ternary::Trit->from_bool(0 == 1); # same as above $c = Math::Logic::Ternary::Trit->nil; $c = Math::Logic::Ternary::Trit->from_string('nil'); # same as above $c = Math::Logic::Ternary::Trit->from_int(0); # same as above $c = Math::Logic::Ternary::Trit->from_bool(undef); # same as above $d = $a->and($b)->or($a->not->and($c)); print $d->as_string; # print '$false' print $d->as_int; # print -1
Math::Logic::Ternary::Trit is the class for ternary logical values aka trits. This class has only three instances, representing ternary truth values: true, false, and nil. It also implements logical operators, conversions and the role defined by Math::Logic::Ternary::Object.
None.
The nil trit.
The true trit.
The false trit.
Set to nil.
+-------+-------+ | A | sn A | +-------+-------+ | false | nil | | nil | nil | | true | nil | +-------+-------+
Set to true.
+-------+-------+ | A | st A | +-------+-------+ | false | true | | nil | true | | true | true | +-------+-------+
Set to false.
+-------+-------+ | A | sf A | +-------+-------+ | false | false | | nil | false | | true | false | +-------+-------+
Identity.
+-------+-------+ | A | id A | +-------+-------+ | false | false | | nil | nil | | true | true | +-------+-------+
Not.
+-------+-------+ | A | not A | +-------+-------+ | false | true | | nil | nil | | true | false | +-------+-------+
Up one: increment modulo 3.
+-------+-------+ | A | up A | +-------+-------+ | false | nil | | nil | true | | true | false | +-------+-------+
Not up: swap nil/false.
+-------+-------+ | A | nup A | +-------+-------+ | false | nil | | nil | false | | true | true | +-------+-------+
Down one: decrement modulo 3.
+-------+-------+ | A | dn A | +-------+-------+ | false | true | | nil | false | | true | nil | +-------+-------+
Not down: swap nil/true.
+-------+-------+ | A | ndn A | +-------+-------+ | false | false | | nil | true | | true | nil | +-------+-------+
Equal to nil.
+-------+-------+ | A | eqn A | +-------+-------+ | false | false | | nil | true | | true | false | +-------+-------+
Equal to true.
+-------+-------+ | A | eqt A | +-------+-------+ | false | false | | nil | false | | true | true | +-------+-------+
Equal to false.
+-------+-------+ | A | eqf A | +-------+-------+ | false | true | | nil | false | | true | false | +-------+-------+
Not equal to nil.
+-------+-------+ | A | nen A | +-------+-------+ | false | true | | nil | false | | true | true | +-------+-------+
Not equal to true.
+-------+-------+ | A | net A | +-------+-------+ | false | true | | nil | true | | true | false | +-------+-------+
Not equal to false.
+-------+-------+ | A | nef A | +-------+-------+ | false | false | | nil | true | | true | true | +-------+-------+
Hamlet: x or not x.
+-------+-------+ | A | hm A | +-------+-------+ | false | true | | nil | nil | | true | true | +-------+-------+
Up & hamlet.
+-------+-------+ | A | uhm A | +-------+-------+ | false | nil | | nil | true | | true | true | +-------+-------+
Down & hamlet.
+-------+-------+ | A | dhm A | +-------+-------+ | false | true | | nil | true | | true | nil | +-------+-------+
Or nil.
+-------+-------+ | A | orn A | +-------+-------+ | false | nil | | nil | nil | | true | true | +-------+-------+
Up & or nil.
+-------+--------+ | A | uorn A | +-------+--------+ | false | nil | | nil | true | | true | nil | +-------+--------+
Down & or nil.
+-------+--------+ | A | dorn A | +-------+--------+ | false | true | | nil | nil | | true | nil | +-------+--------+
Quantum: x and not x.
+-------+-------+ | A | qt A | +-------+-------+ | false | false | | nil | nil | | true | false | +-------+-------+
Up & quantum.
+-------+-------+ | A | uqt A | +-------+-------+ | false | nil | | nil | false | | true | false | +-------+-------+
Down & quantum.
+-------+-------+ | A | dqt A | +-------+-------+ | false | false | | nil | false | | true | nil | +-------+-------+
And nil.
+-------+-------+ | A | ann A | +-------+-------+ | false | false | | nil | nil | | true | nil | +-------+-------+
Up & ann.
+-------+--------+ | A | uann A | +-------+--------+ | false | nil | | nil | nil | | true | false | +-------+--------+
Down & ann.
+-------+--------+ | A | dann A | +-------+--------+ | false | nil | | nil | false | | true | nil | +-------+--------+
And.
A and B +---+---------------------------+ | A | B false nil true | | +---+-----------------------+ | false | false false false | | nil | false nil nil | | true | false nil true | +-------+-----------------------+
Or.
A or B +---+---------------------------+ | A | B false nil true | | +---+-----------------------+ | false | false nil true | | nil | nil nil true | | true | true true true | +-------+-----------------------+
Exclusive or.
A xor B +---+---------------------------+ | A | B false nil true | | +---+-----------------------+ | false | false nil true | | nil | nil nil nil | | true | true nil false | +-------+-----------------------+
Equivalent.
A eqv B +---+---------------------------+ | A | B false nil true | | +---+-----------------------+ | false | true nil false | | nil | nil nil nil | | true | false nil true | +-------+-----------------------+
Implication (x ==> y).
A imp B +---+---------------------------+ | A | B false nil true | | +---+-----------------------+ | false | true true true | | nil | nil nil true | | true | false nil true | +-------+-----------------------+
Replication (x <== y).
A rep B +---+---------------------------+ | A | B false nil true | | +---+-----------------------+ | false | true nil false | | nil | true nil nil | | true | true true true | +-------+-----------------------+
Not and.
A nand B +---+---------------------------+ | A | B false nil true | | +---+-----------------------+ | false | true true true | | nil | true nil nil | | true | true nil false | +-------+-----------------------+
Not or.
A nor B +---+---------------------------+ | A | B false nil true | | +---+-----------------------+ | false | true nil false | | nil | nil nil false | | true | false false false | +-------+-----------------------+
Compare (false < nil < true).
A cmp B +---+---------------------------+ | A | B false nil true | | +---+-----------------------+ | false | nil false false | | nil | true nil false | | true | true true nil | +-------+-----------------------+
Ascending (false < nil < true).
A asc B +---+---------------------------+ | A | B false nil true | | +---+-----------------------+ | false | nil true true | | nil | false nil true | | true | false false nil | +-------+-----------------------+
The lesser (false < nil < true). Logically equivalent to and.
A tlr B +---+---------------------------+ | A | B false nil true | | +---+-----------------------+ | false | false false false | | nil | false nil nil | | true | false nil true | +-------+-----------------------+
The greater (false < nil < true). Logically equivalent to or.
A tgr B +---+---------------------------+ | A | B false nil true | | +---+-----------------------+ | false | false nil true | | nil | nil nil true | | true | true true true | +-------+-----------------------+
Equal to.
A eq B +---+---------------------------+ | A | B false nil true | | +---+-----------------------+ | false | true false false | | nil | false true false | | true | false false true | +-------+-----------------------+
Not equal to.
A ne B +---+---------------------------+ | A | B false nil true | | +---+-----------------------+ | false | false true true | | nil | true false true | | true | true true false | +-------+-----------------------+
Less than (false < nil < true)
A lt B +---+---------------------------+ | A | B false nil true | | +---+-----------------------+ | false | false true true | | nil | false false true | | true | false false false | +-------+-----------------------+
Greater or equal (false < nil < true).
A ge B +---+---------------------------+ | A | B false nil true | | +---+-----------------------+ | false | true false false | | nil | true true false | | true | true true true | +-------+-----------------------+
Greater than (false < nil < true).
A gt B +---+---------------------------+ | A | B false nil true | | +---+-----------------------+ | false | false false false | | nil | true false false | | true | true true false | +-------+-----------------------+
Less or equal (false < nil < true).
A le B +---+---------------------------+ | A | B false nil true | | +---+-----------------------+ | false | true true true | | nil | false true true | | true | false false true | +-------+-----------------------+
Compare (unbalanced, nil < true < false).
A cmpu B +---+---------------------------+ | A | B nil true false | | +---+-----------------------+ | nil | nil false false | | true | true nil false | | false | true true nil | +-------+-----------------------+
Ascending (unbalanced, nil < true < false).
A ascu B +---+---------------------------+ | A | B nil true false | | +---+-----------------------+ | nil | nil true true | | true | false nil true | | false | false false nil | +-------+-----------------------+
The lesser (unbalanced, nil < true < false).
A tlru B +---+---------------------------+ | A | B nil true false | | +---+-----------------------+ | nil | nil nil nil | | true | nil true true | | false | nil true false | +-------+-----------------------+
The greater (unbalanced, nil < true < false).
A tgru B +---+---------------------------+ | A | B nil true false | | +---+-----------------------+ | nil | nil true false | | true | true true false | | false | false false false | +-------+-----------------------+
Less than (unbalanced, nil < true < false).
A ltu B +---+---------------------------+ | A | B nil true false | | +---+-----------------------+ | nil | false true true | | true | false false true | | false | false false false | +-------+-----------------------+
Greater or equal (unbalanced, nil < true < false).
A geu B +---+---------------------------+ | A | B nil true false | | +---+-----------------------+ | nil | true false false | | true | true true false | | false | true true true | +-------+-----------------------+
Greater than (unbalanced, nil < true < false).
A gtu B +---+---------------------------+ | A | B nil true false | | +---+-----------------------+ | nil | false false false | | true | true false false | | false | true true false | +-------+-----------------------+
Less or equal (unbalanced, nil < true < false).
A gtu B +---+---------------------------+ | A | B nil true false | | +---+-----------------------+ | nil | true true true | | true | false true true | | false | false false true | +-------+-----------------------+
Increment.
A incr B +---+---------------------------+ | A | B false nil true | | +---+-----------------------+ | false | true false nil | | nil | false nil true | | true | nil true false | +-------+-----------------------+
Increment carry.
A incc B +---+---------------------------+ | A | B false nil true | | +---+-----------------------+ | false | false nil nil | | nil | nil nil nil | | true | nil nil true | +-------+-----------------------+
Increment carry (unbalanced).
A inccu B +---+---------------------------+ | A | B nil true false | | +---+-----------------------+ | nil | nil nil nil | | true | nil nil true | | false | nil true true | +-------+-----------------------+
Increment carry (negative base).
A inccv B +---+---------------------------+ | A | B nil true false | | +---+-----------------------+ | nil | nil nil true | | true | nil nil nil | | false | nil false nil | +-------+-----------------------+
Decrement.
A decr B +---+---------------------------+ | A | B false nil true | | +---+-----------------------+ | false | nil false true | | nil | true nil false | | true | false true nil | +-------+-----------------------+
Decrement carry.
A decc B +---+---------------------------+ | A | B false nil true | | +---+-----------------------+ | false | nil nil true | | nil | nil nil nil | | true | false nil nil | +-------+-----------------------+
Decrement carry (unbalanced).
A deccu B +---+---------------------------+ | A | B nil true false | | +---+-----------------------+ | nil | nil true true | | true | nil nil true | | false | nil nil nil | +-------+-----------------------+
Decrement carry (negative base)
A deccv B +---+---------------------------+ | A | B nil true false | | +---+-----------------------+ | nil | nil false nil | | true | nil nil nil | | false | nil nil true | +-------+-----------------------+
Parity.
A pty B +---+---------------------------+ | A | B false nil true | | +---+-----------------------+ | false | false true nil | | nil | true nil false | | true | nil false true | +-------+-----------------------+
Duplicate.
A dpl B +---+---------------------------+ | A | B false nil true | | +---+-----------------------+ | false | nil true false | | nil | false nil true | | true | true false nil | +-------+-----------------------+
Duplication carry.
A dplc B +---+---------------------------+ | A | B false nil true | | +---+-----------------------+ | false | false false nil | | nil | nil nil nil | | true | nil true true | +-------+-----------------------+
Duplication carry (unbalanced).
A dplcu B +---+---------------------------+ | A | B nil true false | | +---+-----------------------+ | nil | nil nil nil | | true | nil true true | | false | true true false | +-------+-----------------------+
Duplication carry (negative base).
A dplcv B +---+---------------------------+ | A | B nil true false | | +---+-----------------------+ | nil | nil nil true | | true | nil false nil | | false | false false false | +-------+-----------------------+
Negation carry (negative base).
A negcv B +---+---------------------------+ | A | B nil true false | | +---+-----------------------+ | nil | nil nil nil | | true | true nil nil | | false | true true nil | +-------+-----------------------+
Multiplication carry (unbalanced).
A mulcu B +---+---------------------------+ | A | B nil true false | | +---+-----------------------+ | nil | nil nil nil | | true | nil nil nil | | false | nil nil true | +-------+-----------------------+
Addition.
add A, B, C +-------+---+---------------------------+ | A | B | C false nil true | | | +---+-----------------------+ | false | false | nil true false | | false | nil | true false nil | | false | true | false nil true | | | | | | nil | false | true false nil | | nil | nil | false nil true | | nil | true | nil true false | | | | | | true | false | false nil true | | true | nil | nil true false | | true | true | true false nil | +-------+-------+-----------------------+
Addition carry.
addc A, B, C +-------+---+---------------------------+ | A | B | C false nil true | | | +---+-----------------------+ | false | false | false false nil | | false | nil | false nil nil | | false | true | nil nil nil | | | | | | nil | false | false nil nil | | nil | nil | nil nil nil | | nil | true | nil nil true | | | | | | true | false | nil nil nil | | true | nil | nil nil true | | true | true | nil true true | +-------+-------+-----------------------+
Addition carry (unbalanced).
addcu A, B, C +-------+---+---------------------------+ | A | B | C nil true false | | | +---+-----------------------+ | nil | nil | nil nil nil | | nil | true | nil nil true | | nil | false | nil true true | | | | | | true | nil | nil nil true | | true | true | nil true true | | true | false | true true true | | | | | | false | nil | nil true true | | false | true | true true true | | false | false | true true false | +-------+-------+-----------------------+
Addition carry (negative base).
addcv A, B, C +-------+---+---------------------------+ | A | B | C nil true false | | | +---+-----------------------+ | nil | nil | nil nil true | | nil | true | nil nil nil | | nil | false | nil false nil | | | | | | true | nil | nil nil nil | | true | true | nil false nil | | true | false | false false nil | | | | | | false | nil | nil false nil | | false | true | false false nil | | false | false | false false false | +-------+-------+-----------------------+
Addition carry (mixed base).
For multiplication in base(-3), an addition of two trits 0..2 and one trit -1..1 can be useful. Addcx computes a signed carry trit for this kind of addition.
addcx A, B, C +-------+---+---------------------------+ | A | B | C nil true false | | | +---+-----------------------+ | nil | nil | nil nil true | | nil | true | nil nil nil | | nil | false | true nil true | | | | | | true | nil | nil nil nil | | true | true | nil false nil | | true | false | nil nil true | | | | | | false | nil | nil false nil | | false | true | false false nil | | false | false | nil nil nil | +-------+-------+-----------------------+
Subtraction.
subt A, B, C +-------+---+---------------------------+ | A | B | C false nil true | | | +---+-----------------------+ | false | false | true nil false | | false | nil | nil false true | | false | true | false true nil | | | | | | nil | false | false true nil | | nil | nil | true nil false | | nil | true | nil false true | | | | | | true | false | nil false true | | true | nil | false true nil | | true | true | true nil false | +-------+-------+-----------------------+
Subtraction carry.
subc A, B, C +-------+---+---------------------------+ | A | B | C false nil true | | | +---+-----------------------+ | false | false | nil nil nil | | false | nil | nil nil true | | false | true | nil true true | | | | | | nil | false | false nil nil | | nil | nil | nil nil nil | | nil | true | nil nil true | | | | | | true | false | false false nil | | true | nil | false nil nil | | true | true | nil nil nil | +-------+-------+-----------------------+
Subtraction carry (unbalanced).
subcu A, B, C +-------+---+---------------------------+ | A | B | C nil true false | | | +---+-----------------------+ | nil | nil | nil true true | | nil | true | true true true | | nil | false | true true false | | | | | | true | nil | nil nil true | | true | true | nil true true | | true | false | true true true | | | | | | false | nil | nil nil nil | | false | true | nil nil true | | false | false | nil true true | +-------+-------+-----------------------+
Subtraction carry (negative base).
subcv A, B, C +-------+---+---------------------------+ | A | B | C nil true false | | | +---+-----------------------+ | nil | nil | nil false nil | | nil | true | false false nil | | nil | false | false false false | | | | | | true | nil | nil nil nil | | true | true | nil false nil | | true | false | false false nil | | | | | | false | nil | nil nil true | | false | true | nil nil nil | | false | false | nil false nil | +-------+-------+-----------------------+
Ternary comparison to minimum.
cmin A, B, C +-------+---+---------------------------+ | A | B | C false nil true | | | +---+-----------------------+ | false | false | nil nil nil | | false | nil | nil nil nil | | false | true | nil false false | | | | | | nil | false | nil nil nil | | nil | nil | nil nil nil | | nil | true | true false false | | | | | | true | false | true true false | | true | nil | true true false | | true | true | true true false | +-------+-------+-----------------------+
Ternary comparison to median.
cmed A, B, C +-------+---+---------------------------+ | A | B | C false nil true | | | +---+-----------------------+ | false | false | true true false | | false | nil | true true false | | false | true | true nil nil | | | | | | nil | false | true true false | | nil | nil | true true false | | nil | true | false true nil | | | | | | true | false | nil nil true | | true | nil | nil nil true | | true | true | false false true | +-------+-------+-----------------------+
Ternary comparison to maximum.
cmax A, B, C +-------+---+---------------------------+ | A | B | C false nil true | | | +---+-----------------------+ | false | false | false false true | | false | nil | false false true | | false | true | false true true | | | | | | nil | false | false false true | | nil | nil | false false true | | nil | true | nil nil true | | | | | | true | false | false false nil | | true | nil | false false nil | | true | true | nil nil nil | +-------+-------+-----------------------+
Ternary comparison validation.
+-------+---+---------------------------+ | A | B | C false nil true | | | +---+-----------------------+ | false | false | true true true | | false | nil | nil nil true | | false | true | false nil true | | | | | | nil | false | true nil nil | | nil | nil | nil true nil | | nil | true | nil nil true | | | | | | true | false | true nil false | | true | nil | true nil nil | | true | true | true true true | +-------+-------+-----------------------+
Minimum of three.
min A, B, C +-------+---+---------------------------+ | A | B | C false nil true | | | +---+-----------------------+ | false | false | false false false | | false | nil | false false false | | false | true | false false false | | | | | | nil | false | false false false | | nil | nil | false nil nil | | nil | true | false nil nil | | | | | | true | false | false false false | | true | nil | false nil nil | | true | true | false nil true | +-------+-------+-----------------------+
Median of three.
med A, B, C +-------+---+---------------------------+ | A | B | C false nil true | | | +---+-----------------------+ | false | false | false false false | | false | nil | false nil nil | | false | true | false nil true | | | | | | nil | false | false nil nil | | nil | nil | nil nil nil | | nil | true | nil nil true | | | | | | true | false | false nil true | | true | nil | nil nil true | | true | true | true true true | +-------+-------+-----------------------+
Maximum of three.
max A, B, C +-------+---+---------------------------+ | A | B | C false nil true | | | +---+-----------------------+ | false | false | false nil true | | false | nil | nil nil true | | false | true | true true true | | | | | | nil | false | nil nil true | | nil | nil | nil nil true | | nil | true | true true true | | | | | | true | false | true true true | | true | nil | true true true | | true | true | true true true | +-------+-------+-----------------------+
Minimum of three (unbalanced).
minu A, B, C +-------+---+---------------------------+ | A | B | C nil true false | | | +---+-----------------------+ | nil | nil | nil nil nil | | nil | true | nil nil nil | | nil | false | nil nil nil | | | | | | true | nil | nil nil nil | | true | true | nil true true | | true | false | nil true true | | | | | | false | nil | nil nil nil | | false | true | nil true true | | false | false | nil true false | +-------+-------+-----------------------+
Median of three (unbalanced).
medu A, B, C +-------+---+---------------------------+ | A | B | C nil true false | | | +---+-----------------------+ | nil | nil | nil nil nil | | nil | true | nil true true | | nil | false | nil true false | | | | | | true | nil | nil true true | | true | true | true true true | | true | false | true true false | | | | | | false | nil | nil true false | | false | true | true true false | | false | false | false false false | +-------+-------+-----------------------+
Maximum of three (unbalanced).
maxu A, B, C +-------+---+---------------------------+ | A | B | C nil true false | | | +---+-----------------------+ | nil | nil | nil true false | | nil | true | true true false | | nil | false | false false false | | | | | | true | nil | true true false | | true | true | true true false | | true | false | false false false | | | | | | false | nil | false false false | | false | true | false false false | | false | false | false false false | +-------+-------+-----------------------+
Interpolation quadratic coefficient.
In modulo 3 arithmetic, a polynomial with values A, B, C at positions 0, 1, 2 can be computed as -(A + B + C) * x * x + (C - B) * x + A. For that reason, the negated sum of three trits modulo 3 has got the funny name ipqc.
ipqc A, B, C +-------+---+---------------------------+ | A | B | C false nil true | | | +---+-----------------------+ | false | false | nil false true | | false | nil | false true nil | | false | true | true nil false | | | | | | nil | false | false true nil | | nil | nil | true nil false | | nil | true | nil false true | | | | | | true | false | true nil false | | true | nil | nil false true | | true | true | false true nil | +-------+-------+-----------------------+
Summation.
A result trit and a carry trit can hold the sum of three operand trits and a carry trit. Thus, addition of three numerical values can be implemented efficiently in ternary arithmetic based on this super addition operator with four trit arguments.
sum A, B, C, D +-------+---+---------------------------+ | A | B | C f f f n n n t t t | | | +---------------------------+ | | | D f n t f n t f n t | | | +---+-----------------------+ | false | false | f n t n t f t f n | | false | nil | n t f t f n f n t | | false | true | t f n f n t n t f | | | | | | nil | false | n t f t f n f n t | | nil | nil | t f n f n t n t f | | nil | true | f n t n t f t f n | | | | | | true | false | t f n f n t n t f | | true | nil | f n t n t f t f n | | true | true | n t f t f n f n t | +-------+-------+-----------------------+
Summation carry.
sumc A, B, C, D +-------+---+---------------------------+ | A | B | C f f f n n n t t t | | | +---------------------------+ | | | D f n t f n t f n t | | | +---+-----------------------+ | false | false | f f f f f n f n n | | false | nil | f f n f n n n n n | | false | true | f n n n n n n n t | | | | | | nil | false | f f n f n n n n n | | nil | nil | f n n n n n n n t | | nil | true | n n n n n t n t t | | | | | | true | false | f n n n n n n n t | | true | nil | n n n n n t n t t | | true | true | n n t n t t t t t | +-------+-------+-----------------------+
Summation carry (unbalanced).
sumcu A, B, C, D +-------+---+---------------------------+ | A | B | C n n n t t t f f f | | | +---------------------------+ | | | D n t f n t f n t f | | | +---+-----------------------+ | nil | nil | n n n n n t n t t | | nil | true | n n t n t t t t t | | nil | false | n t t t t t t t f | | | | | | true | nil | n n t n t t t t t | | true | true | n t t t t t t t f | | true | false | t t t t t f t f f | | | | | | false | nil | n t t t t t t t f | | false | true | t t t t t f t f f | | false | false | t t f t f f f f f | +-------+-------+-----------------------+
Multiplex. The first argument determines which one of the other arguments to return.
mpx A, B, C, D +-------+---+---------------------------+ | A | B | C n n n t t t f f f | | | +---------------------------+ | | | D n t f n t f n t f | | | +---+-----------------------+ | nil | nil | n n n n n n n n n | | nil | true | t t t t t t t t t | | nil | false | f f f f f f f f f | | | | | | true | nil | n n n t t t f f f | | true | true | n n n t t t f f f | | true | false | n n n t t t f f f | | | | | | false | nil | n t f n t f n t f | | false | true | n t f n t f n t f | | false | false | n t f n t f n t f | +-------+-------+-----------------------+
$trit->generic($op_name, @args) evaluates a generic operator with the given arguments.
$trit->generic($op_name, @args)
Generic operator names consist of a letter and a number of digits from 0 to 2. Each letter stands for an operator signature and determines the number of digits completely describing the operator. The digits are mapped to trits nil, true, false, as with from_int_u.
c - constant, 1 digit designating the constant. Example: c1 is equivalent to true.
u - unary operator, 3 digits designating the result from nil, true, false. Example: u021 is equivalent to not.
b - binary operator, 9 digits designating the result from 9 possible pairs of input trits. Example: b000021012 is equivalent to xor.
s - symmetric ternary operator, 10 digits designating the result from 10 possible combinations of input trits (only enumerating the lexically first instance of permutations). Example: s0122010120 is equivalent to add.
t - ternary operator, 27 digits designating the result from 27 possible triples of input trits (lexically sorted). Example: t000010002002000202010110000 is equivalent to subc.
q - symmetric quaternary operator, 15 digits designating the result from 15 possible combinations of input trits (only enumerating the lexically first instance of permutations). Example: q000102100211022 is equivalent to sumc.
Q - quaternary operator, 81 digits designating the result from 81 possible quadruples of input trits (lexically sorted).
Trit inspection: $trit->Trit($n) returns $trit if $n is 0, otherwise nil.
$trit->Trit($n)
$trit
$n
Trit inspection: $trit->Trits returns ($trit), a list with one element.
$trit->Trits
($trit)
$trit->Rtrits returns an empty list if $trit is nil, otherwise ($trit), a list with one element.
$trit->Rtrits
$trit->Sign returns $trit.
$trit->Sign
$trit->as_int returns an integer number, 0 for nil, 1 for true, and -1 for false.
$trit->as_int
$trit->as_int_u returns an integer number, 0 for nil, 1 for true, and 2 for false. $trit->as_int_v does the same. $trit->res_mod3 does the same.
$trit->as_int_u
$trit->as_int_v
$trit->res_mod3
$trit->as_string returns a string, '$nil' for nil, '$true' for true, and '$false' for false.
$trit->as_string
'$nil'
'$true'
'$false'
$trit->is_equal($obj) returns true if $trit->Rtrits and $obj->Rtrits are identical lists, otherwise false. This means a single trit is regarded as equal to itself and any word with the same least significant trit and no other non-nil trits.
$trit->is_equal($obj)
$obj->Rtrits
Multiplex. $trit->Mpx($case_n, $case_t, $case_f) with three arbitrary arguments returns $case_n if $trit is nil, $case_t if $trit is true, or $case_f if $trit is false.
$trit->Mpx($case_n, $case_t, $case_f)
$case_n
$case_t
$case_f
$trit->is_nil returns boolean true if $trit is nil, otherwise false.
$trit->is_nil
$trit->is_true returns boolean true if $trit is true, otherwise false.
$trit->is_true
$trit->is_false returns boolean true if $trit is false, otherwise false.
$trit->is_false
$trit->as_bool returns undef if $trit is nil, 1 (boolean true) if $trit is true, or an empty string (boolean false) if $trit is false.
$trit->as_bool
1
$trit->as_modint converts $trit to a Math::ModInt object, mapping nil to mod(0, 3), true to mod(1, 3), and false to mod(2, 3).
$trit->as_modint
The Perl extension Math::ModInt (available on CPAN) must be installed for this to work, otherwise as_modint will raise a run-time exception.
All constructors are class methods. They may raise an exception when called with unexpected arguments.
Math::Logic::Ternary->from_bool($arg) returns nil if $arg is undefined, false if $arg is defined but false, or true if $arg is true.
Math::Logic::Ternary->from_bool($arg)
$arg
Math::Logic::Ternary->from_sign($int) returns nil if $int is zero, true if $int is positive, or false if $int is negative.
Math::Logic::Ternary->from_sign($int)
$int
Math::Logic::Ternary->from_remainder($int) returns nil if $int is equivalent to 0 (modulo 3), true if $int is equivalent to 1 (modulo 3), or false if $int is equivalent to 2 (modulo 3).
Math::Logic::Ternary->from_remainder($int)
Math::Logic::Ternary->from_int($int) returns nil if $int is 0, true if $int is 1, or false if $int is -1.
Math::Logic::Ternary->from_int($int)
Math::Logic::Ternary->from_int_u($int) returns nil if $int is 0, true if $int is 1, or false if $int is 2.
Math::Logic::Ternary->from_int_u($int)
Math::Logic::Ternary->from_string($str) returns nil if $str is 'nil' or '$nil', true if $str is 'true' or '$true', and false if $str is 'false' or '$false'.
Math::Logic::Ternary->from_string($str)
$str
'nil'
'true'
'false'
Math::Logic::Ternary->from_modint($obj) returns nil or true or false if $obj is a Math::ModInt object and $obj->modulus is 3. A residue of 0, 1, or 2 maps to nil, true, or false, respectively.
Math::Logic::Ternary->from_modint($obj)
$obj
$obj->modulus
Math::Logic::Ternary->from_various($arg) guesses the type of its argument and calls one of the more specific constructors (but not from_remainder).
Math::Logic::Ternary->from_various($arg)
Math::Logic::Ternary->make_generic($op_name) returns an operator coderef defined by a generic operator name. It can subsequently be called as a method on trits.
Math::Logic::Ternary->make_generic($op_name)
Example:
$foo = Math::Logic::Ternary::Trit->make_generic('b021210102'); $bar = true->$foo(false); # $bar = nil $bar = $foo->(true, false); # $bar = nil
On the syntax of generic operator names, see "generic".
Math::Logic::Ternary->trit_operators returns a list of listrefs with all currently implemented named trit operators with these contents:
Math::Logic::Ternary->trit_operators
[$name, $min_args, $var_args, $ret_vals, $arithmetic]
$name is the name of the operator, $min_args is the minimum number of arguments, $var_args is the number of optional arguments, $ret_vals is the number of return values, $arithmetic is undefined unless the operator is an arithmetic operator belonging to balanced (= 0), unbalanced (= 1), or negative base (= 2) arithmetic.
$name
$min_args
$var_args
$ret_vals
$arithmetic
Currently, $var_args will be 0 and $ret_vals will be 1 for all list entries. This may change in future releases.
"generic" or "make_generic" was called with an invalid operator name.
An operator was called with too few operands.
A constructor taking an integer argument was called with an argument outside its defined range.
"from_string" was called with an invalid trit name.
"from_modint" was called with an invalid argument, either a modular integer with a modulus other than 3 or not a Math::ModInt object at all.
"from_various" was called with an invalid argument.
"as_modint" was called on a platform where Math::ModInt can not be loaded. Installing Math::ModInt from CPAN should resolve this problem.
Martin Becker <becker-cpan-mp@cozap.com>
Copyright (c) 2012-2017 by Martin Becker, Blaubeuren. All rights reserved.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.0 or, at your option, any later version of Perl 5 you may have available.
To install Math::Logic::Ternary, copy and paste the appropriate command in to your terminal.
cpanm
cpanm Math::Logic::Ternary
CPAN shell
perl -MCPAN -e shell install Math::Logic::Ternary
For more information on module installation, please visit the detailed CPAN module installation guide.