On 8/11/16 2:17 AM, Mario Carneiro wrote:
...
In the course of this project, I'm discovering a number of subtle errors
in set.mm <http://set.mm> which I'm fixing as I go along. There were two
big issues that needed adjustments in many places. First, class
constants that have no definition are not conservative. This often
results when the definitional axiom is commented out, but the class
constant is not. In these cases I just commented out the class constant.
What do you mean by "not conservative"? Can you give an example?
I would prefer using a separate connective for df-sbc rather than add a new axiom, if that's what it takes.
Class variables are intended to range over class builders, so there is some ph such that A represents { z | ph }.
If abid2 A = { z | z e.2 A } can be proved with strict e., e.2, and e.3 all the way back to the definitions (I haven't checked),
ax-14c $a |- ( x = y -> ( x e.2 A -> y e.2 A ) )
This is ugly.
and I'm not sure where we're getting that one from, because that's a
stronger statement than ax-14. In other words, e.2 is conservative over
e., but e.3 is not conservative over e.2 because with only e.2 (and the
axiom df-clab) you are missing a congruence axiom. Also, keep in mind
(Why do you use "congruence" instead of "equality" as in set.mm?)
Otherwise you will need to do the same trick of having
df-clel take a hypothesis to ensure it is conservative.
This would be fine, since we already do that for df-cleq. Some of the wording on the MPE home page class explanation will have to be changed (as well as set.mm).
On 8/11/16 12:27 PM, Mario Carneiro wrote:
(Why do you use "congruence" instead of "equality" as in set.mm
<http://set.mm>?)
The command "equality" is used to introduce an equality operator, that
is, 'wb' and 'wceq'. Command 'congruence' is used to introduce an
equality *theorem*, also known as a congruence law, like notbii.
Obviously notbii is not itself an equality.
In set.mm we have been saying that things connected by <-> are "(logically) equivalent" and by = are "equal". I only recall seeing "congruence" used in the context of equivalence relations and quotient structures but not for logical equivalence. Have you seen your usage in the literature?
Adding a new axiom to ZFC just because of inadequate definition checkers sends the very wrong message that ZFC itself is inadequate.
While this may be a useful exercise, I don't think we should change to non-overloaded = and e. connectives for the standard set.mm. Our present method is very convenient, and the various class theory proofs (Levy, T&Z, Quine) show that df-clab/cleq/clel are an eliminable ZFC extension, even if our present definition checking tools can't prove it. They meet all of the things one expects of a definition: any theorem using class theory, and all of its proof steps, can be unambiguously translated to an equivalent theorem and proof steps in pure ZFC language without class theory. The purpose of class theory is simply human convenience, and it serves no mathematical purpose.
On Fri, 12 Aug 2016 00:31:28 -0400, Mario Carneiro <di....@gmail.com> wrote:
> I've introduced a few new keywords for the $j statement, and a little
> section to make use of it. Rather than explain it I'll just use the
> existing comments.
Whew. My mind is exploding from the meta-meta-nature of this.
So let me step back. Metamath by itself proves theorems from axioms;
axioms, of course, are simply accepted without proof.
This discussion is about "$j" statements, along with at least one verifier of them,
so that certain assertions about the *axioms* can also be checked. Right?
It seems to me that these $j statements have similarities to
introspective operations in some programming languages.
Would any of those techniques in the other languages be helpful?
I'm speaking imprecisely because I honestly don't know.
It seems like this $j language basically exists to allow checked assertions
that certain properties of the axioms hold.
FL, you should find out what other axioms you would prefer in order to prove this - I couldn't find a source with your exact six axioms, so I'm not sure what it is supposed to look like.
But as you have noticedit is definitely impossible to prove that.
On 8/12/16 12:31 AM, Mario Carneiro wrote:
Once more, let me note that justel is not currently provable, so we need
to have an axiom for it such as ax-14c. I'm not sure why this is such a
surprise to you; x e. A is genuinely new primitive notation introduced
in the class abstractions section, regardless of how you justify it.
I don't get why we need to prove justel without df-clel. There is an implicit invisible function cv that takes in x and puts out a class expression "cv(x)". This is made explicit in the mm solitaire applet, where cv(x) must be explicit in the internal definition and is replaced by a blank symbol on the screen. It is a just a special case of B e. A where B is replaced with a compound class expression.
Obviously it's going to need an equality axiom, just like everything
else in the language. For the right form of the hypothesis, you have to
be careful since you can't quantify over classes, so a trick like
df-cleq won't work here.
We aren't quantifying over classes. We are quantifying x in the invisible cv(x).
The algorithm for eliminating class expressions is unambiguous, and every class expression can be eliminated with it. It has been proved (on paper) by several authors using only FOL and ax-ext, There is no mention of your additional axiom in those proofs. Are those proofs wrong?
What is an example of a theorem in class notation that would lead to a contradiction or extend the language in a non-eliminable way?
On Sat, Aug 13, 2016 at 12:11 PM, Mario Carneiro <di....@gmail.com> wrote:
> On Sat, Aug 13, 2016 at 2:52 PM, Stefan O'Rear <sor...@gmail.com> wrote:
>> At the FOL object level, ax-14c is not an axiom, it's a metatheorem.
>> It can be proven for cv using ax-14, it can be proven for abstractions
>> after unwinding df-clab, and it can be proven for defined constants
>> similarly.
>
>
> Right. This requires that the object level not have any class variables in
> it. Obvious, I know, and of course true for all the FOL proofs, but this is
> what's not true for metamath; we have to support also metavariables that
I assume you're talking about dummy variables in proofs here.
Dummy
variables in completed are very different from variables that exist
inside a proof because they can be substituted. If you have a
contradiction, you can have the same contradiction without wff or
class metavars by replacing all of them with F. and (/) respectively.
So the metatheorem handling of ax-14c can treat all class metavars as
(/).
I think ax-14c will be puzzling to a lot of people. I don't think the technical subtleties that make the Metamath representation different "under the hood" from what textbooks are doing "under the hood" is going to be of interest to most readers, who just want to see the "math", whose notation is essentially identical in set.mm and textbooks.
Rather than adding ax-14c, I would much prefer that df-clab, df-cleq, and df-clel become axioms. Since this is done in Levy's book, at least it is not without precedent. We just have to make it clear that they are eliminable, conservative extensions of ZFC and aren't true axioms, but the proof of conservation is outside of the scope of what can be done within the Metamath framework.
Am I correct that this would satisfy your definitional checking requirements?
As for df-sbc, we can introduce a new notation rather than calling it an axiom. Or we could change the notation for df-sb instead. I'm open to suggestions.
I think it would be a major mistake to mix up pure ZFC and class theory at the axiomatic level, even if it means fewer axioms. It would certainly be very confusing to beginners. We should be able to discard df-clab, df-cleq, df-clel (and all that depends on them - most of set.mm, to be sure) and be left with the $a's of pure ZFC set theory in the primitive language. It will still be contaminated with wceq and wcel, but that is easy to eliminate if the class stuff is stripped out.