Users' Mathboxes Mathbox for Brendan Leahy < Previous   Next >
Nearby theorems
Mirrors  >  Home  >  MPE Home  >  Th. List  >   Mathboxes  >  curunc Structured version   Visualization version   GIF version

Theorem curunc 38717
Description: Currying of uncurrying. (Contributed by Brendan Leahy, 2-Jun-2021.)
Assertion
Ref Expression
curunc ((𝐹:𝐴⟶(𝐶 ↑m 𝐵) ∧ 𝐵 ≠ ∅) → curry uncurry 𝐹 = 𝐹)

Proof of Theorem curunc
Dummy variables 𝑥 𝑦 𝑧 are mutually distinct and distinct from all other variables.
StepHypRef Expression
1 simpl 488 . . 3 ((𝐹:𝐴⟶(𝐶 ↑m 𝐵) ∧ 𝐵 ≠ ∅) → 𝐹:𝐴⟶(𝐶 ↑m 𝐵))
21feqmptd 6976 . 2 ((𝐹:𝐴⟶(𝐶 ↑m 𝐵) ∧ 𝐵 ≠ ∅) → 𝐹 = (𝑥 ∈ 𝐴 ↦ (𝐹‘𝑥)))
3 uncf 8919 . . . . . . . 8 (𝐹:𝐴⟶(𝐶 ↑m 𝐵) → uncurry 𝐹:(𝐴 × 𝐵)⟶𝐶)
43fdmd 6742 . . . . . . 7 (𝐹:𝐴⟶(𝐶 ↑m 𝐵) → dom uncurry 𝐹 = (𝐴 × 𝐵))
54dmeqd 5894 . . . . . 6 (𝐹:𝐴⟶(𝐶 ↑m 𝐵) → dom dom uncurry 𝐹 = dom (𝐴 × 𝐵))
6 dmxp 5918 . . . . . 6 (𝐵 ≠ ∅ → dom (𝐴 × 𝐵) = 𝐴)
75, 6sylan9eq 2818 . . . . 5 ((𝐹:𝐴⟶(𝐶 ↑m 𝐵) ∧ 𝐵 ≠ ∅) → dom dom uncurry 𝐹 = 𝐴)
87eqcomd 2769 . . . 4 ((𝐹:𝐴⟶(𝐶 ↑m 𝐵) ∧ 𝐵 ≠ ∅) → 𝐴 = dom dom uncurry 𝐹)
9 df-mpt 5190 . . . . . 6 (𝑦 ∈ 𝐵 ↦ ((𝐹‘𝑥)‘𝑦)) = {⟨𝑦, 𝑧⟩ ∣ (𝑦 ∈ 𝐵 ∧ 𝑧 = ((𝐹‘𝑥)‘𝑦))}
10 ffvelcdm 7105 . . . . . . . 8 ((𝐹:𝐴⟶(𝐶 ↑m 𝐵) ∧ 𝑥 ∈ 𝐴) → (𝐹‘𝑥) ∈ (𝐶 ↑m 𝐵))
11 elmapi 8897 . . . . . . . 8 ((𝐹‘𝑥) ∈ (𝐶 ↑m 𝐵) → (𝐹‘𝑥):𝐵⟶𝐶)
1210, 11syl 18 . . . . . . 7 ((𝐹:𝐴⟶(𝐶 ↑m 𝐵) ∧ 𝑥 ∈ 𝐴) → (𝐹‘𝑥):𝐵⟶𝐶)
1312feqmptd 6976 . . . . . 6 ((𝐹:𝐴⟶(𝐶 ↑m 𝐵) ∧ 𝑥 ∈ 𝐴) → (𝐹‘𝑥) = (𝑦 ∈ 𝐵 ↦ ((𝐹‘𝑥)‘𝑦)))
14 ffun 6734 . . . . . . . . . 10 (uncurry 𝐹:(𝐴 × 𝐵)⟶𝐶 → Fun uncurry 𝐹)
15 funbrfv2b 6965 . . . . . . . . . 10 (Fun uncurry 𝐹 → (⟨𝑥, 𝑦⟩uncurry 𝐹𝑧 ↔ (⟨𝑥, 𝑦⟩ ∈ dom uncurry 𝐹 ∧ (uncurry 𝐹‘⟨𝑥, 𝑦⟩) = 𝑧)))
163, 14, 153syl 19 . . . . . . . . 9 (𝐹:𝐴⟶(𝐶 ↑m 𝐵) → (⟨𝑥, 𝑦⟩uncurry 𝐹𝑧 ↔ (⟨𝑥, 𝑦⟩ ∈ dom uncurry 𝐹 ∧ (uncurry 𝐹‘⟨𝑥, 𝑦⟩) = 𝑧)))
1716adantr 486 . . . . . . . 8 ((𝐹:𝐴⟶(𝐶 ↑m 𝐵) ∧ 𝑥 ∈ 𝐴) → (⟨𝑥, 𝑦⟩uncurry 𝐹𝑧 ↔ (⟨𝑥, 𝑦⟩ ∈ dom uncurry 𝐹 ∧ (uncurry 𝐹‘⟨𝑥, 𝑦⟩) = 𝑧)))
184eleq2d 2850 . . . . . . . . . 10 (𝐹:𝐴⟶(𝐶 ↑m 𝐵) → (⟨𝑥, 𝑦⟩ ∈ dom uncurry 𝐹 ↔ ⟨𝑥, 𝑦⟩ ∈ (𝐴 × 𝐵)))
19 opelxp 5691 . . . . . . . . . . 11 (⟨𝑥, 𝑦⟩ ∈ (𝐴 × 𝐵) ↔ (𝑥 ∈ 𝐴 ∧ 𝑦 ∈ 𝐵))
2019baib 545 . . . . . . . . . 10 (𝑥 ∈ 𝐴 → (⟨𝑥, 𝑦⟩ ∈ (𝐴 × 𝐵) ↔ 𝑦 ∈ 𝐵))
2118, 20sylan9bb 519 . . . . . . . . 9 ((𝐹:𝐴⟶(𝐶 ↑m 𝐵) ∧ 𝑥 ∈ 𝐴) → (⟨𝑥, 𝑦⟩ ∈ dom uncurry 𝐹 ↔ 𝑦 ∈ 𝐵))
22 df-ov 7446 . . . . . . . . . . . . 13 (𝑥uncurry 𝐹𝑦) = (uncurry 𝐹‘⟨𝑥, 𝑦⟩)
23 uncov 8921 . . . . . . . . . . . . . 14 ((𝑥 ∈ V ∧ 𝑦 ∈ V) → (𝑥uncurry 𝐹𝑦) = ((𝐹‘𝑥)‘𝑦))
2423el2v 3461 . . . . . . . . . . . . 13 (𝑥uncurry 𝐹𝑦) = ((𝐹‘𝑥)‘𝑦)
2522, 24eqtr3i 2788 . . . . . . . . . . . 12 (uncurry 𝐹‘⟨𝑥, 𝑦⟩) = ((𝐹‘𝑥)‘𝑦)
2625eqeq1i 2768 . . . . . . . . . . 11 ((uncurry 𝐹‘⟨𝑥, 𝑦⟩) = 𝑧 ↔ ((𝐹‘𝑥)‘𝑦) = 𝑧)
27 eqcom 2770 . . . . . . . . . . 11 (((𝐹‘𝑥)‘𝑦) = 𝑧 ↔ 𝑧 = ((𝐹‘𝑥)‘𝑦))
2826, 27bitri 278 . . . . . . . . . 10 ((uncurry 𝐹‘⟨𝑥, 𝑦⟩) = 𝑧 ↔ 𝑧 = ((𝐹‘𝑥)‘𝑦))
2928a1i 11 . . . . . . . . 9 ((𝐹:𝐴⟶(𝐶 ↑m 𝐵) ∧ 𝑥 ∈ 𝐴) → ((uncurry 𝐹‘⟨𝑥, 𝑦⟩) = 𝑧 ↔ 𝑧 = ((𝐹‘𝑥)‘𝑦)))
3021, 29anbi12d 644 . . . . . . . 8 ((𝐹:𝐴⟶(𝐶 ↑m 𝐵) ∧ 𝑥 ∈ 𝐴) → ((⟨𝑥, 𝑦⟩ ∈ dom uncurry 𝐹 ∧ (uncurry 𝐹‘⟨𝑥, 𝑦⟩) = 𝑧) ↔ (𝑦 ∈ 𝐵 ∧ 𝑧 = ((𝐹‘𝑥)‘𝑦))))
3117, 30bitrd 282 . . . . . . 7 ((𝐹:𝐴⟶(𝐶 ↑m 𝐵) ∧ 𝑥 ∈ 𝐴) → (⟨𝑥, 𝑦⟩uncurry 𝐹𝑧 ↔ (𝑦 ∈ 𝐵 ∧ 𝑧 = ((𝐹‘𝑥)‘𝑦))))
3231opabbidv 5174 . . . . . 6 ((𝐹:𝐴⟶(𝐶 ↑m 𝐵) ∧ 𝑥 ∈ 𝐴) → {⟨𝑦, 𝑧⟩ ∣ ⟨𝑥, 𝑦⟩uncurry 𝐹𝑧} = {⟨𝑦, 𝑧⟩ ∣ (𝑦 ∈ 𝐵 ∧ 𝑧 = ((𝐹‘𝑥)‘𝑦))})
339, 13, 323eqtr4a 2824 . . . . 5 ((𝐹:𝐴⟶(𝐶 ↑m 𝐵) ∧ 𝑥 ∈ 𝐴) → (𝐹‘𝑥) = {⟨𝑦, 𝑧⟩ ∣ ⟨𝑥, 𝑦⟩uncurry 𝐹𝑧})
3433adantlr 728 . . . 4 (((𝐹:𝐴⟶(𝐶 ↑m 𝐵) ∧ 𝐵 ≠ ∅) ∧ 𝑥 ∈ 𝐴) → (𝐹‘𝑥) = {⟨𝑦, 𝑧⟩ ∣ ⟨𝑥, 𝑦⟩uncurry 𝐹𝑧})
358, 34mpteq12dva 5194 . . 3 ((𝐹:𝐴⟶(𝐶 ↑m 𝐵) ∧ 𝐵 ≠ ∅) → (𝑥 ∈ 𝐴 ↦ (𝐹‘𝑥)) = (𝑥 ∈ dom dom uncurry 𝐹 ↦ {⟨𝑦, 𝑧⟩ ∣ ⟨𝑥, 𝑦⟩uncurry 𝐹𝑧}))
36 df-cur 8312 . . 3 curry uncurry 𝐹 = (𝑥 ∈ dom dom uncurry 𝐹 ↦ {⟨𝑦, 𝑧⟩ ∣ ⟨𝑥, 𝑦⟩uncurry 𝐹𝑧})
3735, 36eqtr4di 2816 . 2 ((𝐹:𝐴⟶(𝐶 ↑m 𝐵) ∧ 𝐵 ≠ ∅) → (𝑥 ∈ 𝐴 ↦ (𝐹‘𝑥)) = curry uncurry 𝐹)
382, 37eqtr2d 2799 1 ((𝐹:𝐴⟶(𝐶 ↑m 𝐵) ∧ 𝐵 ≠ ∅) → curry uncurry 𝐹 = 𝐹)
Colors of variables:    wff setvar class
This proof depends on syntax axioms:   → wi 4   ↔ wb 209   ∧ wa 401   = wceq 1570   ∈ wcel 2147   ≠ wne 2959  Vcvv 3454  ∅c0 4281  ⟨cop 4838   class class class wbr 5106  {copab 5170   ↦ cmpt 5189   × cxp 5653  dom cdm 5655  Fun wfun 6552  ⟶wf 6554  ‘cfv 6558  (class class class)co 7443  curry ccur 8310  uncurry cunc 8311   ↑m cmap 8875
This proof depends on axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1828  ax-4 1842  ax-5 1945  ax-6 2002  ax-7 2043  ax-8 2149  ax-9 2157  ax-10 2180  ax-11 2197  ax-12 2216  ax-ext 2735  ax-sep 5252  ax-nul 5263  ax-pow 5331  ax-pr 5395  ax-un 7775
This proof depends on definitions:  df-bi 210  df-an 402  df-or 862  df-3an 1105  df-tru 1573  df-fal 1583  df-ex 1813  df-nf 1817  df-sb 2102  df-mo 2567  df-eu 2597  df-clab 2742  df-cleq 2755  df-clel 2839  df-nfc 2913  df-ne 2960  df-ral 3081  df-rex 3091  df-rab 3417  df-v 3456  df-sbc 3743  df-csb 3852  df-ss 3901  df-dif 4050  df-in 4094  df-un 4154  df-nul 4282  df-if 4486  df-pw 4562  df-sn 4589  df-pr 4591  df-op 4839  df-uni 4871  df-iun 4956  df-br 5107  df-opab 5171  df-mpt 5190  df-id 5550  df-xp 5661  df-rel 5662  df-cnv 5663  df-co 5664  df-dm 5665  df-rn 5666  df-res 5667  df-ima 5668  df-iota 6512  df-fun 6560  df-fn 6561  df-f 6562  df-fv 6566  df-ov 7446  df-oprab 7447  df-mpo 7448  df-1st 8025  df-2nd 8026  df-cur 8312  df-unc 8313  df-map 8877
This theorem is used by: (None)
  Copyright terms: Public domain W3C validator