Metamath Proof Explorer


Theorem omcan

Description: Left cancellation law for ordinal multiplication. Proposition 8.20 of TakeutiZaring p. 63 and its converse. (Contributed by NM, 14-Dec-2004)

Ref Expression
Assertion omcan
|- ( ( ( A e. On /\ B e. On /\ C e. On ) /\ (/) e. A ) -> ( ( A .o B ) = ( A .o C ) <-> B = C ) )

Proof

Step Hyp Ref Expression
1 omordi
 |-  ( ( ( C e. On /\ A e. On ) /\ (/) e. A ) -> ( B e. C -> ( A .o B ) e. ( A .o C ) ) )
2 1 ex
 |-  ( ( C e. On /\ A e. On ) -> ( (/) e. A -> ( B e. C -> ( A .o B ) e. ( A .o C ) ) ) )
3 2 ancoms
 |-  ( ( A e. On /\ C e. On ) -> ( (/) e. A -> ( B e. C -> ( A .o B ) e. ( A .o C ) ) ) )
4 3 3adant2
 |-  ( ( A e. On /\ B e. On /\ C e. On ) -> ( (/) e. A -> ( B e. C -> ( A .o B ) e. ( A .o C ) ) ) )
5 4 imp
 |-  ( ( ( A e. On /\ B e. On /\ C e. On ) /\ (/) e. A ) -> ( B e. C -> ( A .o B ) e. ( A .o C ) ) )
6 omordi
 |-  ( ( ( B e. On /\ A e. On ) /\ (/) e. A ) -> ( C e. B -> ( A .o C ) e. ( A .o B ) ) )
7 6 ex
 |-  ( ( B e. On /\ A e. On ) -> ( (/) e. A -> ( C e. B -> ( A .o C ) e. ( A .o B ) ) ) )
8 7 ancoms
 |-  ( ( A e. On /\ B e. On ) -> ( (/) e. A -> ( C e. B -> ( A .o C ) e. ( A .o B ) ) ) )
9 8 3adant3
 |-  ( ( A e. On /\ B e. On /\ C e. On ) -> ( (/) e. A -> ( C e. B -> ( A .o C ) e. ( A .o B ) ) ) )
10 9 imp
 |-  ( ( ( A e. On /\ B e. On /\ C e. On ) /\ (/) e. A ) -> ( C e. B -> ( A .o C ) e. ( A .o B ) ) )
11 5 10 orim12d
 |-  ( ( ( A e. On /\ B e. On /\ C e. On ) /\ (/) e. A ) -> ( ( B e. C \/ C e. B ) -> ( ( A .o B ) e. ( A .o C ) \/ ( A .o C ) e. ( A .o B ) ) ) )
12 11 con3d
 |-  ( ( ( A e. On /\ B e. On /\ C e. On ) /\ (/) e. A ) -> ( -. ( ( A .o B ) e. ( A .o C ) \/ ( A .o C ) e. ( A .o B ) ) -> -. ( B e. C \/ C e. B ) ) )
13 omcl
 |-  ( ( A e. On /\ B e. On ) -> ( A .o B ) e. On )
14 eloni
 |-  ( ( A .o B ) e. On -> Ord ( A .o B ) )
15 13 14 syl
 |-  ( ( A e. On /\ B e. On ) -> Ord ( A .o B ) )
16 omcl
 |-  ( ( A e. On /\ C e. On ) -> ( A .o C ) e. On )
17 eloni
 |-  ( ( A .o C ) e. On -> Ord ( A .o C ) )
18 16 17 syl
 |-  ( ( A e. On /\ C e. On ) -> Ord ( A .o C ) )
19 ordtri3
 |-  ( ( Ord ( A .o B ) /\ Ord ( A .o C ) ) -> ( ( A .o B ) = ( A .o C ) <-> -. ( ( A .o B ) e. ( A .o C ) \/ ( A .o C ) e. ( A .o B ) ) ) )
20 15 18 19 syl2an
 |-  ( ( ( A e. On /\ B e. On ) /\ ( A e. On /\ C e. On ) ) -> ( ( A .o B ) = ( A .o C ) <-> -. ( ( A .o B ) e. ( A .o C ) \/ ( A .o C ) e. ( A .o B ) ) ) )
21 20 3impdi
 |-  ( ( A e. On /\ B e. On /\ C e. On ) -> ( ( A .o B ) = ( A .o C ) <-> -. ( ( A .o B ) e. ( A .o C ) \/ ( A .o C ) e. ( A .o B ) ) ) )
22 21 adantr
 |-  ( ( ( A e. On /\ B e. On /\ C e. On ) /\ (/) e. A ) -> ( ( A .o B ) = ( A .o C ) <-> -. ( ( A .o B ) e. ( A .o C ) \/ ( A .o C ) e. ( A .o B ) ) ) )
23 eloni
 |-  ( B e. On -> Ord B )
24 eloni
 |-  ( C e. On -> Ord C )
25 ordtri3
 |-  ( ( Ord B /\ Ord C ) -> ( B = C <-> -. ( B e. C \/ C e. B ) ) )
26 23 24 25 syl2an
 |-  ( ( B e. On /\ C e. On ) -> ( B = C <-> -. ( B e. C \/ C e. B ) ) )
27 26 3adant1
 |-  ( ( A e. On /\ B e. On /\ C e. On ) -> ( B = C <-> -. ( B e. C \/ C e. B ) ) )
28 27 adantr
 |-  ( ( ( A e. On /\ B e. On /\ C e. On ) /\ (/) e. A ) -> ( B = C <-> -. ( B e. C \/ C e. B ) ) )
29 12 22 28 3imtr4d
 |-  ( ( ( A e. On /\ B e. On /\ C e. On ) /\ (/) e. A ) -> ( ( A .o B ) = ( A .o C ) -> B = C ) )
30 oveq2
 |-  ( B = C -> ( A .o B ) = ( A .o C ) )
31 29 30 impbid1
 |-  ( ( ( A e. On /\ B e. On /\ C e. On ) /\ (/) e. A ) -> ( ( A .o B ) = ( A .o C ) <-> B = C ) )