Metamath Proof Explorer


Theorem sbc2or

Description: The disjunction of two equivalences for class substitution does not require a class existence hypothesis. This theorem tells us that there are only 2 possibilities for [ A / x ] ph behavior at proper classes, matching the sbc5 (false) and sbc6 (true) conclusions. This is interesting since dfsbcq and dfsbcq2 (from which it is derived) do not appear to say anything obvious about proper class behavior. Note that this theorem does not tell us that it is always one or the other at proper classes; it could "flip" between false (the first disjunct) and true (the second disjunct) as a function of some other variable y that ph or A may contain. (Contributed by NM, 11-Oct-2004) (Proof modification is discouraged.)

Ref Expression
Assertion sbc2or
|- ( ( [. A / x ]. ph <-> E. x ( x = A /\ ph ) ) \/ ( [. A / x ]. ph <-> A. x ( x = A -> ph ) ) )

Proof

Step Hyp Ref Expression
1 dfsbcq2
 |-  ( y = A -> ( [ y / x ] ph <-> [. A / x ]. ph ) )
2 eqeq2
 |-  ( y = A -> ( x = y <-> x = A ) )
3 2 anbi1d
 |-  ( y = A -> ( ( x = y /\ ph ) <-> ( x = A /\ ph ) ) )
4 3 exbidv
 |-  ( y = A -> ( E. x ( x = y /\ ph ) <-> E. x ( x = A /\ ph ) ) )
5 sb5
 |-  ( [ y / x ] ph <-> E. x ( x = y /\ ph ) )
6 1 4 5 vtoclbg
 |-  ( A e. _V -> ( [. A / x ]. ph <-> E. x ( x = A /\ ph ) ) )
7 6 orcd
 |-  ( A e. _V -> ( ( [. A / x ]. ph <-> E. x ( x = A /\ ph ) ) \/ ( [. A / x ]. ph <-> A. x ( x = A -> ph ) ) ) )
8 pm5.15
 |-  ( ( [. A / x ]. ph <-> E. x ( x = A /\ ph ) ) \/ ( [. A / x ]. ph <-> -. E. x ( x = A /\ ph ) ) )
9 vex
 |-  x e. _V
10 eleq1
 |-  ( x = A -> ( x e. _V <-> A e. _V ) )
11 9 10 mpbii
 |-  ( x = A -> A e. _V )
12 11 adantr
 |-  ( ( x = A /\ ph ) -> A e. _V )
13 12 con3i
 |-  ( -. A e. _V -> -. ( x = A /\ ph ) )
14 13 nexdv
 |-  ( -. A e. _V -> -. E. x ( x = A /\ ph ) )
15 11 con3i
 |-  ( -. A e. _V -> -. x = A )
16 15 pm2.21d
 |-  ( -. A e. _V -> ( x = A -> ph ) )
17 16 alrimiv
 |-  ( -. A e. _V -> A. x ( x = A -> ph ) )
18 14 17 2thd
 |-  ( -. A e. _V -> ( -. E. x ( x = A /\ ph ) <-> A. x ( x = A -> ph ) ) )
19 18 bibi2d
 |-  ( -. A e. _V -> ( ( [. A / x ]. ph <-> -. E. x ( x = A /\ ph ) ) <-> ( [. A / x ]. ph <-> A. x ( x = A -> ph ) ) ) )
20 19 orbi2d
 |-  ( -. A e. _V -> ( ( ( [. A / x ]. ph <-> E. x ( x = A /\ ph ) ) \/ ( [. A / x ]. ph <-> -. E. x ( x = A /\ ph ) ) ) <-> ( ( [. A / x ]. ph <-> E. x ( x = A /\ ph ) ) \/ ( [. A / x ]. ph <-> A. x ( x = A -> ph ) ) ) ) )
21 8 20 mpbii
 |-  ( -. A e. _V -> ( ( [. A / x ]. ph <-> E. x ( x = A /\ ph ) ) \/ ( [. A / x ]. ph <-> A. x ( x = A -> ph ) ) ) )
22 7 21 pm2.61i
 |-  ( ( [. A / x ]. ph <-> E. x ( x = A /\ ph ) ) \/ ( [. A / x ]. ph <-> A. x ( x = A -> ph ) ) )