Metamath Proof Explorer


Theorem mamufacex

Description: Every solution of the equation A * X = B for matrices A and B is a matrix. (Contributed by AV, 10-Feb-2019)

Ref Expression
Hypotheses mamudm.e 𝐸 = ( 𝑅 freeLMod ( 𝑀 × 𝑁 ) )
mamudm.b 𝐵 = ( Base ‘ 𝐸 )
mamudm.f 𝐹 = ( 𝑅 freeLMod ( 𝑁 × 𝑃 ) )
mamudm.c 𝐶 = ( Base ‘ 𝐹 )
mamudm.m × = ( 𝑅 maMul ⟨ 𝑀 , 𝑁 , 𝑃 ⟩ )
mamufacex.g 𝐺 = ( 𝑅 freeLMod ( 𝑀 × 𝑃 ) )
mamufacex.d 𝐷 = ( Base ‘ 𝐺 )
Assertion mamufacex ( ( ( 𝑀 ≠ ∅ ∧ 𝑃 ≠ ∅ ) ∧ ( 𝑅𝑉𝑌𝐷 ) ∧ ( 𝑀 ∈ Fin ∧ 𝑁 ∈ Fin ∧ 𝑃 ∈ Fin ) ) → ( ( 𝑋 × 𝑍 ) = 𝑌𝑍𝐶 ) )

Proof

Step Hyp Ref Expression
1 mamudm.e 𝐸 = ( 𝑅 freeLMod ( 𝑀 × 𝑁 ) )
2 mamudm.b 𝐵 = ( Base ‘ 𝐸 )
3 mamudm.f 𝐹 = ( 𝑅 freeLMod ( 𝑁 × 𝑃 ) )
4 mamudm.c 𝐶 = ( Base ‘ 𝐹 )
5 mamudm.m × = ( 𝑅 maMul ⟨ 𝑀 , 𝑁 , 𝑃 ⟩ )
6 mamufacex.g 𝐺 = ( 𝑅 freeLMod ( 𝑀 × 𝑃 ) )
7 mamufacex.d 𝐷 = ( Base ‘ 𝐺 )
8 2a1 ( 𝑍𝐶 → ( ( ( 𝑀 ≠ ∅ ∧ 𝑃 ≠ ∅ ) ∧ ( 𝑅𝑉𝑌𝐷 ) ∧ ( 𝑀 ∈ Fin ∧ 𝑁 ∈ Fin ∧ 𝑃 ∈ Fin ) ) → ( ( 𝑋 × 𝑍 ) = 𝑌𝑍𝐶 ) ) )
9 1 2 3 4 5 mamudm ( ( 𝑅𝑉 ∧ ( 𝑀 ∈ Fin ∧ 𝑁 ∈ Fin ∧ 𝑃 ∈ Fin ) ) → dom × = ( 𝐵 × 𝐶 ) )
10 9 adantlr ( ( ( 𝑅𝑉𝑌𝐷 ) ∧ ( 𝑀 ∈ Fin ∧ 𝑁 ∈ Fin ∧ 𝑃 ∈ Fin ) ) → dom × = ( 𝐵 × 𝐶 ) )
11 10 3adant1 ( ( ( 𝑀 ≠ ∅ ∧ 𝑃 ≠ ∅ ) ∧ ( 𝑅𝑉𝑌𝐷 ) ∧ ( 𝑀 ∈ Fin ∧ 𝑁 ∈ Fin ∧ 𝑃 ∈ Fin ) ) → dom × = ( 𝐵 × 𝐶 ) )
12 simpl ( ( ¬ 𝑍𝐶 ∧ ( ( 𝑀 ≠ ∅ ∧ 𝑃 ≠ ∅ ) ∧ ( 𝑅𝑉𝑌𝐷 ) ∧ ( 𝑀 ∈ Fin ∧ 𝑁 ∈ Fin ∧ 𝑃 ∈ Fin ) ) ) → ¬ 𝑍𝐶 )
13 12 intnand ( ( ¬ 𝑍𝐶 ∧ ( ( 𝑀 ≠ ∅ ∧ 𝑃 ≠ ∅ ) ∧ ( 𝑅𝑉𝑌𝐷 ) ∧ ( 𝑀 ∈ Fin ∧ 𝑁 ∈ Fin ∧ 𝑃 ∈ Fin ) ) ) → ¬ ( 𝑋𝐵𝑍𝐶 ) )
14 ndmovg ( ( dom × = ( 𝐵 × 𝐶 ) ∧ ¬ ( 𝑋𝐵𝑍𝐶 ) ) → ( 𝑋 × 𝑍 ) = ∅ )
15 11 13 14 syl2an2 ( ( ¬ 𝑍𝐶 ∧ ( ( 𝑀 ≠ ∅ ∧ 𝑃 ≠ ∅ ) ∧ ( 𝑅𝑉𝑌𝐷 ) ∧ ( 𝑀 ∈ Fin ∧ 𝑁 ∈ Fin ∧ 𝑃 ∈ Fin ) ) ) → ( 𝑋 × 𝑍 ) = ∅ )
16 eqeq1 ( ( 𝑋 × 𝑍 ) = ∅ → ( ( 𝑋 × 𝑍 ) = 𝑌 ↔ ∅ = 𝑌 ) )
17 xpfi ( ( 𝑀 ∈ Fin ∧ 𝑃 ∈ Fin ) → ( 𝑀 × 𝑃 ) ∈ Fin )
18 17 3adant2 ( ( 𝑀 ∈ Fin ∧ 𝑁 ∈ Fin ∧ 𝑃 ∈ Fin ) → ( 𝑀 × 𝑃 ) ∈ Fin )
19 xpnz ( ( 𝑀 ≠ ∅ ∧ 𝑃 ≠ ∅ ) ↔ ( 𝑀 × 𝑃 ) ≠ ∅ )
20 19 biimpi ( ( 𝑀 ≠ ∅ ∧ 𝑃 ≠ ∅ ) → ( 𝑀 × 𝑃 ) ≠ ∅ )
21 eqid ( Base ‘ 𝑅 ) = ( Base ‘ 𝑅 )
22 6 21 7 elfrlmbasn0 ( ( ( 𝑀 × 𝑃 ) ∈ Fin ∧ ( 𝑀 × 𝑃 ) ≠ ∅ ) → ( 𝑌𝐷𝑌 ≠ ∅ ) )
23 18 20 22 syl2an ( ( ( 𝑀 ∈ Fin ∧ 𝑁 ∈ Fin ∧ 𝑃 ∈ Fin ) ∧ ( 𝑀 ≠ ∅ ∧ 𝑃 ≠ ∅ ) ) → ( 𝑌𝐷𝑌 ≠ ∅ ) )
24 23 ex ( ( 𝑀 ∈ Fin ∧ 𝑁 ∈ Fin ∧ 𝑃 ∈ Fin ) → ( ( 𝑀 ≠ ∅ ∧ 𝑃 ≠ ∅ ) → ( 𝑌𝐷𝑌 ≠ ∅ ) ) )
25 24 com13 ( 𝑌𝐷 → ( ( 𝑀 ≠ ∅ ∧ 𝑃 ≠ ∅ ) → ( ( 𝑀 ∈ Fin ∧ 𝑁 ∈ Fin ∧ 𝑃 ∈ Fin ) → 𝑌 ≠ ∅ ) ) )
26 25 adantl ( ( 𝑅𝑉𝑌𝐷 ) → ( ( 𝑀 ≠ ∅ ∧ 𝑃 ≠ ∅ ) → ( ( 𝑀 ∈ Fin ∧ 𝑁 ∈ Fin ∧ 𝑃 ∈ Fin ) → 𝑌 ≠ ∅ ) ) )
27 26 3imp21 ( ( ( 𝑀 ≠ ∅ ∧ 𝑃 ≠ ∅ ) ∧ ( 𝑅𝑉𝑌𝐷 ) ∧ ( 𝑀 ∈ Fin ∧ 𝑁 ∈ Fin ∧ 𝑃 ∈ Fin ) ) → 𝑌 ≠ ∅ )
28 eqneqall ( 𝑌 = ∅ → ( 𝑌 ≠ ∅ → 𝑍𝐶 ) )
29 27 28 syl5com ( ( ( 𝑀 ≠ ∅ ∧ 𝑃 ≠ ∅ ) ∧ ( 𝑅𝑉𝑌𝐷 ) ∧ ( 𝑀 ∈ Fin ∧ 𝑁 ∈ Fin ∧ 𝑃 ∈ Fin ) ) → ( 𝑌 = ∅ → 𝑍𝐶 ) )
30 29 adantl ( ( ¬ 𝑍𝐶 ∧ ( ( 𝑀 ≠ ∅ ∧ 𝑃 ≠ ∅ ) ∧ ( 𝑅𝑉𝑌𝐷 ) ∧ ( 𝑀 ∈ Fin ∧ 𝑁 ∈ Fin ∧ 𝑃 ∈ Fin ) ) ) → ( 𝑌 = ∅ → 𝑍𝐶 ) )
31 30 com12 ( 𝑌 = ∅ → ( ( ¬ 𝑍𝐶 ∧ ( ( 𝑀 ≠ ∅ ∧ 𝑃 ≠ ∅ ) ∧ ( 𝑅𝑉𝑌𝐷 ) ∧ ( 𝑀 ∈ Fin ∧ 𝑁 ∈ Fin ∧ 𝑃 ∈ Fin ) ) ) → 𝑍𝐶 ) )
32 31 eqcoms ( ∅ = 𝑌 → ( ( ¬ 𝑍𝐶 ∧ ( ( 𝑀 ≠ ∅ ∧ 𝑃 ≠ ∅ ) ∧ ( 𝑅𝑉𝑌𝐷 ) ∧ ( 𝑀 ∈ Fin ∧ 𝑁 ∈ Fin ∧ 𝑃 ∈ Fin ) ) ) → 𝑍𝐶 ) )
33 16 32 syl6bi ( ( 𝑋 × 𝑍 ) = ∅ → ( ( 𝑋 × 𝑍 ) = 𝑌 → ( ( ¬ 𝑍𝐶 ∧ ( ( 𝑀 ≠ ∅ ∧ 𝑃 ≠ ∅ ) ∧ ( 𝑅𝑉𝑌𝐷 ) ∧ ( 𝑀 ∈ Fin ∧ 𝑁 ∈ Fin ∧ 𝑃 ∈ Fin ) ) ) → 𝑍𝐶 ) ) )
34 33 com23 ( ( 𝑋 × 𝑍 ) = ∅ → ( ( ¬ 𝑍𝐶 ∧ ( ( 𝑀 ≠ ∅ ∧ 𝑃 ≠ ∅ ) ∧ ( 𝑅𝑉𝑌𝐷 ) ∧ ( 𝑀 ∈ Fin ∧ 𝑁 ∈ Fin ∧ 𝑃 ∈ Fin ) ) ) → ( ( 𝑋 × 𝑍 ) = 𝑌𝑍𝐶 ) ) )
35 15 34 mpcom ( ( ¬ 𝑍𝐶 ∧ ( ( 𝑀 ≠ ∅ ∧ 𝑃 ≠ ∅ ) ∧ ( 𝑅𝑉𝑌𝐷 ) ∧ ( 𝑀 ∈ Fin ∧ 𝑁 ∈ Fin ∧ 𝑃 ∈ Fin ) ) ) → ( ( 𝑋 × 𝑍 ) = 𝑌𝑍𝐶 ) )
36 35 ex ( ¬ 𝑍𝐶 → ( ( ( 𝑀 ≠ ∅ ∧ 𝑃 ≠ ∅ ) ∧ ( 𝑅𝑉𝑌𝐷 ) ∧ ( 𝑀 ∈ Fin ∧ 𝑁 ∈ Fin ∧ 𝑃 ∈ Fin ) ) → ( ( 𝑋 × 𝑍 ) = 𝑌𝑍𝐶 ) ) )
37 8 36 pm2.61i ( ( ( 𝑀 ≠ ∅ ∧ 𝑃 ≠ ∅ ) ∧ ( 𝑅𝑉𝑌𝐷 ) ∧ ( 𝑀 ∈ Fin ∧ 𝑁 ∈ Fin ∧ 𝑃 ∈ Fin ) ) → ( ( 𝑋 × 𝑍 ) = 𝑌𝑍𝐶 ) )