Look for sbcan and those that immediately follow:
http://us.metamath.org/mpeuni/mmtheorems33.html#sbcan
They use class substitution (i.e., [. ].) instead of set substitution
(i.e., [ ]). My understanding is that class substitution is the one that
should be used in "higher-level" proof, with set substitution just being
used in turn to properly support class substitution. The "end-user"
theorems are probably easier to find for class substitution
(although, of course, in the end what you are going to substitute is a set anyway,
but not necessarily a set variable).
> Is using those theorems the best way to do substitution? Seems like
> there can be a lot of steps for something you would normally do in a
> single step in an informal proof.
I guess this is one of the prices you pay for having formal proofs (and
for having such a low level language like Metamath)
I don't understand how to handle substitutions in Metamath. If I usestdpc7 ⊢ (𝑥 = 𝑦 → ([𝑥 / 𝑦]𝜑 → 𝜑)),how do I then actually change y to x in 𝜑?
I don't see any suitable theorems to use. Like for instance:[𝑥 / 𝑦] (𝜑 ↔ 𝜓) ↔ ( [𝑥 / 𝑦]𝜑 ↔ [𝑥 / 𝑦]𝜓 ),[𝑥 / 𝑦] (𝜑 ∧ 𝜓) ↔ ( [𝑥 / 𝑦]𝜑 ∧ [𝑥 / 𝑦]𝜓 ).
They use class substitution (i.e., [. ].) instead of set substitution
(i.e., [ ]). My understanding is that class substitution is the one that
should be used in "higher-level" proof, with set substitution just being
used in turn to properly support class substitution. The "end-user"
theorems are probably easier to find for class substitutionMy limited experience confirms this: sbc* theorems get more used than their sb* counterparts outside of FOL.
(although, of course, in the end what you are going to substitute is a set anyway,
but not necessarily a set variable).I would rather think of it as: "In the end, what you are going to substitute is generally a term, not a variable"... which confirms that sbc* theorems are more useful than sb* theorems.
> Is using those theorems the best way to do substitution? Seems like
> there can be a lot of steps for something you would normally do in a
> single step in an informal proof.
I guess this is one of the prices you pay for having formal proofs (and
for having such a low level language like Metamath)I think that it is often possible to avoid "[ / ]-substitutions" (are they the ones called "implicit substitutions"?)
by modifying your proof a bit, and use "explicit substitution" instead (typically with steps like "x = A -> ( ph <-> ps )"). It would be interesting that someone with more practice confirms/infirms this.
We have been calling [. A / x ]. ph "explicit" (because it has an explicit substitution symbol) and "x = A -> ( ph <-> ps )" "implicit". See the descriptions of ~ sbie and ~ sbcie.
"x = A -> ( ph <-> ps )"
would be the way to state with an implicit substitution the same thing as
“[. A / x ]. ph <-> ps”
states explicitly, that is
“ps is the result of taking all instances of ‘x’ in ph, and substituting them with ‘A’.”
--
You received this message because you are subscribed to the Google Groups "Metamath" group.
To unsubscribe from this group and stop receiving emails from it, send an email to metamath+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/metamath/d19c8ebd-2d9c-4924-b798-0b3c62ec6182%40googlegroups.com.