Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

mm0-ification of set.mm #77

Open
Lakedaemon opened this issue Apr 1, 2021 · 1 comment
Open

mm0-ification of set.mm #77

Lakedaemon opened this issue Apr 1, 2021 · 1 comment

Comments

@Lakedaemon
Copy link

If I understand set.mm0 correctly, you suggest to remove

' axiom df_tru {x2: setvar}: $ wb wtru (wi (wal x2 (wceq (cv x2) (cv x2))) (wal x2 (wceq (cv x2) (cv x2)))) $;

and to have a term with a prefix

'term wtru: wff;
'prefix wtru: $T.$ prec max;

then, you have an axiom

'axiom tru: $ T. $;

Why not define wtru as a definition with the formula "phi <-> phi" ?
and have theorem tru : $ T. $

Maybe because the definition would then use a dummy variable of the wff sort which is strict ? so this is forbidden, right ?

So I guess that explains why df_tru uses (wi (wal x2 (wceq (cv x2) (cv x2))) (wal x2 (wceq (cv x2) (cv x2))))
to define wtru (dummy var of the setvar sort, which is not strict)

But this would force set.mm.mm0 to define setvar, cv ... early just to define wtru.
So, it is simpler to have wtru as a term and an axiom, right ?

@digama0
Copy link
Owner

digama0 commented Apr 1, 2021

Why not define wtru as a definition with the formula "phi <-> phi" ?

Because this is not a valid definition in MM0; phi is unbound.

Maybe because the definition would then use a dummy variable of the wff sort which is strict ? so this is forbidden, right ?

There are two issues. This is the immediate one - if you tried to write the definition it would be rejected because phi is a dummy variable and the sort is strict. But even if you remove the strict modifier on wff it still wouldn't be allowed, because all dummy variables have to either be bound in the definition or else have to be parameters to the definition. So you could define

def tru (a : wff) = $ a <-> a $;

but then it would have to be used like tru a instead of just tru - it isn't a dummy variable at all. In fact in MM0 there is no way to construct a nullary wff using only wn and wi and definitions, because there are no binders and no nullary constructors so every term of type wff has a (necessarily free) wff variable in it. I consider set.mm's (old, see below) definition of df-tru suspect for this reason.

Once you have binders, it is possible to define closed wff expressions, like A. x x = x, and you could take something like this (or A. x x = x <-> A. x x = x to get something that really requires no non-propositional axioms to prove) as the definition of true. There was a discussion about doing this in set.mm a while ago, and this is now the official definition of df-tru. Personally, I think it is simpler to keep the propositional fragment separate and just axiomatize a truth constant; it's trivial to validate this axiom in the metatheory so I see no reason not to.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants