Metamath Proof Explorer


Theorem unxpwdom3

Description: Weaker version of unxpwdom where a function is required only to be cancellative, not an injection. D and B are to be thought of as "large" "horizonal" sets, the others as "small". Because the operator is row-wise injective, but the whole row cannot inject into A , each row must hit an element of B ; by column injectivity, each row can be identified in at least one way by the B element that it hits and the column in which it is hit. (Contributed by Stefan O'Rear, 8-Jul-2015)MOVABLE

Ref Expression
Hypotheses unxpwdom3.av ( 𝜑𝐴𝑉 )
unxpwdom3.bv ( 𝜑𝐵𝑊 )
unxpwdom3.dv ( 𝜑𝐷𝑋 )
unxpwdom3.ov ( ( 𝜑𝑎𝐶𝑏𝐷 ) → ( 𝑎 + 𝑏 ) ∈ ( 𝐴𝐵 ) )
unxpwdom3.lc ( ( ( 𝜑𝑎𝐶 ) ∧ ( 𝑏𝐷𝑐𝐷 ) ) → ( ( 𝑎 + 𝑏 ) = ( 𝑎 + 𝑐 ) ↔ 𝑏 = 𝑐 ) )
unxpwdom3.rc ( ( ( 𝜑𝑑𝐷 ) ∧ ( 𝑎𝐶𝑐𝐶 ) ) → ( ( 𝑐 + 𝑑 ) = ( 𝑎 + 𝑑 ) ↔ 𝑐 = 𝑎 ) )
unxpwdom3.ni ( 𝜑 → ¬ 𝐷𝐴 )
Assertion unxpwdom3 ( 𝜑𝐶* ( 𝐷 × 𝐵 ) )

Proof

Step Hyp Ref Expression
1 unxpwdom3.av ( 𝜑𝐴𝑉 )
2 unxpwdom3.bv ( 𝜑𝐵𝑊 )
3 unxpwdom3.dv ( 𝜑𝐷𝑋 )
4 unxpwdom3.ov ( ( 𝜑𝑎𝐶𝑏𝐷 ) → ( 𝑎 + 𝑏 ) ∈ ( 𝐴𝐵 ) )
5 unxpwdom3.lc ( ( ( 𝜑𝑎𝐶 ) ∧ ( 𝑏𝐷𝑐𝐷 ) ) → ( ( 𝑎 + 𝑏 ) = ( 𝑎 + 𝑐 ) ↔ 𝑏 = 𝑐 ) )
6 unxpwdom3.rc ( ( ( 𝜑𝑑𝐷 ) ∧ ( 𝑎𝐶𝑐𝐶 ) ) → ( ( 𝑐 + 𝑑 ) = ( 𝑎 + 𝑑 ) ↔ 𝑐 = 𝑎 ) )
7 unxpwdom3.ni ( 𝜑 → ¬ 𝐷𝐴 )
8 3 2 xpexd ( 𝜑 → ( 𝐷 × 𝐵 ) ∈ V )
9 simprr ( ( ( 𝜑𝑎𝐶 ) ∧ ( 𝑑𝐷 ∧ ( 𝑎 + 𝑑 ) ∈ 𝐵 ) ) → ( 𝑎 + 𝑑 ) ∈ 𝐵 )
10 simplr ( ( ( 𝜑𝑎𝐶 ) ∧ ( 𝑑𝐷 ∧ ( 𝑎 + 𝑑 ) ∈ 𝐵 ) ) → 𝑎𝐶 )
11 6 an4s ( ( ( 𝜑𝑎𝐶 ) ∧ ( 𝑑𝐷𝑐𝐶 ) ) → ( ( 𝑐 + 𝑑 ) = ( 𝑎 + 𝑑 ) ↔ 𝑐 = 𝑎 ) )
12 11 anassrs ( ( ( ( 𝜑𝑎𝐶 ) ∧ 𝑑𝐷 ) ∧ 𝑐𝐶 ) → ( ( 𝑐 + 𝑑 ) = ( 𝑎 + 𝑑 ) ↔ 𝑐 = 𝑎 ) )
13 12 adantlrr ( ( ( ( 𝜑𝑎𝐶 ) ∧ ( 𝑑𝐷 ∧ ( 𝑎 + 𝑑 ) ∈ 𝐵 ) ) ∧ 𝑐𝐶 ) → ( ( 𝑐 + 𝑑 ) = ( 𝑎 + 𝑑 ) ↔ 𝑐 = 𝑎 ) )
14 10 13 riota5 ( ( ( 𝜑𝑎𝐶 ) ∧ ( 𝑑𝐷 ∧ ( 𝑎 + 𝑑 ) ∈ 𝐵 ) ) → ( 𝑐𝐶 ( 𝑐 + 𝑑 ) = ( 𝑎 + 𝑑 ) ) = 𝑎 )
15 14 eqcomd ( ( ( 𝜑𝑎𝐶 ) ∧ ( 𝑑𝐷 ∧ ( 𝑎 + 𝑑 ) ∈ 𝐵 ) ) → 𝑎 = ( 𝑐𝐶 ( 𝑐 + 𝑑 ) = ( 𝑎 + 𝑑 ) ) )
16 eqeq2 ( 𝑦 = ( 𝑎 + 𝑑 ) → ( ( 𝑐 + 𝑑 ) = 𝑦 ↔ ( 𝑐 + 𝑑 ) = ( 𝑎 + 𝑑 ) ) )
17 16 riotabidv ( 𝑦 = ( 𝑎 + 𝑑 ) → ( 𝑐𝐶 ( 𝑐 + 𝑑 ) = 𝑦 ) = ( 𝑐𝐶 ( 𝑐 + 𝑑 ) = ( 𝑎 + 𝑑 ) ) )
18 17 rspceeqv ( ( ( 𝑎 + 𝑑 ) ∈ 𝐵𝑎 = ( 𝑐𝐶 ( 𝑐 + 𝑑 ) = ( 𝑎 + 𝑑 ) ) ) → ∃ 𝑦𝐵 𝑎 = ( 𝑐𝐶 ( 𝑐 + 𝑑 ) = 𝑦 ) )
19 9 15 18 syl2anc ( ( ( 𝜑𝑎𝐶 ) ∧ ( 𝑑𝐷 ∧ ( 𝑎 + 𝑑 ) ∈ 𝐵 ) ) → ∃ 𝑦𝐵 𝑎 = ( 𝑐𝐶 ( 𝑐 + 𝑑 ) = 𝑦 ) )
20 7 adantr ( ( 𝜑𝑎𝐶 ) → ¬ 𝐷𝐴 )
21 1 ad2antrr ( ( ( 𝜑𝑎𝐶 ) ∧ ∀ 𝑑𝐷 ¬ ( 𝑎 + 𝑑 ) ∈ 𝐵 ) → 𝐴𝑉 )
22 oveq2 ( 𝑑 = 𝑏 → ( 𝑎 + 𝑑 ) = ( 𝑎 + 𝑏 ) )
23 22 eleq1d ( 𝑑 = 𝑏 → ( ( 𝑎 + 𝑑 ) ∈ 𝐵 ↔ ( 𝑎 + 𝑏 ) ∈ 𝐵 ) )
24 23 notbid ( 𝑑 = 𝑏 → ( ¬ ( 𝑎 + 𝑑 ) ∈ 𝐵 ↔ ¬ ( 𝑎 + 𝑏 ) ∈ 𝐵 ) )
25 24 rspcv ( 𝑏𝐷 → ( ∀ 𝑑𝐷 ¬ ( 𝑎 + 𝑑 ) ∈ 𝐵 → ¬ ( 𝑎 + 𝑏 ) ∈ 𝐵 ) )
26 25 adantl ( ( ( 𝜑𝑎𝐶 ) ∧ 𝑏𝐷 ) → ( ∀ 𝑑𝐷 ¬ ( 𝑎 + 𝑑 ) ∈ 𝐵 → ¬ ( 𝑎 + 𝑏 ) ∈ 𝐵 ) )
27 4 3expa ( ( ( 𝜑𝑎𝐶 ) ∧ 𝑏𝐷 ) → ( 𝑎 + 𝑏 ) ∈ ( 𝐴𝐵 ) )
28 elun ( ( 𝑎 + 𝑏 ) ∈ ( 𝐴𝐵 ) ↔ ( ( 𝑎 + 𝑏 ) ∈ 𝐴 ∨ ( 𝑎 + 𝑏 ) ∈ 𝐵 ) )
29 27 28 sylib ( ( ( 𝜑𝑎𝐶 ) ∧ 𝑏𝐷 ) → ( ( 𝑎 + 𝑏 ) ∈ 𝐴 ∨ ( 𝑎 + 𝑏 ) ∈ 𝐵 ) )
30 29 orcomd ( ( ( 𝜑𝑎𝐶 ) ∧ 𝑏𝐷 ) → ( ( 𝑎 + 𝑏 ) ∈ 𝐵 ∨ ( 𝑎 + 𝑏 ) ∈ 𝐴 ) )
31 30 ord ( ( ( 𝜑𝑎𝐶 ) ∧ 𝑏𝐷 ) → ( ¬ ( 𝑎 + 𝑏 ) ∈ 𝐵 → ( 𝑎 + 𝑏 ) ∈ 𝐴 ) )
32 26 31 syld ( ( ( 𝜑𝑎𝐶 ) ∧ 𝑏𝐷 ) → ( ∀ 𝑑𝐷 ¬ ( 𝑎 + 𝑑 ) ∈ 𝐵 → ( 𝑎 + 𝑏 ) ∈ 𝐴 ) )
33 32 impancom ( ( ( 𝜑𝑎𝐶 ) ∧ ∀ 𝑑𝐷 ¬ ( 𝑎 + 𝑑 ) ∈ 𝐵 ) → ( 𝑏𝐷 → ( 𝑎 + 𝑏 ) ∈ 𝐴 ) )
34 5 ex ( ( 𝜑𝑎𝐶 ) → ( ( 𝑏𝐷𝑐𝐷 ) → ( ( 𝑎 + 𝑏 ) = ( 𝑎 + 𝑐 ) ↔ 𝑏 = 𝑐 ) ) )
35 34 adantr ( ( ( 𝜑𝑎𝐶 ) ∧ ∀ 𝑑𝐷 ¬ ( 𝑎 + 𝑑 ) ∈ 𝐵 ) → ( ( 𝑏𝐷𝑐𝐷 ) → ( ( 𝑎 + 𝑏 ) = ( 𝑎 + 𝑐 ) ↔ 𝑏 = 𝑐 ) ) )
36 33 35 dom2d ( ( ( 𝜑𝑎𝐶 ) ∧ ∀ 𝑑𝐷 ¬ ( 𝑎 + 𝑑 ) ∈ 𝐵 ) → ( 𝐴𝑉𝐷𝐴 ) )
37 21 36 mpd ( ( ( 𝜑𝑎𝐶 ) ∧ ∀ 𝑑𝐷 ¬ ( 𝑎 + 𝑑 ) ∈ 𝐵 ) → 𝐷𝐴 )
38 20 37 mtand ( ( 𝜑𝑎𝐶 ) → ¬ ∀ 𝑑𝐷 ¬ ( 𝑎 + 𝑑 ) ∈ 𝐵 )
39 dfrex2 ( ∃ 𝑑𝐷 ( 𝑎 + 𝑑 ) ∈ 𝐵 ↔ ¬ ∀ 𝑑𝐷 ¬ ( 𝑎 + 𝑑 ) ∈ 𝐵 )
40 38 39 sylibr ( ( 𝜑𝑎𝐶 ) → ∃ 𝑑𝐷 ( 𝑎 + 𝑑 ) ∈ 𝐵 )
41 19 40 reximddv ( ( 𝜑𝑎𝐶 ) → ∃ 𝑑𝐷𝑦𝐵 𝑎 = ( 𝑐𝐶 ( 𝑐 + 𝑑 ) = 𝑦 ) )
42 vex 𝑑 ∈ V
43 vex 𝑦 ∈ V
44 42 43 op1std ( 𝑥 = ⟨ 𝑑 , 𝑦 ⟩ → ( 1st𝑥 ) = 𝑑 )
45 44 oveq2d ( 𝑥 = ⟨ 𝑑 , 𝑦 ⟩ → ( 𝑐 + ( 1st𝑥 ) ) = ( 𝑐 + 𝑑 ) )
46 42 43 op2ndd ( 𝑥 = ⟨ 𝑑 , 𝑦 ⟩ → ( 2nd𝑥 ) = 𝑦 )
47 45 46 eqeq12d ( 𝑥 = ⟨ 𝑑 , 𝑦 ⟩ → ( ( 𝑐 + ( 1st𝑥 ) ) = ( 2nd𝑥 ) ↔ ( 𝑐 + 𝑑 ) = 𝑦 ) )
48 47 riotabidv ( 𝑥 = ⟨ 𝑑 , 𝑦 ⟩ → ( 𝑐𝐶 ( 𝑐 + ( 1st𝑥 ) ) = ( 2nd𝑥 ) ) = ( 𝑐𝐶 ( 𝑐 + 𝑑 ) = 𝑦 ) )
49 48 eqeq2d ( 𝑥 = ⟨ 𝑑 , 𝑦 ⟩ → ( 𝑎 = ( 𝑐𝐶 ( 𝑐 + ( 1st𝑥 ) ) = ( 2nd𝑥 ) ) ↔ 𝑎 = ( 𝑐𝐶 ( 𝑐 + 𝑑 ) = 𝑦 ) ) )
50 49 rexxp ( ∃ 𝑥 ∈ ( 𝐷 × 𝐵 ) 𝑎 = ( 𝑐𝐶 ( 𝑐 + ( 1st𝑥 ) ) = ( 2nd𝑥 ) ) ↔ ∃ 𝑑𝐷𝑦𝐵 𝑎 = ( 𝑐𝐶 ( 𝑐 + 𝑑 ) = 𝑦 ) )
51 41 50 sylibr ( ( 𝜑𝑎𝐶 ) → ∃ 𝑥 ∈ ( 𝐷 × 𝐵 ) 𝑎 = ( 𝑐𝐶 ( 𝑐 + ( 1st𝑥 ) ) = ( 2nd𝑥 ) ) )
52 8 51 wdomd ( 𝜑𝐶* ( 𝐷 × 𝐵 ) )