Metamath Proof Explorer


Theorem xmulass

Description: Associativity of the extended real multiplication operation. Surprisingly, there are no restrictions on the values, unlike xaddass which has to avoid the "undefined" combinations +oo +e -oo and -oo +e +oo . The equivalent "undefined" expression here would be 0 *e +oo , but since this is defined to equal 0 any zeroes in the expression make the whole thing evaluate to zero (on both sides), thus establishing the identity in this case. (Contributed by Mario Carneiro, 20-Aug-2015)

Ref Expression
Assertion xmulass A*B*C*A𝑒B𝑒C=A𝑒B𝑒C

Proof

Step Hyp Ref Expression
1 oveq1 x=Ax𝑒B=A𝑒B
2 1 oveq1d x=Ax𝑒B𝑒C=A𝑒B𝑒C
3 oveq1 x=Ax𝑒B𝑒C=A𝑒B𝑒C
4 2 3 eqeq12d x=Ax𝑒B𝑒C=x𝑒B𝑒CA𝑒B𝑒C=A𝑒B𝑒C
5 oveq1 x=Ax𝑒B=A𝑒B
6 5 oveq1d x=Ax𝑒B𝑒C=A𝑒B𝑒C
7 oveq1 x=Ax𝑒B𝑒C=A𝑒B𝑒C
8 6 7 eqeq12d x=Ax𝑒B𝑒C=x𝑒B𝑒CA𝑒B𝑒C=A𝑒B𝑒C
9 xmulcl A*B*A𝑒B*
10 xmulcl A𝑒B*C*A𝑒B𝑒C*
11 9 10 stoic3 A*B*C*A𝑒B𝑒C*
12 simp1 A*B*C*A*
13 xmulcl B*C*B𝑒C*
14 13 3adant1 A*B*C*B𝑒C*
15 xmulcl A*B𝑒C*A𝑒B𝑒C*
16 12 14 15 syl2anc A*B*C*A𝑒B𝑒C*
17 oveq2 y=Bx𝑒y=x𝑒B
18 17 oveq1d y=Bx𝑒y𝑒C=x𝑒B𝑒C
19 oveq1 y=By𝑒C=B𝑒C
20 19 oveq2d y=Bx𝑒y𝑒C=x𝑒B𝑒C
21 18 20 eqeq12d y=Bx𝑒y𝑒C=x𝑒y𝑒Cx𝑒B𝑒C=x𝑒B𝑒C
22 oveq2 y=Bx𝑒y=x𝑒B
23 22 oveq1d y=Bx𝑒y𝑒C=x𝑒B𝑒C
24 oveq1 y=By𝑒C=B𝑒C
25 24 oveq2d y=Bx𝑒y𝑒C=x𝑒B𝑒C
26 23 25 eqeq12d y=Bx𝑒y𝑒C=x𝑒y𝑒Cx𝑒B𝑒C=x𝑒B𝑒C
27 simprl A*B*C*x*0<xx*
28 simpl2 A*B*C*x*0<xB*
29 xmulcl x*B*x𝑒B*
30 27 28 29 syl2anc A*B*C*x*0<xx𝑒B*
31 simpl3 A*B*C*x*0<xC*
32 xmulcl x𝑒B*C*x𝑒B𝑒C*
33 30 31 32 syl2anc A*B*C*x*0<xx𝑒B𝑒C*
34 14 adantr A*B*C*x*0<xB𝑒C*
35 xmulcl x*B𝑒C*x𝑒B𝑒C*
36 27 34 35 syl2anc A*B*C*x*0<xx𝑒B𝑒C*
37 oveq2 z=Cx𝑒y𝑒z=x𝑒y𝑒C
38 oveq2 z=Cy𝑒z=y𝑒C
39 38 oveq2d z=Cx𝑒y𝑒z=x𝑒y𝑒C
40 37 39 eqeq12d z=Cx𝑒y𝑒z=x𝑒y𝑒zx𝑒y𝑒C=x𝑒y𝑒C
41 oveq2 z=Cx𝑒y𝑒z=x𝑒y𝑒C
42 oveq2 z=Cy𝑒z=y𝑒C
43 42 oveq2d z=Cx𝑒y𝑒z=x𝑒y𝑒C
44 41 43 eqeq12d z=Cx𝑒y𝑒z=x𝑒y𝑒zx𝑒y𝑒C=x𝑒y𝑒C
45 27 adantr A*B*C*x*0<xy*0<yx*
46 simprl A*B*C*x*0<xy*0<yy*
47 xmulcl x*y*x𝑒y*
48 45 46 47 syl2anc A*B*C*x*0<xy*0<yx𝑒y*
49 31 adantr A*B*C*x*0<xy*0<yC*
50 xmulcl x𝑒y*C*x𝑒y𝑒C*
51 48 49 50 syl2anc A*B*C*x*0<xy*0<yx𝑒y𝑒C*
52 xmulcl y*C*y𝑒C*
53 46 49 52 syl2anc A*B*C*x*0<xy*0<yy𝑒C*
54 xmulcl x*y𝑒C*x𝑒y𝑒C*
55 45 53 54 syl2anc A*B*C*x*0<xy*0<yx𝑒y𝑒C*
56 xmulasslem3 x*0<xy*0<yz*0<zx𝑒y𝑒z=x𝑒y𝑒z
57 56 ad4ant234 A*B*C*x*0<xy*0<yz*0<zx𝑒y𝑒z=x𝑒y𝑒z
58 xmul01 x𝑒y*x𝑒y𝑒0=0
59 48 58 syl A*B*C*x*0<xy*0<yx𝑒y𝑒0=0
60 xmul01 x*x𝑒0=0
61 45 60 syl A*B*C*x*0<xy*0<yx𝑒0=0
62 59 61 eqtr4d A*B*C*x*0<xy*0<yx𝑒y𝑒0=x𝑒0
63 xmul01 y*y𝑒0=0
64 63 ad2antrl A*B*C*x*0<xy*0<yy𝑒0=0
65 64 oveq2d A*B*C*x*0<xy*0<yx𝑒y𝑒0=x𝑒0
66 62 65 eqtr4d A*B*C*x*0<xy*0<yx𝑒y𝑒0=x𝑒y𝑒0
67 oveq2 z=0x𝑒y𝑒z=x𝑒y𝑒0
68 oveq2 z=0y𝑒z=y𝑒0
69 68 oveq2d z=0x𝑒y𝑒z=x𝑒y𝑒0
70 67 69 eqeq12d z=0x𝑒y𝑒z=x𝑒y𝑒zx𝑒y𝑒0=x𝑒y𝑒0
71 66 70 syl5ibrcom A*B*C*x*0<xy*0<yz=0x𝑒y𝑒z=x𝑒y𝑒z
72 xmulneg2 x𝑒y*C*x𝑒y𝑒C=x𝑒y𝑒C
73 48 49 72 syl2anc A*B*C*x*0<xy*0<yx𝑒y𝑒C=x𝑒y𝑒C
74 xmulneg2 y*C*y𝑒C=y𝑒C
75 46 49 74 syl2anc A*B*C*x*0<xy*0<yy𝑒C=y𝑒C
76 75 oveq2d A*B*C*x*0<xy*0<yx𝑒y𝑒C=x𝑒y𝑒C
77 xmulneg2 x*y𝑒C*x𝑒y𝑒C=x𝑒y𝑒C
78 45 53 77 syl2anc A*B*C*x*0<xy*0<yx𝑒y𝑒C=x𝑒y𝑒C
79 76 78 eqtrd A*B*C*x*0<xy*0<yx𝑒y𝑒C=x𝑒y𝑒C
80 40 44 51 55 49 57 71 73 79 xmulasslem A*B*C*x*0<xy*0<yx𝑒y𝑒C=x𝑒y𝑒C
81 xmul02 C*0𝑒C=0
82 81 3ad2ant3 A*B*C*0𝑒C=0
83 82 adantr A*B*C*x*0<x0𝑒C=0
84 60 ad2antrl A*B*C*x*0<xx𝑒0=0
85 83 84 eqtr4d A*B*C*x*0<x0𝑒C=x𝑒0
86 84 oveq1d A*B*C*x*0<xx𝑒0𝑒C=0𝑒C
87 83 oveq2d A*B*C*x*0<xx𝑒0𝑒C=x𝑒0
88 85 86 87 3eqtr4d A*B*C*x*0<xx𝑒0𝑒C=x𝑒0𝑒C
89 oveq2 y=0x𝑒y=x𝑒0
90 89 oveq1d y=0x𝑒y𝑒C=x𝑒0𝑒C
91 oveq1 y=0y𝑒C=0𝑒C
92 91 oveq2d y=0x𝑒y𝑒C=x𝑒0𝑒C
93 90 92 eqeq12d y=0x𝑒y𝑒C=x𝑒y𝑒Cx𝑒0𝑒C=x𝑒0𝑒C
94 88 93 syl5ibrcom A*B*C*x*0<xy=0x𝑒y𝑒C=x𝑒y𝑒C
95 xmulneg2 x*B*x𝑒B=x𝑒B
96 27 28 95 syl2anc A*B*C*x*0<xx𝑒B=x𝑒B
97 96 oveq1d A*B*C*x*0<xx𝑒B𝑒C=x𝑒B𝑒C
98 xmulneg1 x𝑒B*C*x𝑒B𝑒C=x𝑒B𝑒C
99 30 31 98 syl2anc A*B*C*x*0<xx𝑒B𝑒C=x𝑒B𝑒C
100 97 99 eqtrd A*B*C*x*0<xx𝑒B𝑒C=x𝑒B𝑒C
101 xmulneg1 B*C*B𝑒C=B𝑒C
102 28 31 101 syl2anc A*B*C*x*0<xB𝑒C=B𝑒C
103 102 oveq2d A*B*C*x*0<xx𝑒B𝑒C=x𝑒B𝑒C
104 xmulneg2 x*B𝑒C*x𝑒B𝑒C=x𝑒B𝑒C
105 27 34 104 syl2anc A*B*C*x*0<xx𝑒B𝑒C=x𝑒B𝑒C
106 103 105 eqtrd A*B*C*x*0<xx𝑒B𝑒C=x𝑒B𝑒C
107 21 26 33 36 28 80 94 100 106 xmulasslem A*B*C*x*0<xx𝑒B𝑒C=x𝑒B𝑒C
108 xmul02 B*0𝑒B=0
109 108 3ad2ant2 A*B*C*0𝑒B=0
110 109 oveq1d A*B*C*0𝑒B𝑒C=0𝑒C
111 xmul02 B𝑒C*0𝑒B𝑒C=0
112 14 111 syl A*B*C*0𝑒B𝑒C=0
113 82 110 112 3eqtr4d A*B*C*0𝑒B𝑒C=0𝑒B𝑒C
114 oveq1 x=0x𝑒B=0𝑒B
115 114 oveq1d x=0x𝑒B𝑒C=0𝑒B𝑒C
116 oveq1 x=0x𝑒B𝑒C=0𝑒B𝑒C
117 115 116 eqeq12d x=0x𝑒B𝑒C=x𝑒B𝑒C0𝑒B𝑒C=0𝑒B𝑒C
118 113 117 syl5ibrcom A*B*C*x=0x𝑒B𝑒C=x𝑒B𝑒C
119 xmulneg1 A*B*A𝑒B=A𝑒B
120 119 3adant3 A*B*C*A𝑒B=A𝑒B
121 120 oveq1d A*B*C*A𝑒B𝑒C=A𝑒B𝑒C
122 xmulneg1 A𝑒B*C*A𝑒B𝑒C=A𝑒B𝑒C
123 9 122 stoic3 A*B*C*A𝑒B𝑒C=A𝑒B𝑒C
124 121 123 eqtrd A*B*C*A𝑒B𝑒C=A𝑒B𝑒C
125 xmulneg1 A*B𝑒C*A𝑒B𝑒C=A𝑒B𝑒C
126 12 14 125 syl2anc A*B*C*A𝑒B𝑒C=A𝑒B𝑒C
127 4 8 11 16 12 107 118 124 126 xmulasslem A*B*C*A𝑒B𝑒C=A𝑒B𝑒C