On Mon, 18 May 2015 16:09:35 -0400, Mario Carneiro <
di....@gmail.com> wrote:
> > > If others are in agreement, I can put these on the todo list for the
> > > next update:
> > > xrltnr -> ltnri $p -. A < A $.
...
> > > ltne $p ( A < B -> B =/= A ) $.
> > > gtne $p ( A < B -> A =/= B ) $.
> On Mon, May 18, 2015 at 4:01 PM, Norman Megill <
n...@alum.mit.edu> wrote:
> > I thought that we had already decided not to go down this path with
> > out-of-domain behavior of real and complex number theorems, for several
> > reasons that were discussed here a few weeks ago.
...
> > 3. The behavior is dependent on accidental behavior of definitions
> > outside of their domains, so the theorems are non-portable and
> > "brittle".
Norm: In the end, you're the final arbiter. However, I think there is a fundamental
difference between ` ( A + B ) = ( B + A ) ` and ` ( A < B -> B =/= A ) `
in terms of maintainability and future flexibility. I think the latter construct is NOT brittle,
while I think the former construct is.
In ` ( A + B ) = ( B + A ) ` without *ANY* hypotheses, there's an implication that
` ( A + B ) ` produces a meaningful result that can ALWAYS be compared for equality,
no matter what types A and B are (including proper classes).
For many people, ` ( A + B ) ` makes no sense when applied (for example)
to proper classes, or anything else not in CC. Thus, it seems suspect
to compare their results using equality. Yes, it works today. But
it's just an accident of the current definitions that this works, and thus,
statements like` ( A + B ) = ( B + A ) ` are "brittle".
In contrast, I think ` ( A < B -> B =/= A ) `is fundamentally different and NOT brittle.
Once you know that ` A < B ` is true, it MUST be true that A and B
have types that are comparable using "<" (because otherwise you
could not prove that ` A < B ` !).
Thus, I think ` A < B -> ... does *NOT* invoke out-of-domain behavior,
but instead, when ` A < B ` is true that must mean that
A and B are *within* the expected domain of the relation.
I expect that "<" would NEVER be changed in such a way that
` A < B ` and ` A = B ` could be simultaneously true; to me
that would be a big bug in the definition.
Thus statements like ` ( A < B -> B =/= A ) `are *NOT* brittle, because
they *REQUIRE* the operands to be within the expected domain to apply.
In general, statements of the form ` A R B -> ...` mean that the RHS only applies
when the types of A and B are appropriate for relationship R,
and thus, they aren't brittle in the same way.
Under the current definitions, there is no *real* difference.
Structuring things to "not be brittle" seems reasonable, though.
> > 4. Only a few theorems can have their hypotheses removed in this fashion
> > due to happy coincidences for our particular set-theoretical
> > definitions. The poor user (especially a novice learning real number
> > arithmetic) is going to be confused not knowing when hypotheses are
> > needed and when they are not. For someone who hasn't traced back the
> > set-theoretical foundations of the definitions, it is seemingly random
> > and isn't intuitive at all.
I agree that avoiding confusion is a good thing!
But I think there's a potential simple rule here: Anything that can trace back to an
implication that "A R B" is true automatically implies the type hypotheses of A and B,
and thus the type hypotheses don't need to be separately stated.
On Mon, 18 May 2015 16:09:35 -0400, Mario Carneiro <
di....@gmail.com> wrote:
> (Note that I am aware that we have already discussed this, but thought it
> better not to point out DAW's apparent change of opinion. Since I have been
> in support of this approach from the beginning I didn't think it would be
> appropriate to play devil's advocate in this case. I won't make the
> proposed changes unless it is clear that the winds have indeed changed
> direction, though - I leave it to others to duke it out and let me know how it goes.)
Consistency? Why would I want that :-) ?
I hope that the above at least explains why I think they're different situations.
--- David A. Wheeler