Metamath Proof Explorer


Theorem brprlng

Description: Property of two lines A and B to be parallel. (Contributed by Thierry Arnoux, 18-Jun-2026)

Ref Expression
Hypotheses brprlng.l 𝐿 = ( LineG ‘ 𝐺 )
brprlng.e 𝐸 = ( hlG ‘ 𝐺 )
brprlng.p = ( parlnG ‘ 𝐺 )
brprlng.g ( 𝜑𝐺𝑉 )
Assertion brprlng ( 𝜑 → ( 𝐴 𝐵 ↔ ( ( 𝐴 ∈ ran 𝐿𝐵 ∈ ran 𝐿 ) ∧ ( 𝐴 = 𝐵 ∨ ( ∃ ∈ ran 𝐸 ( 𝐴𝐵 ) ∧ ( 𝐴𝐵 ) = ∅ ) ) ) ) )

Proof

Step Hyp Ref Expression
1 brprlng.l 𝐿 = ( LineG ‘ 𝐺 )
2 brprlng.e 𝐸 = ( hlG ‘ 𝐺 )
3 brprlng.p = ( parlnG ‘ 𝐺 )
4 brprlng.g ( 𝜑𝐺𝑉 )
5 df-prlng parlnG = ( 𝑔 ∈ V ↦ { ⟨ 𝑎 , 𝑏 ⟩ ∣ ( ( 𝑎 ∈ ran ( LineG ‘ 𝑔 ) ∧ 𝑏 ∈ ran ( LineG ‘ 𝑔 ) ) ∧ ( 𝑎 = 𝑏 ∨ ( ∃ ∈ ran ( hlG ‘ 𝑔 ) ( 𝑎𝑏 ) ∧ ( 𝑎𝑏 ) = ∅ ) ) ) } )
6 fveq2 ( 𝑔 = 𝐺 → ( LineG ‘ 𝑔 ) = ( LineG ‘ 𝐺 ) )
7 6 1 eqtr4di ( 𝑔 = 𝐺 → ( LineG ‘ 𝑔 ) = 𝐿 )
8 7 rneqd ( 𝑔 = 𝐺 → ran ( LineG ‘ 𝑔 ) = ran 𝐿 )
9 8 eleq2d ( 𝑔 = 𝐺 → ( 𝑎 ∈ ran ( LineG ‘ 𝑔 ) ↔ 𝑎 ∈ ran 𝐿 ) )
10 8 eleq2d ( 𝑔 = 𝐺 → ( 𝑏 ∈ ran ( LineG ‘ 𝑔 ) ↔ 𝑏 ∈ ran 𝐿 ) )
11 9 10 anbi12d ( 𝑔 = 𝐺 → ( ( 𝑎 ∈ ran ( LineG ‘ 𝑔 ) ∧ 𝑏 ∈ ran ( LineG ‘ 𝑔 ) ) ↔ ( 𝑎 ∈ ran 𝐿𝑏 ∈ ran 𝐿 ) ) )
12 fveq2 ( 𝑔 = 𝐺 → ( hlG ‘ 𝑔 ) = ( hlG ‘ 𝐺 ) )
13 12 2 eqtr4di ( 𝑔 = 𝐺 → ( hlG ‘ 𝑔 ) = 𝐸 )
14 13 rneqd ( 𝑔 = 𝐺 → ran ( hlG ‘ 𝑔 ) = ran 𝐸 )
15 14 rexeqdv ( 𝑔 = 𝐺 → ( ∃ ∈ ran ( hlG ‘ 𝑔 ) ( 𝑎𝑏 ) ↔ ∃ ∈ ran 𝐸 ( 𝑎𝑏 ) ) )
16 15 anbi1d ( 𝑔 = 𝐺 → ( ( ∃ ∈ ran ( hlG ‘ 𝑔 ) ( 𝑎𝑏 ) ∧ ( 𝑎𝑏 ) = ∅ ) ↔ ( ∃ ∈ ran 𝐸 ( 𝑎𝑏 ) ∧ ( 𝑎𝑏 ) = ∅ ) ) )
17 16 orbi2d ( 𝑔 = 𝐺 → ( ( 𝑎 = 𝑏 ∨ ( ∃ ∈ ran ( hlG ‘ 𝑔 ) ( 𝑎𝑏 ) ∧ ( 𝑎𝑏 ) = ∅ ) ) ↔ ( 𝑎 = 𝑏 ∨ ( ∃ ∈ ran 𝐸 ( 𝑎𝑏 ) ∧ ( 𝑎𝑏 ) = ∅ ) ) ) )
18 11 17 anbi12d ( 𝑔 = 𝐺 → ( ( ( 𝑎 ∈ ran ( LineG ‘ 𝑔 ) ∧ 𝑏 ∈ ran ( LineG ‘ 𝑔 ) ) ∧ ( 𝑎 = 𝑏 ∨ ( ∃ ∈ ran ( hlG ‘ 𝑔 ) ( 𝑎𝑏 ) ∧ ( 𝑎𝑏 ) = ∅ ) ) ) ↔ ( ( 𝑎 ∈ ran 𝐿𝑏 ∈ ran 𝐿 ) ∧ ( 𝑎 = 𝑏 ∨ ( ∃ ∈ ran 𝐸 ( 𝑎𝑏 ) ∧ ( 𝑎𝑏 ) = ∅ ) ) ) ) )
19 18 opabbidv ( 𝑔 = 𝐺 → { ⟨ 𝑎 , 𝑏 ⟩ ∣ ( ( 𝑎 ∈ ran ( LineG ‘ 𝑔 ) ∧ 𝑏 ∈ ran ( LineG ‘ 𝑔 ) ) ∧ ( 𝑎 = 𝑏 ∨ ( ∃ ∈ ran ( hlG ‘ 𝑔 ) ( 𝑎𝑏 ) ∧ ( 𝑎𝑏 ) = ∅ ) ) ) } = { ⟨ 𝑎 , 𝑏 ⟩ ∣ ( ( 𝑎 ∈ ran 𝐿𝑏 ∈ ran 𝐿 ) ∧ ( 𝑎 = 𝑏 ∨ ( ∃ ∈ ran 𝐸 ( 𝑎𝑏 ) ∧ ( 𝑎𝑏 ) = ∅ ) ) ) } )
20 4 elexd ( 𝜑𝐺 ∈ V )
21 1 fvexi 𝐿 ∈ V
22 21 rnex ran 𝐿 ∈ V
23 22 a1i ( 𝜑 → ran 𝐿 ∈ V )
24 simprll ( ( 𝜑 ∧ ( ( 𝑎 ∈ ran 𝐿𝑏 ∈ ran 𝐿 ) ∧ ( 𝑎 = 𝑏 ∨ ( ∃ ∈ ran 𝐸 ( 𝑎𝑏 ) ∧ ( 𝑎𝑏 ) = ∅ ) ) ) ) → 𝑎 ∈ ran 𝐿 )
25 simprlr ( ( 𝜑 ∧ ( ( 𝑎 ∈ ran 𝐿𝑏 ∈ ran 𝐿 ) ∧ ( 𝑎 = 𝑏 ∨ ( ∃ ∈ ran 𝐸 ( 𝑎𝑏 ) ∧ ( 𝑎𝑏 ) = ∅ ) ) ) ) → 𝑏 ∈ ran 𝐿 )
26 23 23 24 25 opabex2 ( 𝜑 → { ⟨ 𝑎 , 𝑏 ⟩ ∣ ( ( 𝑎 ∈ ran 𝐿𝑏 ∈ ran 𝐿 ) ∧ ( 𝑎 = 𝑏 ∨ ( ∃ ∈ ran 𝐸 ( 𝑎𝑏 ) ∧ ( 𝑎𝑏 ) = ∅ ) ) ) } ∈ V )
27 5 19 20 26 fvmptd3 ( 𝜑 → ( parlnG ‘ 𝐺 ) = { ⟨ 𝑎 , 𝑏 ⟩ ∣ ( ( 𝑎 ∈ ran 𝐿𝑏 ∈ ran 𝐿 ) ∧ ( 𝑎 = 𝑏 ∨ ( ∃ ∈ ran 𝐸 ( 𝑎𝑏 ) ∧ ( 𝑎𝑏 ) = ∅ ) ) ) } )
28 3 27 eqtrid ( 𝜑 = { ⟨ 𝑎 , 𝑏 ⟩ ∣ ( ( 𝑎 ∈ ran 𝐿𝑏 ∈ ran 𝐿 ) ∧ ( 𝑎 = 𝑏 ∨ ( ∃ ∈ ran 𝐸 ( 𝑎𝑏 ) ∧ ( 𝑎𝑏 ) = ∅ ) ) ) } )
29 eqeq12 ( ( 𝑎 = 𝐴𝑏 = 𝐵 ) → ( 𝑎 = 𝑏𝐴 = 𝐵 ) )
30 sseq1 ( 𝑎 = 𝐴 → ( 𝑎𝐴 ) )
31 sseq1 ( 𝑏 = 𝐵 → ( 𝑏𝐵 ) )
32 30 31 bi2anan9 ( ( 𝑎 = 𝐴𝑏 = 𝐵 ) → ( ( 𝑎𝑏 ) ↔ ( 𝐴𝐵 ) ) )
33 32 rexbidv ( ( 𝑎 = 𝐴𝑏 = 𝐵 ) → ( ∃ ∈ ran 𝐸 ( 𝑎𝑏 ) ↔ ∃ ∈ ran 𝐸 ( 𝐴𝐵 ) ) )
34 ineq12 ( ( 𝑎 = 𝐴𝑏 = 𝐵 ) → ( 𝑎𝑏 ) = ( 𝐴𝐵 ) )
35 34 eqeq1d ( ( 𝑎 = 𝐴𝑏 = 𝐵 ) → ( ( 𝑎𝑏 ) = ∅ ↔ ( 𝐴𝐵 ) = ∅ ) )
36 33 35 anbi12d ( ( 𝑎 = 𝐴𝑏 = 𝐵 ) → ( ( ∃ ∈ ran 𝐸 ( 𝑎𝑏 ) ∧ ( 𝑎𝑏 ) = ∅ ) ↔ ( ∃ ∈ ran 𝐸 ( 𝐴𝐵 ) ∧ ( 𝐴𝐵 ) = ∅ ) ) )
37 29 36 orbi12d ( ( 𝑎 = 𝐴𝑏 = 𝐵 ) → ( ( 𝑎 = 𝑏 ∨ ( ∃ ∈ ran 𝐸 ( 𝑎𝑏 ) ∧ ( 𝑎𝑏 ) = ∅ ) ) ↔ ( 𝐴 = 𝐵 ∨ ( ∃ ∈ ran 𝐸 ( 𝐴𝐵 ) ∧ ( 𝐴𝐵 ) = ∅ ) ) ) )
38 37 adantl ( ( 𝜑 ∧ ( 𝑎 = 𝐴𝑏 = 𝐵 ) ) → ( ( 𝑎 = 𝑏 ∨ ( ∃ ∈ ran 𝐸 ( 𝑎𝑏 ) ∧ ( 𝑎𝑏 ) = ∅ ) ) ↔ ( 𝐴 = 𝐵 ∨ ( ∃ ∈ ran 𝐸 ( 𝐴𝐵 ) ∧ ( 𝐴𝐵 ) = ∅ ) ) ) )
39 28 38 brab2d ( 𝜑 → ( 𝐴 𝐵 ↔ ( ( 𝐴 ∈ ran 𝐿𝐵 ∈ ran 𝐿 ) ∧ ( 𝐴 = 𝐵 ∨ ( ∃ ∈ ran 𝐸 ( 𝐴𝐵 ) ∧ ( 𝐴𝐵 ) = ∅ ) ) ) ) )