HomeHome Metamath Proof Explorer < Previous   Next >
Related theorems
Unicode version

Theorem nnmass 3181
Description: Multiplication of natural numbers is associative. (This can be extended to all ordinals with a longer proof.) Theorem 4K(4) of [Enderton] p. 81.
Assertion
Ref Expression
nnmass |- ((A e. om /\ B e. om /\ C e. om) -> ((A .o B) .o C) = (A .o (B .o C)))

Proof of Theorem nnmass
StepHypRef Expression
1 opreq2 3007 . . . . . . 7 |- (x = (/) -> ((A .o B) .o x) = ((A .o B) .o (/)))
2 opreq2 3007 . . . . . . . 8 |- (x = (/) -> (B .o x) = (B .o (/)))
32opreq2d 3013 . . . . . . 7 |- (x = (/) -> (A .o (B .o x)) = (A .o (B .o (/))))
41, 3cleq12d 1115 . . . . . 6 |- (x = (/) -> (((A .o B) .o x) = (A .o (B .o x)) <-> ((A .o B) .o (/)) = (A .o (B .o (/)))))
54imbi2d 464 . . . . 5 |- (x = (/) -> (((A e. om /\ B e. om) -> ((A .o B) .o x) = (A .o (B .o x))) <-> ((A e. om /\ B e. om) -> ((A .o B) .o (/)) = (A .o (B .o (/))))))
6 opreq2 3007 . . . . . . 7 |- (x = y -> ((A .o B) .o x) = ((A .o B) .o y))
7 opreq2 3007 . . . . . . . 8 |- (x = y -> (B .o x) = (B .o y))
87opreq2d 3013 . . . . . . 7 |- (x = y -> (A .o (B .o x)) = (A .o (B .o y)))
96, 8cleq12d 1115 . . . . . 6 |- (x = y -> (((A .o B) .o x) = (A .o (B .o x)) <-> ((A .o B) .o y) = (A .o (B .o y))))
109imbi2d 464 . . . . 5 |- (x = y -> (((A e. om /\ B e. om) -> ((A .o B) .o x) = (A .o (B .o x))) <-> ((A e. om /\ B e. om) -> ((A .o B) .o y) = (A .o (B .o y)))))
11 opreq2 3007 . . . . . . 7 |- (x = suc y -> ((A .o B) .o x) = ((A .o B) .o suc y))
12 opreq2 3007 . . . . . . . 8 |- (x = suc y -> (B .o x) = (B .o suc y))
1312opreq2d 3013 . . . . . . 7 |- (x = suc y -> (A .o (B .o x)) = (A .o (B .o suc y)))
1411, 13cleq12d 1115 . . . . . 6 |- (x = suc y -> (((A .o B) .o x) = (A .o (B .o x)) <-> ((A .o B) .o suc y) = (A .o (B .o suc y))))
1514imbi2d 464 . . . . 5 |- (x = suc y -> (((A e. om /\ B e. om) -> ((A .o B) .o x) = (A .o (B .o x))) <-> ((A e. om /\ B e. om) -> ((A .o B) .o suc y) = (A .o (B .o suc y)))))
16 opreq2 3007 . . . . . . 7 |- (x = C -> ((A .o B) .o x) = ((A .o B) .o C))
17 opreq2 3007 . . . . . . . 8 |- (x = C -> (B .o x) = (B .o C))
1817opreq2d 3013 . . . . . . 7 |- (x = C -> (A .o (B .o x)) = (A .o (B .o C)))
1916, 18cleq12d 1115 . . . . . 6 |- (x = C -> (((A .o B) .o x) = (A .o (B .o x)) <-> ((A .o B) .o C) = (A .o (B .o C))))
2019imbi2d 464 . . . . 5 |- (x = C -> (((A e. om /\ B e. om) -> ((A .o B) .o x) = (A .o (B .o x))) <-> ((A e. om /\ B e. om) -> ((A .o B) .o C) = (A .o (B .o C)))))
21 nnmcl 3173 . . . . . . 7 |- ((A e. om /\ B e. om) -> (A .o B) e. om)
22 nnm0 3167 . . . . . . 7 |- ((A .o B) e. om -> ((A .o B) .o (/)) = (/))
2321, 22syl 12 . . . . . 6 |- ((A e. om /\ B e. om) -> ((A .o B) .o (/)) = (/))
24 nnm0 3167 . . . . . . . 8 |- (B e. om -> (B .o (/)) = (/))
2524opreq2d 3013 . . . . . . 7 |- (B e. om -> (A .o (B .o (/))) = (A .o (/)))
26 nnm0 3167 . . . . . . 7 |- (A e. om -> (A .o (/)) = (/))
2725, 26sylan9eqr 1145 . . . . . 6 |- ((A e. om /\ B e. om) -> (A .o (B .o (/))) = (/))
2823, 27eqtr4d 1131 . . . . 5 |- ((A e. om /\ B e. om) -> ((A .o B) .o (/)) = (A .o (B .o (/))))
29 nnmsuc 3169 . . . . . . . . . . . . 13 |- (((A .o B) e. om /\ y e. om) -> ((A .o B) .o suc y) = (((A .o B) .o y) +o (A .o B)))
3029, 21sylan 343 . . . . . . . . . . . 12 |- (((A e. om /\ B e. om) /\ y e. om) -> ((A .o B) .o suc y) = (((A .o B) .o y) +o (A .o B)))
31303impa 609 . . . . . . . . . . 11 |- ((A e. om /\ B e. om /\ y e. om) -> ((A .o B) .o suc y) = (((A .o B) .o y) +o (A .o B)))
32 nnmsuc 3169 . . . . . . . . . . . . . 14 |- ((B e. om /\ y e. om) -> (B .o suc y) = ((B .o y) +o B))
33323adant1 597 . . . . . . . . . . . . 13 |- ((A e. om /\ B e. om /\ y e. om) -> (B .o suc y) = ((B .o y) +o B))
3433opreq2d 3013 . . . . . . . . . . . 12 |- ((A e. om /\ B e. om /\ y e. om) -> (A .o (B .o suc y)) = (A .o ((B .o y) +o B)))
35 nndi 3180 . . . . . . . . . . . . . . . . . 18 |- ((A e. om /\ (B .o y) e. om /\ B e. om) -> (A .o ((B .o y) +o B)) = ((A .o (B .o y)) +o (A .o B)))
36 nnmcl 3173 . . . . . . . . . . . . . . . . . 18 |- ((B e. om /\ y e. om) -> (B .o y) e. om)
3735, 36syl3an2 620 . . . . . . . . . . . . . . . . 17 |- ((A e. om /\ (B e. om /\ y e. om) /\ B e. om) -> (A .o ((B .o y) +o B)) = ((A .o (B .o y)) +o (A .o B)))
38373exp 611 . . . . . . . . . . . . . . . 16 |- (A e. om -> ((B e. om /\ y e. om) -> (B e. om -> (A .o ((B .o y) +o B)) = ((A .o (B .o y)) +o (A .o B)))))
3938exp3a 292 . . . . . . . . . . . . . . 15 |- (A e. om -> (B e. om -> (y e. om -> (B e. om -> (A .o ((B .o y) +o B)) = ((A .o (B .o y)) +o (A .o B))))))
4039com34 36 . . . . . . . . . . . . . 14 |- (A e. om -> (B e. om -> (B e. om -> (y e. om -> (A .o ((B .o y) +o B)) = ((A .o (B .o y)) +o (A .o B))))))
4140pm2.43d 59 . . . . . . . . . . . . 13 |- (A e. om -> (B e. om -> (y e. om -> (A .o ((B .o y) +o B)) = ((A .o (B .o y)) +o (A .o B)))))
42413imp 608 . . . . . . . . . . . 12 |- ((A e. om /\ B e. om /\ y e. om) -> (A .o ((B .o y) +o B)) = ((A .o (B .o y)) +o (A .o B)))
4334, 42eqtrd 1128 . . . . . . . . . . 11 |- ((A e. om /\ B e. om /\ y e. om) -> (A .o (B .o suc y)) = ((A .o (B .o y)) +o (A .o B)))
4431, 43cleq12d 1115 . . . . . . . . . 10 |- ((A e. om /\ B e. om /\ y e. om) -> (((A .o B) .o suc y) = (A .o (B .o suc y)) <-> (((A .o B) .o y) +o (A .o B)) = ((A .o (B .o y)) +o (A .o B))))
45 opreq1 3006 . . . . . . . . . 10 |- (((A .o B) .o y) = (A .o (B .o y)) -> (((A .o B) .o y) +o (A .o B)) = ((A .o (B .o y)) +o (A .o B)))
4644, 45syl5bir 184 . . . . . . . . 9 |- ((A e. om /\ B e. om /\ y e. om) -> (((A .o B) .o y) = (A .o (B .o y)) -> ((A .o B) .o suc y) = (A .o (B .o suc y))))
47463exp 611 . . . . . . . 8 |- (A e. om -> (B e. om -> (y e. om -> (((A .o B) .o y) = (A .o (B .o y)) -> ((A .o B) .o suc y) = (A .o (B .o suc y))))))
4847com3r 35 . . . . . . 7 |- (y e. om -> (A e. om -> (B e. om -> (((A .o B) .o y) = (A .o (B .o y)) -> ((A .o B) .o suc y) = (A .o (B .o suc y))))))
4948imp3a 279 . . . . . 6 |- (y e. om -> ((A e. om /\ B e. om) -> (((A .o B) .o y) = (A .o (B .o y)) -> ((A .o B) .o suc y) = (A .o (B .o suc y)))))
5049a2d 15 . . . . 5 |- (y e. om -> (((A e. om /\ B e. om) -> ((A .o B) .o y) = (A .o (B .o y))) -> ((A e. om /\ B e. om) -> ((A .o B) .o suc y) = (A .o (B .o suc y