[Haskell-cafe] What puts False before True?
Albert Y. C. Lai
trebla at vex.net
Tue Jun 5 01:16:44 EDT 2007
Scott Brickner wrote:
> It's actually not arbitrary.
[...]
> A ≤ B iff A ⊆ B
> A ⊆ B iff (x ∊ A) ⇒ (x ∊ B)
Alternatively and dually but equally naturally,
A ≥ B iff A ⊆ B iff (x ∊ A) ⇒ (x ∊ B)
and then we would have False > True.
Many of you are platonists rather than formalists; you have a strong
conviction in your intuition, and you call your intuition natural. You
think ∅≤U is more natural than ∅≥U because ∅ has fewer elements than U.
(Why else would you consider it unnatural to associate ≥ with ⊆?) But
that is only one of many natural intuitions.
There are two kinds of natural intuitions: disjunctive ones and
conjunctive ones. The elementwise intuition above is a disjunctive one.
It says, we should declare {0}≤{0,1} because {0} corresponds to the
predicate (x=0), {0,1} corresponds to the predicate (x=0 or x=1), you
see the latter has more disjuncts, so it should be a larger predicate.
However, {0} and {0,1} are toy, artificial sets, tractible to enumerate
individuals. As designers of programs and systems, we deal with real,
natural sets, intractible to enumerate individuals. For example, when
you design a data type to be a Num instance, you write down two
QuickCheck properties:
x + y = y + x
x * y = y * x
And lo, you have specified a conjunction of two predicates! The more
properties (conjuncts) you add, the closer you get to ∅ and further from
U, when you look at the set of legal behaviours. Therefore a conjunctive
intuition deduces ∅≥U to be more natural.
More information about the Haskell-Cafe
mailing list