Metamath Proof Explorer


Theorem eldmcoa

Description: A pair <. G , F >. is in the domain of the arrow composition, if the domain of G equals the codomain of F . (In this case we say G and F are composable.) (Contributed by Mario Carneiro, 11-Jan-2017)

Ref Expression
Hypotheses coafval.o ⊢ · = ( compa ‘ 𝐶 )
coafval.a ⊢ 𝐴 = ( Arrow ‘ 𝐶 )
Assertion eldmcoa ( 𝐺 dom · 𝐹 ↔ ( 𝐹 ∈ 𝐴 ∧ 𝐺 ∈ 𝐴 ∧ ( coda ‘ 𝐹 ) = ( doma ‘ 𝐺 ) ) )

Proof

Step Hyp Ref Expression
1 coafval.o ⊢ · = ( compa ‘ 𝐶 )
2 coafval.a ⊢ 𝐴 = ( Arrow ‘ 𝐶 )
3 df-br ⊢ ( 𝐺 dom · 𝐹 ↔ ⟨ 𝐺 , 𝐹 ⟩ ∈ dom · )
4 otex ⊢ ⟨ ( doma ‘ 𝑓 ) , ( coda ‘ 𝑔 ) , ( ( 2nd ‘ 𝑔 ) ( ⟨ ( doma ‘ 𝑓 ) , ( doma ‘ 𝑔 ) ⟩ ( comp ‘ 𝐶 ) ( coda ‘ 𝑔 ) ) ( 2nd ‘ 𝑓 ) ) ⟩ ∈ V
5 4 rgen2w ⊢ ∀ 𝑔 ∈ 𝐴 ∀ 𝑓 ∈ { ℎ ∈ 𝐴 ∣ ( coda ‘ ℎ ) = ( doma ‘ 𝑔 ) } ⟨ ( doma ‘ 𝑓 ) , ( coda ‘ 𝑔 ) , ( ( 2nd ‘ 𝑔 ) ( ⟨ ( doma ‘ 𝑓 ) , ( doma ‘ 𝑔 ) ⟩ ( comp ‘ 𝐶 ) ( coda ‘ 𝑔 ) ) ( 2nd ‘ 𝑓 ) ) ⟩ ∈ V
6 eqid ⊢ ( comp ‘ 𝐶 ) = ( comp ‘ 𝐶 )
7 1 2 6 coafval ⊢ · = ( 𝑔 ∈ 𝐴 , 𝑓 ∈ { ℎ ∈ 𝐴 ∣ ( coda ‘ ℎ ) = ( doma ‘ 𝑔 ) } ↦ ⟨ ( doma ‘ 𝑓 ) , ( coda ‘ 𝑔 ) , ( ( 2nd ‘ 𝑔 ) ( ⟨ ( doma ‘ 𝑓 ) , ( doma ‘ 𝑔 ) ⟩ ( comp ‘ 𝐶 ) ( coda ‘ 𝑔 ) ) ( 2nd ‘ 𝑓 ) ) ⟩ )
8 7 fmpox ⊢ ( ∀ 𝑔 ∈ 𝐴 ∀ 𝑓 ∈ { ℎ ∈ 𝐴 ∣ ( coda ‘ ℎ ) = ( doma ‘ 𝑔 ) } ⟨ ( doma ‘ 𝑓 ) , ( coda ‘ 𝑔 ) , ( ( 2nd ‘ 𝑔 ) ( ⟨ ( doma ‘ 𝑓 ) , ( doma ‘ 𝑔 ) ⟩ ( comp ‘ 𝐶 ) ( coda ‘ 𝑔 ) ) ( 2nd ‘ 𝑓 ) ) ⟩ ∈ V ↔ · : ∪ 𝑔 ∈ 𝐴 ( { 𝑔 } × { ℎ ∈ 𝐴 ∣ ( coda ‘ ℎ ) = ( doma ‘ 𝑔 ) } ) ⟶ V )
9 5 8 mpbi ⊢ · : ∪ 𝑔 ∈ 𝐴 ( { 𝑔 } × { ℎ ∈ 𝐴 ∣ ( coda ‘ ℎ ) = ( doma ‘ 𝑔 ) } ) ⟶ V
10 9 fdmi ⊢ dom · = ∪ 𝑔 ∈ 𝐴 ( { 𝑔 } × { ℎ ∈ 𝐴 ∣ ( coda ‘ ℎ ) = ( doma ‘ 𝑔 ) } )
11 10 eleq2i ⊢ ( ⟨ 𝐺 , 𝐹 ⟩ ∈ dom · ↔ ⟨ 𝐺 , 𝐹 ⟩ ∈ ∪ 𝑔 ∈ 𝐴 ( { 𝑔 } × { ℎ ∈ 𝐴 ∣ ( coda ‘ ℎ ) = ( doma ‘ 𝑔 ) } ) )
12 fveq2 ⊢ ( 𝑔 = 𝐺 → ( doma ‘ 𝑔 ) = ( doma ‘ 𝐺 ) )
13 12 eqeq2d ⊢ ( 𝑔 = 𝐺 → ( ( coda ‘ ℎ ) = ( doma ‘ 𝑔 ) ↔ ( coda ‘ ℎ ) = ( doma ‘ 𝐺 ) ) )
14 13 rabbidv ⊢ ( 𝑔 = 𝐺 → { ℎ ∈ 𝐴 ∣ ( coda ‘ ℎ ) = ( doma ‘ 𝑔 ) } = { ℎ ∈ 𝐴 ∣ ( coda ‘ ℎ ) = ( doma ‘ 𝐺 ) } )
15 14 opeliunxp2 ⊢ ( ⟨ 𝐺 , 𝐹 ⟩ ∈ ∪ 𝑔 ∈ 𝐴 ( { 𝑔 } × { ℎ ∈ 𝐴 ∣ ( coda ‘ ℎ ) = ( doma ‘ 𝑔 ) } ) ↔ ( 𝐺 ∈ 𝐴 ∧ 𝐹 ∈ { ℎ ∈ 𝐴 ∣ ( coda ‘ ℎ ) = ( doma ‘ 𝐺 ) } ) )
16 fveqeq2 ⊢ ( ℎ = 𝐹 → ( ( coda ‘ ℎ ) = ( doma ‘ 𝐺 ) ↔ ( coda ‘ 𝐹 ) = ( doma ‘ 𝐺 ) ) )
17 16 elrab ⊢ ( 𝐹 ∈ { ℎ ∈ 𝐴 ∣ ( coda ‘ ℎ ) = ( doma ‘ 𝐺 ) } ↔ ( 𝐹 ∈ 𝐴 ∧ ( coda ‘ 𝐹 ) = ( doma ‘ 𝐺 ) ) )
18 17 anbi2i ⊢ ( ( 𝐺 ∈ 𝐴 ∧ 𝐹 ∈ { ℎ ∈ 𝐴 ∣ ( coda ‘ ℎ ) = ( doma ‘ 𝐺 ) } ) ↔ ( 𝐺 ∈ 𝐴 ∧ ( 𝐹 ∈ 𝐴 ∧ ( coda ‘ 𝐹 ) = ( doma ‘ 𝐺 ) ) ) )
19 an12 ⊢ ( ( 𝐺 ∈ 𝐴 ∧ ( 𝐹 ∈ 𝐴 ∧ ( coda ‘ 𝐹 ) = ( doma ‘ 𝐺 ) ) ) ↔ ( 𝐹 ∈ 𝐴 ∧ ( 𝐺 ∈ 𝐴 ∧ ( coda ‘ 𝐹 ) = ( doma ‘ 𝐺 ) ) ) )
20 3anass ⊢ ( ( 𝐹 ∈ 𝐴 ∧ 𝐺 ∈ 𝐴 ∧ ( coda ‘ 𝐹 ) = ( doma ‘ 𝐺 ) ) ↔ ( 𝐹 ∈ 𝐴 ∧ ( 𝐺 ∈ 𝐴 ∧ ( coda ‘ 𝐹 ) = ( doma ‘ 𝐺 ) ) ) )
21 19 20 bitr4i ⊢ ( ( 𝐺 ∈ 𝐴 ∧ ( 𝐹 ∈ 𝐴 ∧ ( coda ‘ 𝐹 ) = ( doma ‘ 𝐺 ) ) ) ↔ ( 𝐹 ∈ 𝐴 ∧ 𝐺 ∈ 𝐴 ∧ ( coda ‘ 𝐹 ) = ( doma ‘ 𝐺 ) ) )
22 15 18 21 3bitri ⊢ ( ⟨ 𝐺 , 𝐹 ⟩ ∈ ∪ 𝑔 ∈ 𝐴 ( { 𝑔 } × { ℎ ∈ 𝐴 ∣ ( coda ‘ ℎ ) = ( doma ‘ 𝑔 ) } ) ↔ ( 𝐹 ∈ 𝐴 ∧ 𝐺 ∈ 𝐴 ∧ ( coda ‘ 𝐹 ) = ( doma ‘ 𝐺 ) ) )
23 3 11 22 3bitri ⊢ ( 𝐺 dom · 𝐹 ↔ ( 𝐹 ∈ 𝐴 ∧ 𝐺 ∈ 𝐴 ∧ ( coda ‘ 𝐹 ) = ( doma ‘ 𝐺 ) ) )