Metamath Proof Explorer


Theorem adderpq

Description: Addition is compatible with the equivalence relation. (Contributed by Mario Carneiro, 8-May-2013) (New usage is discouraged.)

Ref Expression
Assertion adderpq ( ( [Q] ‘ 𝐴 ) +Q ( [Q] ‘ 𝐵 ) ) = ( [Q] ‘ ( 𝐴 +pQ 𝐵 ) )

Proof

Step Hyp Ref Expression
1 nqercl ⊢ ( 𝐴 ∈ ( N × N ) → ( [Q] ‘ 𝐴 ) ∈ Q )
2 nqercl ⊢ ( 𝐵 ∈ ( N × N ) → ( [Q] ‘ 𝐵 ) ∈ Q )
3 addpqnq ⊢ ( ( ( [Q] ‘ 𝐴 ) ∈ Q ∧ ( [Q] ‘ 𝐵 ) ∈ Q ) → ( ( [Q] ‘ 𝐴 ) +Q ( [Q] ‘ 𝐵 ) ) = ( [Q] ‘ ( ( [Q] ‘ 𝐴 ) +pQ ( [Q] ‘ 𝐵 ) ) ) )
4 1 2 3 syl2an ⊢ ( ( 𝐴 ∈ ( N × N ) ∧ 𝐵 ∈ ( N × N ) ) → ( ( [Q] ‘ 𝐴 ) +Q ( [Q] ‘ 𝐵 ) ) = ( [Q] ‘ ( ( [Q] ‘ 𝐴 ) +pQ ( [Q] ‘ 𝐵 ) ) ) )
5 enqer ⊢ ~Q Er ( N × N )
6 5 a1i ⊢ ( ( 𝐴 ∈ ( N × N ) ∧ 𝐵 ∈ ( N × N ) ) → ~Q Er ( N × N ) )
7 nqerrel ⊢ ( 𝐴 ∈ ( N × N ) → 𝐴 ~Q ( [Q] ‘ 𝐴 ) )
8 7 adantr ⊢ ( ( 𝐴 ∈ ( N × N ) ∧ 𝐵 ∈ ( N × N ) ) → 𝐴 ~Q ( [Q] ‘ 𝐴 ) )
9 elpqn ⊢ ( ( [Q] ‘ 𝐴 ) ∈ Q → ( [Q] ‘ 𝐴 ) ∈ ( N × N ) )
10 1 9 syl ⊢ ( 𝐴 ∈ ( N × N ) → ( [Q] ‘ 𝐴 ) ∈ ( N × N ) )
11 adderpqlem ⊢ ( ( 𝐴 ∈ ( N × N ) ∧ ( [Q] ‘ 𝐴 ) ∈ ( N × N ) ∧ 𝐵 ∈ ( N × N ) ) → ( 𝐴 ~Q ( [Q] ‘ 𝐴 ) ↔ ( 𝐴 +pQ 𝐵 ) ~Q ( ( [Q] ‘ 𝐴 ) +pQ 𝐵 ) ) )
12 11 3exp ⊢ ( 𝐴 ∈ ( N × N ) → ( ( [Q] ‘ 𝐴 ) ∈ ( N × N ) → ( 𝐵 ∈ ( N × N ) → ( 𝐴 ~Q ( [Q] ‘ 𝐴 ) ↔ ( 𝐴 +pQ 𝐵 ) ~Q ( ( [Q] ‘ 𝐴 ) +pQ 𝐵 ) ) ) ) )
13 10 12 mpd ⊢ ( 𝐴 ∈ ( N × N ) → ( 𝐵 ∈ ( N × N ) → ( 𝐴 ~Q ( [Q] ‘ 𝐴 ) ↔ ( 𝐴 +pQ 𝐵 ) ~Q ( ( [Q] ‘ 𝐴 ) +pQ 𝐵 ) ) ) )
14 13 imp ⊢ ( ( 𝐴 ∈ ( N × N ) ∧ 𝐵 ∈ ( N × N ) ) → ( 𝐴 ~Q ( [Q] ‘ 𝐴 ) ↔ ( 𝐴 +pQ 𝐵 ) ~Q ( ( [Q] ‘ 𝐴 ) +pQ 𝐵 ) ) )
15 8 14 mpbid ⊢ ( ( 𝐴 ∈ ( N × N ) ∧ 𝐵 ∈ ( N × N ) ) → ( 𝐴 +pQ 𝐵 ) ~Q ( ( [Q] ‘ 𝐴 ) +pQ 𝐵 ) )
16 nqerrel ⊢ ( 𝐵 ∈ ( N × N ) → 𝐵 ~Q ( [Q] ‘ 𝐵 ) )
17 16 adantl ⊢ ( ( 𝐴 ∈ ( N × N ) ∧ 𝐵 ∈ ( N × N ) ) → 𝐵 ~Q ( [Q] ‘ 𝐵 ) )
18 elpqn ⊢ ( ( [Q] ‘ 𝐵 ) ∈ Q → ( [Q] ‘ 𝐵 ) ∈ ( N × N ) )
19 2 18 syl ⊢ ( 𝐵 ∈ ( N × N ) → ( [Q] ‘ 𝐵 ) ∈ ( N × N ) )
20 adderpqlem ⊢ ( ( 𝐵 ∈ ( N × N ) ∧ ( [Q] ‘ 𝐵 ) ∈ ( N × N ) ∧ ( [Q] ‘ 𝐴 ) ∈ ( N × N ) ) → ( 𝐵 ~Q ( [Q] ‘ 𝐵 ) ↔ ( 𝐵 +pQ ( [Q] ‘ 𝐴 ) ) ~Q ( ( [Q] ‘ 𝐵 ) +pQ ( [Q] ‘ 𝐴 ) ) ) )
21 20 3exp ⊢ ( 𝐵 ∈ ( N × N ) → ( ( [Q] ‘ 𝐵 ) ∈ ( N × N ) → ( ( [Q] ‘ 𝐴 ) ∈ ( N × N ) → ( 𝐵 ~Q ( [Q] ‘ 𝐵 ) ↔ ( 𝐵 +pQ ( [Q] ‘ 𝐴 ) ) ~Q ( ( [Q] ‘ 𝐵 ) +pQ ( [Q] ‘ 𝐴 ) ) ) ) ) )
22 19 21 mpd ⊢ ( 𝐵 ∈ ( N × N ) → ( ( [Q] ‘ 𝐴 ) ∈ ( N × N ) → ( 𝐵 ~Q ( [Q] ‘ 𝐵 ) ↔ ( 𝐵 +pQ ( [Q] ‘ 𝐴 ) ) ~Q ( ( [Q] ‘ 𝐵 ) +pQ ( [Q] ‘ 𝐴 ) ) ) ) )
23 10 22 mpan9 ⊢ ( ( 𝐴 ∈ ( N × N ) ∧ 𝐵 ∈ ( N × N ) ) → ( 𝐵 ~Q ( [Q] ‘ 𝐵 ) ↔ ( 𝐵 +pQ ( [Q] ‘ 𝐴 ) ) ~Q ( ( [Q] ‘ 𝐵 ) +pQ ( [Q] ‘ 𝐴 ) ) ) )
24 17 23 mpbid ⊢ ( ( 𝐴 ∈ ( N × N ) ∧ 𝐵 ∈ ( N × N ) ) → ( 𝐵 +pQ ( [Q] ‘ 𝐴 ) ) ~Q ( ( [Q] ‘ 𝐵 ) +pQ ( [Q] ‘ 𝐴 ) ) )
25 addcompq ⊢ ( 𝐵 +pQ ( [Q] ‘ 𝐴 ) ) = ( ( [Q] ‘ 𝐴 ) +pQ 𝐵 )
26 addcompq ⊢ ( ( [Q] ‘ 𝐵 ) +pQ ( [Q] ‘ 𝐴 ) ) = ( ( [Q] ‘ 𝐴 ) +pQ ( [Q] ‘ 𝐵 ) )
27 24 25 26 3brtr3g ⊢ ( ( 𝐴 ∈ ( N × N ) ∧ 𝐵 ∈ ( N × N ) ) → ( ( [Q] ‘ 𝐴 ) +pQ 𝐵 ) ~Q ( ( [Q] ‘ 𝐴 ) +pQ ( [Q] ‘ 𝐵 ) ) )
28 6 15 27 ertrd ⊢ ( ( 𝐴 ∈ ( N × N ) ∧ 𝐵 ∈ ( N × N ) ) → ( 𝐴 +pQ 𝐵 ) ~Q ( ( [Q] ‘ 𝐴 ) +pQ ( [Q] ‘ 𝐵 ) ) )
29 addpqf ⊢ +pQ : ( ( N × N ) × ( N × N ) ) ⟶ ( N × N )
30 29 fovcl ⊢ ( ( 𝐴 ∈ ( N × N ) ∧ 𝐵 ∈ ( N × N ) ) → ( 𝐴 +pQ 𝐵 ) ∈ ( N × N ) )
31 29 fovcl ⊢ ( ( ( [Q] ‘ 𝐴 ) ∈ ( N × N ) ∧ ( [Q] ‘ 𝐵 ) ∈ ( N × N ) ) → ( ( [Q] ‘ 𝐴 ) +pQ ( [Q] ‘ 𝐵 ) ) ∈ ( N × N ) )
32 10 19 31 syl2an ⊢ ( ( 𝐴 ∈ ( N × N ) ∧ 𝐵 ∈ ( N × N ) ) → ( ( [Q] ‘ 𝐴 ) +pQ ( [Q] ‘ 𝐵 ) ) ∈ ( N × N ) )
33 nqereq ⊢ ( ( ( 𝐴 +pQ 𝐵 ) ∈ ( N × N ) ∧ ( ( [Q] ‘ 𝐴 ) +pQ ( [Q] ‘ 𝐵 ) ) ∈ ( N × N ) ) → ( ( 𝐴 +pQ 𝐵 ) ~Q ( ( [Q] ‘ 𝐴 ) +pQ ( [Q] ‘ 𝐵 ) ) ↔ ( [Q] ‘ ( 𝐴 +pQ 𝐵 ) ) = ( [Q] ‘ ( ( [Q] ‘ 𝐴 ) +pQ ( [Q] ‘ 𝐵 ) ) ) ) )
34 30 32 33 syl2anc ⊢ ( ( 𝐴 ∈ ( N × N ) ∧ 𝐵 ∈ ( N × N ) ) → ( ( 𝐴 +pQ 𝐵 ) ~Q ( ( [Q] ‘ 𝐴 ) +pQ ( [Q] ‘ 𝐵 ) ) ↔ ( [Q] ‘ ( 𝐴 +pQ 𝐵 ) ) = ( [Q] ‘ ( ( [Q] ‘ 𝐴 ) +pQ ( [Q] ‘ 𝐵 ) ) ) ) )
35 28 34 mpbid ⊢ ( ( 𝐴 ∈ ( N × N ) ∧ 𝐵 ∈ ( N × N ) ) → ( [Q] ‘ ( 𝐴 +pQ 𝐵 ) ) = ( [Q] ‘ ( ( [Q] ‘ 𝐴 ) +pQ ( [Q] ‘ 𝐵 ) ) ) )
36 4 35 eqtr4d ⊢ ( ( 𝐴 ∈ ( N × N ) ∧ 𝐵 ∈ ( N × N ) ) → ( ( [Q] ‘ 𝐴 ) +Q ( [Q] ‘ 𝐵 ) ) = ( [Q] ‘ ( 𝐴 +pQ 𝐵 ) ) )
37 0nnq ⊢ ¬ ∅ ∈ Q
38 nqerf ⊢ [Q] : ( N × N ) ⟶ Q
39 38 fdmi ⊢ dom [Q] = ( N × N )
40 39 eleq2i ⊢ ( 𝐴 ∈ dom [Q] ↔ 𝐴 ∈ ( N × N ) )
41 ndmfv ⊢ ( ¬ 𝐴 ∈ dom [Q] → ( [Q] ‘ 𝐴 ) = ∅ )
42 40 41 sylnbir ⊢ ( ¬ 𝐴 ∈ ( N × N ) → ( [Q] ‘ 𝐴 ) = ∅ )
43 42 eleq1d ⊢ ( ¬ 𝐴 ∈ ( N × N ) → ( ( [Q] ‘ 𝐴 ) ∈ Q ↔ ∅ ∈ Q ) )
44 37 43 mtbiri ⊢ ( ¬ 𝐴 ∈ ( N × N ) → ¬ ( [Q] ‘ 𝐴 ) ∈ Q )
45 44 con4i ⊢ ( ( [Q] ‘ 𝐴 ) ∈ Q → 𝐴 ∈ ( N × N ) )
46 39 eleq2i ⊢ ( 𝐵 ∈ dom [Q] ↔ 𝐵 ∈ ( N × N ) )
47 ndmfv ⊢ ( ¬ 𝐵 ∈ dom [Q] → ( [Q] ‘ 𝐵 ) = ∅ )
48 46 47 sylnbir ⊢ ( ¬ 𝐵 ∈ ( N × N ) → ( [Q] ‘ 𝐵 ) = ∅ )
49 48 eleq1d ⊢ ( ¬ 𝐵 ∈ ( N × N ) → ( ( [Q] ‘ 𝐵 ) ∈ Q ↔ ∅ ∈ Q ) )
50 37 49 mtbiri ⊢ ( ¬ 𝐵 ∈ ( N × N ) → ¬ ( [Q] ‘ 𝐵 ) ∈ Q )
51 50 con4i ⊢ ( ( [Q] ‘ 𝐵 ) ∈ Q → 𝐵 ∈ ( N × N ) )
52 45 51 anim12i ⊢ ( ( ( [Q] ‘ 𝐴 ) ∈ Q ∧ ( [Q] ‘ 𝐵 ) ∈ Q ) → ( 𝐴 ∈ ( N × N ) ∧ 𝐵 ∈ ( N × N ) ) )
53 addnqf ⊢ +Q : ( Q × Q ) ⟶ Q
54 53 fdmi ⊢ dom +Q = ( Q × Q )
55 54 ndmov ⊢ ( ¬ ( ( [Q] ‘ 𝐴 ) ∈ Q ∧ ( [Q] ‘ 𝐵 ) ∈ Q ) → ( ( [Q] ‘ 𝐴 ) +Q ( [Q] ‘ 𝐵 ) ) = ∅ )
56 52 55 nsyl5 ⊢ ( ¬ ( 𝐴 ∈ ( N × N ) ∧ 𝐵 ∈ ( N × N ) ) → ( ( [Q] ‘ 𝐴 ) +Q ( [Q] ‘ 𝐵 ) ) = ∅ )
57 0nelxp ⊢ ¬ ∅ ∈ ( N × N )
58 39 eleq2i ⊢ ( ∅ ∈ dom [Q] ↔ ∅ ∈ ( N × N ) )
59 57 58 mtbir ⊢ ¬ ∅ ∈ dom [Q]
60 29 fdmi ⊢ dom +pQ = ( ( N × N ) × ( N × N ) )
61 60 ndmov ⊢ ( ¬ ( 𝐴 ∈ ( N × N ) ∧ 𝐵 ∈ ( N × N ) ) → ( 𝐴 +pQ 𝐵 ) = ∅ )
62 61 eleq1d ⊢ ( ¬ ( 𝐴 ∈ ( N × N ) ∧ 𝐵 ∈ ( N × N ) ) → ( ( 𝐴 +pQ 𝐵 ) ∈ dom [Q] ↔ ∅ ∈ dom [Q] ) )
63 59 62 mtbiri ⊢ ( ¬ ( 𝐴 ∈ ( N × N ) ∧ 𝐵 ∈ ( N × N ) ) → ¬ ( 𝐴 +pQ 𝐵 ) ∈ dom [Q] )
64 ndmfv ⊢ ( ¬ ( 𝐴 +pQ 𝐵 ) ∈ dom [Q] → ( [Q] ‘ ( 𝐴 +pQ 𝐵 ) ) = ∅ )
65 63 64 syl ⊢ ( ¬ ( 𝐴 ∈ ( N × N ) ∧ 𝐵 ∈ ( N × N ) ) → ( [Q] ‘ ( 𝐴 +pQ 𝐵 ) ) = ∅ )
66 56 65 eqtr4d ⊢ ( ¬ ( 𝐴 ∈ ( N × N ) ∧ 𝐵 ∈ ( N × N ) ) → ( ( [Q] ‘ 𝐴 ) +Q ( [Q] ‘ 𝐵 ) ) = ( [Q] ‘ ( 𝐴 +pQ 𝐵 ) ) )
67 36 66 pm2.61i ⊢ ( ( [Q] ‘ 𝐴 ) +Q ( [Q] ‘ 𝐵 ) ) = ( [Q] ‘ ( 𝐴 +pQ 𝐵 ) )