On Wednesday, 18 December 2013 at 20:45:44 UTC, Timon Gehr wrote:

Giving up Eg. ¬(A ∧ B) → ¬A ∨ ¬B is actually a sensible thing to do in constructive logic.

It is common to give it up in fuzzy logic too, doesn't mean it is the first thing to throw out.

Anyway, the point in the discussion above is that of having a third value "uncertain"/"indeterminate" mapped to false and the consequences of that.

You don't want:
a<b == a>b, so ordering overlapping intervals is indeterminate

It is sensible to allow explicit:
bool(indeterminate)==false

If you then have:
[a,b]<[c,d] => indeterminate

And define == by < then it follows that:
[a,b]==[a,b] => indeterminate for a!=b

and:
bool([a,b]==[a,b]) => false

and therefore you would want:
bool([a,b]!=[a,b]) => true

Which is kind of tricky to achieve unless you have two types of indeterminate when I come to think of it, maybe you need indeterminate and not_indeterminate if you allow casts to bool… E.g. !indeterminate=> not_indeterminate and !not_indeterminate => indeterminate ?

Hm…

Reply via email to