Metamath Proof Explorer


Theorem dmncan2

Description: Cancellation law for domains. (Contributed by Jeff Madsen, 6-Jan-2011)

Ref Expression
Hypotheses dmncan.1 𝐺 = ( 1st𝑅 )
dmncan.2 𝐻 = ( 2nd𝑅 )
dmncan.3 𝑋 = ran 𝐺
dmncan.4 𝑍 = ( GId ‘ 𝐺 )
Assertion dmncan2 ( ( ( 𝑅 ∈ Dmn ∧ ( 𝐴𝑋𝐵𝑋𝐶𝑋 ) ) ∧ 𝐶𝑍 ) → ( ( 𝐴 𝐻 𝐶 ) = ( 𝐵 𝐻 𝐶 ) → 𝐴 = 𝐵 ) )

Proof

Step Hyp Ref Expression
1 dmncan.1 𝐺 = ( 1st𝑅 )
2 dmncan.2 𝐻 = ( 2nd𝑅 )
3 dmncan.3 𝑋 = ran 𝐺
4 dmncan.4 𝑍 = ( GId ‘ 𝐺 )
5 dmncrng ( 𝑅 ∈ Dmn → 𝑅 ∈ CRingOps )
6 1 2 3 crngocom ( ( 𝑅 ∈ CRingOps ∧ 𝐴𝑋𝐶𝑋 ) → ( 𝐴 𝐻 𝐶 ) = ( 𝐶 𝐻 𝐴 ) )
7 6 3adant3r2 ( ( 𝑅 ∈ CRingOps ∧ ( 𝐴𝑋𝐵𝑋𝐶𝑋 ) ) → ( 𝐴 𝐻 𝐶 ) = ( 𝐶 𝐻 𝐴 ) )
8 1 2 3 crngocom ( ( 𝑅 ∈ CRingOps ∧ 𝐵𝑋𝐶𝑋 ) → ( 𝐵 𝐻 𝐶 ) = ( 𝐶 𝐻 𝐵 ) )
9 8 3adant3r1 ( ( 𝑅 ∈ CRingOps ∧ ( 𝐴𝑋𝐵𝑋𝐶𝑋 ) ) → ( 𝐵 𝐻 𝐶 ) = ( 𝐶 𝐻 𝐵 ) )
10 7 9 eqeq12d ( ( 𝑅 ∈ CRingOps ∧ ( 𝐴𝑋𝐵𝑋𝐶𝑋 ) ) → ( ( 𝐴 𝐻 𝐶 ) = ( 𝐵 𝐻 𝐶 ) ↔ ( 𝐶 𝐻 𝐴 ) = ( 𝐶 𝐻 𝐵 ) ) )
11 5 10 sylan ( ( 𝑅 ∈ Dmn ∧ ( 𝐴𝑋𝐵𝑋𝐶𝑋 ) ) → ( ( 𝐴 𝐻 𝐶 ) = ( 𝐵 𝐻 𝐶 ) ↔ ( 𝐶 𝐻 𝐴 ) = ( 𝐶 𝐻 𝐵 ) ) )
12 11 adantr ( ( ( 𝑅 ∈ Dmn ∧ ( 𝐴𝑋𝐵𝑋𝐶𝑋 ) ) ∧ 𝐶𝑍 ) → ( ( 𝐴 𝐻 𝐶 ) = ( 𝐵 𝐻 𝐶 ) ↔ ( 𝐶 𝐻 𝐴 ) = ( 𝐶 𝐻 𝐵 ) ) )
13 3anrot ( ( 𝐶𝑋𝐴𝑋𝐵𝑋 ) ↔ ( 𝐴𝑋𝐵𝑋𝐶𝑋 ) )
14 13 biimpri ( ( 𝐴𝑋𝐵𝑋𝐶𝑋 ) → ( 𝐶𝑋𝐴𝑋𝐵𝑋 ) )
15 1 2 3 4 dmncan1 ( ( ( 𝑅 ∈ Dmn ∧ ( 𝐶𝑋𝐴𝑋𝐵𝑋 ) ) ∧ 𝐶𝑍 ) → ( ( 𝐶 𝐻 𝐴 ) = ( 𝐶 𝐻 𝐵 ) → 𝐴 = 𝐵 ) )
16 14 15 sylanl2 ( ( ( 𝑅 ∈ Dmn ∧ ( 𝐴𝑋𝐵𝑋𝐶𝑋 ) ) ∧ 𝐶𝑍 ) → ( ( 𝐶 𝐻 𝐴 ) = ( 𝐶 𝐻 𝐵 ) → 𝐴 = 𝐵 ) )
17 12 16 sylbid ( ( ( 𝑅 ∈ Dmn ∧ ( 𝐴𝑋𝐵𝑋𝐶𝑋 ) ) ∧ 𝐶𝑍 ) → ( ( 𝐴 𝐻 𝐶 ) = ( 𝐵 𝐻 𝐶 ) → 𝐴 = 𝐵 ) )