Metamath Proof Explorer


Theorem curf

Description: Functional property of currying. (Contributed by Brendan Leahy, 2-Jun-2021)

Ref Expression
Assertion curf ⊢ F : A × B ⟶ C ∧ B ∈ V ∖ ∅ ∧ C ∈ W → curry F : A ⟶ C B

Proof

Step Hyp Ref Expression
1 opelxpi ⊢ x ∈ A ∧ y ∈ B → x y ∈ A × B
2 ffvelcdm ⊢ F : A × B ⟶ C ∧ x y ∈ A × B → F ⁡ x y ∈ C
3 1 2 sylan2 ⊢ F : A × B ⟶ C ∧ x ∈ A ∧ y ∈ B → F ⁡ x y ∈ C
4 3 anassrs ⊢ F : A × B ⟶ C ∧ x ∈ A ∧ y ∈ B → F ⁡ x y ∈ C
5 4 fmpttd ⊢ F : A × B ⟶ C ∧ x ∈ A → y ∈ B ⟼ F ⁡ x y : B ⟶ C
6 5 3ad2antl1 ⊢ F : A × B ⟶ C ∧ B ∈ V ∖ ∅ ∧ C ∈ W ∧ x ∈ A → y ∈ B ⟼ F ⁡ x y : B ⟶ C
7 elmapg ⊢ C ∈ W ∧ B ∈ V ∖ ∅ → y ∈ B ⟼ F ⁡ x y ∈ C B ↔ y ∈ B ⟼ F ⁡ x y : B ⟶ C
8 7 ancoms ⊢ B ∈ V ∖ ∅ ∧ C ∈ W → y ∈ B ⟼ F ⁡ x y ∈ C B ↔ y ∈ B ⟼ F ⁡ x y : B ⟶ C
9 8 3adant1 ⊢ F : A × B ⟶ C ∧ B ∈ V ∖ ∅ ∧ C ∈ W → y ∈ B ⟼ F ⁡ x y ∈ C B ↔ y ∈ B ⟼ F ⁡ x y : B ⟶ C
10 9 adantr ⊢ F : A × B ⟶ C ∧ B ∈ V ∖ ∅ ∧ C ∈ W ∧ x ∈ A → y ∈ B ⟼ F ⁡ x y ∈ C B ↔ y ∈ B ⟼ F ⁡ x y : B ⟶ C
11 6 10 mpbird ⊢ F : A × B ⟶ C ∧ B ∈ V ∖ ∅ ∧ C ∈ W ∧ x ∈ A → y ∈ B ⟼ F ⁡ x y ∈ C B
12 11 fmpttd ⊢ F : A × B ⟶ C ∧ B ∈ V ∖ ∅ ∧ C ∈ W → x ∈ A ⟼ y ∈ B ⟼ F ⁡ x y : A ⟶ C B
13 eldifsni ⊢ B ∈ V ∖ ∅ → B ≠ ∅
14 df-cur ⊢ curry F = x ∈ dom ⁡ dom ⁡ F ⟼ y z | x y F z
15 fdm ⊢ F : A × B ⟶ C → dom ⁡ F = A × B
16 15 dmeqd ⊢ F : A × B ⟶ C → dom ⁡ dom ⁡ F = dom ⁡ A × B
17 dmxp ⊢ B ≠ ∅ → dom ⁡ A × B = A
18 16 17 sylan9eq ⊢ F : A × B ⟶ C ∧ B ≠ ∅ → dom ⁡ dom ⁡ F = A
19 18 mpteq1d ⊢ F : A × B ⟶ C ∧ B ≠ ∅ → x ∈ dom ⁡ dom ⁡ F ⟼ y z | x y F z = x ∈ A ⟼ y z | x y F z
20 ffun ⊢ F : A × B ⟶ C → Fun ⁡ F
21 funbrfv2b ⊢ Fun ⁡ F → x y F z ↔ x y ∈ dom ⁡ F ∧ F ⁡ x y = z
22 20 21 syl ⊢ F : A × B ⟶ C → x y F z ↔ x y ∈ dom ⁡ F ∧ F ⁡ x y = z
23 15 eleq2d ⊢ F : A × B ⟶ C → x y ∈ dom ⁡ F ↔ x y ∈ A × B
24 opelxp ⊢ x y ∈ A × B ↔ x ∈ A ∧ y ∈ B
25 23 24 bitrdi ⊢ F : A × B ⟶ C → x y ∈ dom ⁡ F ↔ x ∈ A ∧ y ∈ B
26 25 anbi1d ⊢ F : A × B ⟶ C → x y ∈ dom ⁡ F ∧ F ⁡ x y = z ↔ x ∈ A ∧ y ∈ B ∧ F ⁡ x y = z
27 22 26 bitrd ⊢ F : A × B ⟶ C → x y F z ↔ x ∈ A ∧ y ∈ B ∧ F ⁡ x y = z
28 ibar ⊢ x ∈ A → y ∈ B ∧ z = F ⁡ x y ↔ x ∈ A ∧ y ∈ B ∧ z = F ⁡ x y
29 anass ⊢ x ∈ A ∧ y ∈ B ∧ z = F ⁡ x y ↔ x ∈ A ∧ y ∈ B ∧ z = F ⁡ x y
30 eqcom ⊢ z = F ⁡ x y ↔ F ⁡ x y = z
31 30 anbi2i ⊢ x ∈ A ∧ y ∈ B ∧ z = F ⁡ x y ↔ x ∈ A ∧ y ∈ B ∧ F ⁡ x y = z
32 29 31 bitr3i ⊢ x ∈ A ∧ y ∈ B ∧ z = F ⁡ x y ↔ x ∈ A ∧ y ∈ B ∧ F ⁡ x y = z
33 28 32 bitr2di ⊢ x ∈ A → x ∈ A ∧ y ∈ B ∧ F ⁡ x y = z ↔ y ∈ B ∧ z = F ⁡ x y
34 27 33 sylan9bb ⊢ F : A × B ⟶ C ∧ x ∈ A → x y F z ↔ y ∈ B ∧ z = F ⁡ x y
35 34 opabbidv ⊢ F : A × B ⟶ C ∧ x ∈ A → y z | x y F z = y z | y ∈ B ∧ z = F ⁡ x y
36 df-mpt ⊢ y ∈ B ⟼ F ⁡ x y = y z | y ∈ B ∧ z = F ⁡ x y
37 35 36 eqtr4di ⊢ F : A × B ⟶ C ∧ x ∈ A → y z | x y F z = y ∈ B ⟼ F ⁡ x y
38 37 mpteq2dva ⊢ F : A × B ⟶ C → x ∈ A ⟼ y z | x y F z = x ∈ A ⟼ y ∈ B ⟼ F ⁡ x y
39 38 adantr ⊢ F : A × B ⟶ C ∧ B ≠ ∅ → x ∈ A ⟼ y z | x y F z = x ∈ A ⟼ y ∈ B ⟼ F ⁡ x y
40 19 39 eqtrd ⊢ F : A × B ⟶ C ∧ B ≠ ∅ → x ∈ dom ⁡ dom ⁡ F ⟼ y z | x y F z = x ∈ A ⟼ y ∈ B ⟼ F ⁡ x y
41 14 40 eqtrid ⊢ F : A × B ⟶ C ∧ B ≠ ∅ → curry F = x ∈ A ⟼ y ∈ B ⟼ F ⁡ x y
42 41 feq1d ⊢ F : A × B ⟶ C ∧ B ≠ ∅ → curry F : A ⟶ C B ↔ x ∈ A ⟼ y ∈ B ⟼ F ⁡ x y : A ⟶ C B
43 13 42 sylan2 ⊢ F : A × B ⟶ C ∧ B ∈ V ∖ ∅ → curry F : A ⟶ C B ↔ x ∈ A ⟼ y ∈ B ⟼ F ⁡ x y : A ⟶ C B
44 43 3adant3 ⊢ F : A × B ⟶ C ∧ B ∈ V ∖ ∅ ∧ C ∈ W → curry F : A ⟶ C B ↔ x ∈ A ⟼ y ∈ B ⟼ F ⁡ x y : A ⟶ C B
45 12 44 mpbird ⊢ F : A × B ⟶ C ∧ B ∈ V ∖ ∅ ∧ C ∈ W → curry F : A ⟶ C B