Yes and No are basically like True or False. Iono is much different. Since negation is allowed in Llull, determining wether a model implies something is an NP Hard problem. My unification isn't an exhaustive search, therefore, for hard problems, Llull will just throw its hands up in the air and say "iono and i don't care to actually figure it out". Iono means that either theres no data about the thing you asked about, or that it just can't find it.
Anyway, traditionally And, Or, and Not have been defined for trinary as:
- And(s1,s2) = min(s1,s2)
- Or(s1,s2) = max(s1,s2)
- Not(1) = 1
- Not(0) = 2
- Not(2) = 0
If you check, these definitions make tons of sense. But to see why they really arent sufficent for my purposes maybe I should cover my unification algorithm. My unification algorithm works by breaking up statements in this manner (where s1, s2, s3 are all Llull statements) :
- s1 -> And(s2, s3) if And(s1->s3, s2 ->s3)
- s1 -> Or(s2, s3) if Or( s1->s3, s2->s3)
- s1 -> Not(s3) if Not(s1->s3)
Rough Example:
Sean is a CS/Math Major -> Sean Studies CS And Sean Studies Math
iff
Sean is a CS/MathMajor -> Sean Studies CS And Sean is a CS/Math Major -> Sean Studies Math
iff
Sean is a CS/MathMajor -> Sean Studies CS And Sean is a CS/Math Major -> Sean Studies Math
Seeing this, it would be tempting to believe in rules such as:
- And(s1, s2) -> s3 if Or(s1->s3, s1->s3)
- Suppose s1->s3 = 1. That is, Statement 1 doesn't tell us wether Statement 2 is True. Suppose s2 -> s3 = 0. That is, Statement 2 tells us that Statement 3 is False.
- Our algorithm gives us the wrong answer. It gives 1 when it should give 0.