MPE Home Metamath Proof Explorer < Previous   Next >
Nearby theorems
Mirrors  >  Home  >  MPE Home  >  Th. List  >  curry1 Structured version   Visualization version   GIF version

Theorem curry1 7872
Description: Composition with (2nd ↾ ({𝐶} × V)) turns any binary operation 𝐹 with a constant first operand into a function 𝐺 of the second operand only. This transformation is called "currying". (Contributed by NM, 28-Mar-2008.) (Revised by Mario Carneiro, 26-Dec-2014.)
Hypothesis
Ref Expression
curry1.1 𝐺 = (𝐹(2nd ↾ ({𝐶} × V)))
Assertion
Ref Expression
curry1 ((𝐹 Fn (𝐴 × 𝐵) ∧ 𝐶𝐴) → 𝐺 = (𝑥𝐵 ↦ (𝐶𝐹𝑥)))
Distinct variable groups:   𝑥,𝐴   𝑥,𝐵   𝑥,𝐶   𝑥,𝐹   𝑥,𝐺

Proof of Theorem curry1
StepHypRef Expression
1 fnfun 6479 . . . . 5 (𝐹 Fn (𝐴 × 𝐵) → Fun 𝐹)
2 2ndconst 7869 . . . . . 6 (𝐶𝐴 → (2nd ↾ ({𝐶} × V)):({𝐶} × V)–1-1-onto→V)
3 dff1o3 6667 . . . . . . 7 ((2nd ↾ ({𝐶} × V)):({𝐶} × V)–1-1-onto→V ↔ ((2nd ↾ ({𝐶} × V)):({𝐶} × V)–onto→V ∧ Fun (2nd ↾ ({𝐶} × V))))
43simprbi 500 . . . . . 6 ((2nd ↾ ({𝐶} × V)):({𝐶} × V)–1-1-onto→V → Fun (2nd ↾ ({𝐶} × V)))
52, 4syl 17 . . . . 5 (𝐶𝐴 → Fun (2nd ↾ ({𝐶} × V)))
6 funco 6420 . . . . 5 ((Fun 𝐹 ∧ Fun (2nd ↾ ({𝐶} × V))) → Fun (𝐹(2nd ↾ ({𝐶} × V))))
71, 5, 6syl2an 599 . . . 4 ((𝐹 Fn (𝐴 × 𝐵) ∧ 𝐶𝐴) → Fun (𝐹(2nd ↾ ({𝐶} × V))))
8 dmco 6118 . . . . 5 dom (𝐹(2nd ↾ ({𝐶} × V))) = ((2nd ↾ ({𝐶} × V)) “ dom 𝐹)
9 fndm 6481 . . . . . . . 8 (𝐹 Fn (𝐴 × 𝐵) → dom 𝐹 = (𝐴 × 𝐵))
109adantr 484 . . . . . . 7 ((𝐹 Fn (𝐴 × 𝐵) ∧ 𝐶𝐴) → dom 𝐹 = (𝐴 × 𝐵))
1110imaeq2d 5929 . . . . . 6 ((𝐹 Fn (𝐴 × 𝐵) ∧ 𝐶𝐴) → ((2nd ↾ ({𝐶} × V)) “ dom 𝐹) = ((2nd ↾ ({𝐶} × V)) “ (𝐴 × 𝐵)))
12 imacnvcnv 6069 . . . . . . . . 9 ((2nd ↾ ({𝐶} × V)) “ (𝐴 × 𝐵)) = ((2nd ↾ ({𝐶} × V)) “ (𝐴 × 𝐵))
13 df-ima 5564 . . . . . . . . 9 ((2nd ↾ ({𝐶} × V)) “ (𝐴 × 𝐵)) = ran ((2nd ↾ ({𝐶} × V)) ↾ (𝐴 × 𝐵))
14 resres 5864 . . . . . . . . . 10 ((2nd ↾ ({𝐶} × V)) ↾ (𝐴 × 𝐵)) = (2nd ↾ (({𝐶} × V) ∩ (𝐴 × 𝐵)))
1514rneqi 5806 . . . . . . . . 9 ran ((2nd ↾ ({𝐶} × V)) ↾ (𝐴 × 𝐵)) = ran (2nd ↾ (({𝐶} × V) ∩ (𝐴 × 𝐵)))
1612, 13, 153eqtri 2769 . . . . . . . 8 ((2nd ↾ ({𝐶} × V)) “ (𝐴 × 𝐵)) = ran (2nd ↾ (({𝐶} × V) ∩ (𝐴 × 𝐵)))
17 inxp 5701 . . . . . . . . . . . . 13 (({𝐶} × V) ∩ (𝐴 × 𝐵)) = (({𝐶} ∩ 𝐴) × (V ∩ 𝐵))
18 incom 4115 . . . . . . . . . . . . . . 15 (V ∩ 𝐵) = (𝐵 ∩ V)
19 inv1 4309 . . . . . . . . . . . . . . 15 (𝐵 ∩ V) = 𝐵
2018, 19eqtri 2765 . . . . . . . . . . . . . 14 (V ∩ 𝐵) = 𝐵
2120xpeq2i 5578 . . . . . . . . . . . . 13 (({𝐶} ∩ 𝐴) × (V ∩ 𝐵)) = (({𝐶} ∩ 𝐴) × 𝐵)
2217, 21eqtri 2765 . . . . . . . . . . . 12 (({𝐶} × V) ∩ (𝐴 × 𝐵)) = (({𝐶} ∩ 𝐴) × 𝐵)
23 snssi 4721 . . . . . . . . . . . . . 14 (𝐶𝐴 → {𝐶} ⊆ 𝐴)
24 df-ss 3883 . . . . . . . . . . . . . 14 ({𝐶} ⊆ 𝐴 ↔ ({𝐶} ∩ 𝐴) = {𝐶})
2523, 24sylib 221 . . . . . . . . . . . . 13 (𝐶𝐴 → ({𝐶} ∩ 𝐴) = {𝐶})
2625xpeq1d 5580 . . . . . . . . . . . 12 (𝐶𝐴 → (({𝐶} ∩ 𝐴) × 𝐵) = ({𝐶} × 𝐵))
2722, 26eqtrid 2789 . . . . . . . . . . 11 (𝐶𝐴 → (({𝐶} × V) ∩ (𝐴 × 𝐵)) = ({𝐶} × 𝐵))
2827reseq2d 5851 . . . . . . . . . 10 (𝐶𝐴 → (2nd ↾ (({𝐶} × V) ∩ (𝐴 × 𝐵))) = (2nd ↾ ({𝐶} × 𝐵)))
2928rneqd 5807 . . . . . . . . 9 (𝐶𝐴 → ran (2nd ↾ (({𝐶} × V) ∩ (𝐴 × 𝐵))) = ran (2nd ↾ ({𝐶} × 𝐵)))
30 2ndconst 7869 . . . . . . . . . 10 (𝐶𝐴 → (2nd ↾ ({𝐶} × 𝐵)):({𝐶} × 𝐵)–1-1-onto𝐵)
31 f1ofo 6668 . . . . . . . . . 10 ((2nd ↾ ({𝐶} × 𝐵)):({𝐶} × 𝐵)–1-1-onto𝐵 → (2nd ↾ ({𝐶} × 𝐵)):({𝐶} × 𝐵)–onto𝐵)
32 forn 6636 . . . . . . . . . 10 ((2nd ↾ ({𝐶} × 𝐵)):({𝐶} × 𝐵)–onto𝐵 → ran (2nd ↾ ({𝐶} × 𝐵)) = 𝐵)
3330, 31, 323syl 18 . . . . . . . . 9 (𝐶𝐴 → ran (2nd ↾ ({𝐶} × 𝐵)) = 𝐵)
3429, 33eqtrd 2777 . . . . . . . 8 (𝐶𝐴 → ran (2nd ↾ (({𝐶} × V) ∩ (𝐴 × 𝐵))) = 𝐵)
3516, 34eqtrid 2789 . . . . . . 7 (𝐶𝐴 → ((2nd ↾ ({𝐶} × V)) “ (𝐴 × 𝐵)) = 𝐵)
3635adantl 485 . . . . . 6 ((𝐹 Fn (𝐴 × 𝐵) ∧ 𝐶𝐴) → ((2nd ↾ ({𝐶} × V)) “ (𝐴 × 𝐵)) = 𝐵)
3711, 36eqtrd 2777 . . . . 5 ((𝐹 Fn (𝐴 × 𝐵) ∧ 𝐶𝐴) → ((2nd ↾ ({𝐶} × V)) “ dom 𝐹) = 𝐵)
388, 37eqtrid 2789 . . . 4 ((𝐹 Fn (𝐴 × 𝐵) ∧ 𝐶𝐴) → dom (𝐹(2nd ↾ ({𝐶} × V))) = 𝐵)
39 curry1.1 . . . . . 6 𝐺 = (𝐹(2nd ↾ ({𝐶} × V)))
4039fneq1i 6476 . . . . 5 (𝐺 Fn 𝐵 ↔ (𝐹(2nd ↾ ({𝐶} × V))) Fn 𝐵)
41 df-fn 6383 . . . . 5 ((𝐹(2nd ↾ ({𝐶} × V))) Fn 𝐵 ↔ (Fun (𝐹(2nd ↾ ({𝐶} × V))) ∧ dom (𝐹(2nd ↾ ({𝐶} × V))) = 𝐵))
4240, 41bitri 278 . . . 4 (𝐺 Fn 𝐵 ↔ (Fun (𝐹(2nd ↾ ({𝐶} × V))) ∧ dom (𝐹(2nd ↾ ({𝐶} × V))) = 𝐵))
437, 38, 42sylanbrc 586 . . 3 ((𝐹 Fn (𝐴 × 𝐵) ∧ 𝐶𝐴) → 𝐺 Fn 𝐵)
44 dffn5 6771 . . 3 (𝐺 Fn 𝐵𝐺 = (𝑥𝐵 ↦ (𝐺𝑥)))
4543, 44sylib 221 . 2 ((𝐹 Fn (𝐴 × 𝐵) ∧ 𝐶𝐴) → 𝐺 = (𝑥𝐵 ↦ (𝐺𝑥)))
4639fveq1i 6718 . . . . 5 (𝐺𝑥) = ((𝐹(2nd ↾ ({𝐶} × V)))‘𝑥)
47 dff1o4 6669 . . . . . . . 8 ((2nd ↾ ({𝐶} × V)):({𝐶} × V)–1-1-onto→V ↔ ((2nd ↾ ({𝐶} × V)) Fn ({𝐶} × V) ∧ (2nd ↾ ({𝐶} × V)) Fn V))
482, 47sylib 221 . . . . . . 7 (𝐶𝐴 → ((2nd ↾ ({𝐶} × V)) Fn ({𝐶} × V) ∧ (2nd ↾ ({𝐶} × V)) Fn V))
49 fvco2 6808 . . . . . . . 8 (((2nd ↾ ({𝐶} × V)) Fn V ∧ 𝑥 ∈ V) → ((𝐹(2nd ↾ ({𝐶} × V)))‘𝑥) = (𝐹‘((2nd ↾ ({𝐶} × V))‘𝑥)))
5049elvd 3415 . . . . . . 7 ((2nd ↾ ({𝐶} × V)) Fn V → ((𝐹(2nd ↾ ({𝐶} × V)))‘𝑥) = (𝐹‘((2nd ↾ ({𝐶} × V))‘𝑥)))
5148, 50simpl2im 507 . . . . . 6 (𝐶𝐴 → ((𝐹(2nd ↾ ({𝐶} × V)))‘𝑥) = (𝐹‘((2nd ↾ ({𝐶} × V))‘𝑥)))
5251ad2antlr 727 . . . . 5 (((𝐹 Fn (𝐴 × 𝐵) ∧ 𝐶𝐴) ∧ 𝑥𝐵) → ((𝐹(2nd ↾ ({𝐶} × V)))‘𝑥) = (𝐹‘((2nd ↾ ({𝐶} × V))‘𝑥)))
5346, 52eqtrid 2789 . . . 4 (((𝐹 Fn (𝐴 × 𝐵) ∧ 𝐶𝐴) ∧ 𝑥𝐵) → (𝐺𝑥) = (𝐹‘((2nd ↾ ({𝐶} × V))‘𝑥)))
542adantr 484 . . . . . . . . 9 ((𝐶𝐴𝑥𝐵) → (2nd ↾ ({𝐶} × V)):({𝐶} × V)–1-1-onto→V)
55 snidg 4575 . . . . . . . . . . 11 (𝐶𝐴𝐶 ∈ {𝐶})
56 vex 3412 . . . . . . . . . . 11 𝑥 ∈ V
57 opelxp 5587 . . . . . . . . . . 11 (⟨𝐶, 𝑥⟩ ∈ ({𝐶} × V) ↔ (𝐶 ∈ {𝐶} ∧ 𝑥 ∈ V))
5855, 56, 57sylanblrc 593 . . . . . . . . . 10 (𝐶𝐴 → ⟨𝐶, 𝑥⟩ ∈ ({𝐶} × V))
5958adantr 484 . . . . . . . . 9 ((𝐶𝐴𝑥𝐵) → ⟨𝐶, 𝑥⟩ ∈ ({𝐶} × V))
6054, 59jca 515 . . . . . . . 8 ((𝐶𝐴𝑥𝐵) → ((2nd ↾ ({𝐶} × V)):({𝐶} × V)–1-1-onto→V ∧ ⟨𝐶, 𝑥⟩ ∈ ({𝐶} × V)))
6158fvresd 6737 . . . . . . . . . 10 (𝐶𝐴 → ((2nd ↾ ({𝐶} × V))‘⟨𝐶, 𝑥⟩) = (2nd ‘⟨𝐶, 𝑥⟩))
62 op2ndg 7774 . . . . . . . . . . 11 ((𝐶𝐴𝑥 ∈ V) → (2nd ‘⟨𝐶, 𝑥⟩) = 𝑥)
6362elvd 3415 . . . . . . . . . 10 (𝐶𝐴 → (2nd ‘⟨𝐶, 𝑥⟩) = 𝑥)
6461, 63eqtrd 2777 . . . . . . . . 9 (𝐶𝐴 → ((2nd ↾ ({𝐶} × V))‘⟨𝐶, 𝑥⟩) = 𝑥)
6564adantr 484 . . . . . . . 8 ((𝐶𝐴𝑥𝐵) → ((2nd ↾ ({𝐶} × V))‘⟨𝐶, 𝑥⟩) = 𝑥)
66 f1ocnvfv 7089 . . . . . . . 8 (((2nd ↾ ({𝐶} × V)):({𝐶} × V)–1-1-onto→V ∧ ⟨𝐶, 𝑥⟩ ∈ ({𝐶} × V)) → (((2nd ↾ ({𝐶} × V))‘⟨𝐶, 𝑥⟩) = 𝑥 → ((2nd ↾ ({𝐶} × V))‘𝑥) = ⟨𝐶, 𝑥⟩))
6760, 65, 66sylc 65 . . . . . . 7 ((𝐶𝐴𝑥𝐵) → ((2nd ↾ ({𝐶} × V))‘𝑥) = ⟨𝐶, 𝑥⟩)
6867fveq2d 6721 . . . . . 6 ((𝐶𝐴𝑥𝐵) → (𝐹‘((2nd ↾ ({𝐶} × V))‘𝑥)) = (𝐹‘⟨𝐶, 𝑥⟩))
6968adantll 714 . . . . 5 (((𝐹 Fn (𝐴 × 𝐵) ∧ 𝐶𝐴) ∧ 𝑥𝐵) → (𝐹‘((2nd ↾ ({𝐶} × V))‘𝑥)) = (𝐹‘⟨𝐶, 𝑥⟩))
70 df-ov 7216 . . . . 5 (𝐶𝐹𝑥) = (𝐹‘⟨𝐶, 𝑥⟩)
7169, 70eqtr4di 2796 . . . 4 (((𝐹 Fn (𝐴 × 𝐵) ∧ 𝐶𝐴) ∧ 𝑥𝐵) → (𝐹‘((2nd ↾ ({𝐶} × V))‘𝑥)) = (𝐶𝐹𝑥))
7253, 71eqtrd 2777 . . 3 (((𝐹 Fn (𝐴 × 𝐵) ∧ 𝐶𝐴) ∧ 𝑥𝐵) → (𝐺𝑥) = (𝐶𝐹𝑥))
7372mpteq2dva 5150 . 2 ((𝐹 Fn (𝐴 × 𝐵) ∧ 𝐶𝐴) → (𝑥𝐵 ↦ (𝐺𝑥)) = (𝑥𝐵 ↦ (𝐶𝐹𝑥)))
7445, 73eqtrd 2777 1 ((𝐹 Fn (𝐴 × 𝐵) ∧ 𝐶𝐴) → 𝐺 = (𝑥𝐵 ↦ (𝐶𝐹𝑥)))
Colors of variables: wff setvar class
Syntax hints:  wi 4  wa 399   = wceq 1543  wcel 2110  Vcvv 3408  cin 3865  wss 3866  {csn 4541  cop 4547  cmpt 5135   × cxp 5549  ccnv 5550  dom cdm 5551  ran crn 5552  cres 5553  cima 5554  ccom 5555  Fun wfun 6374   Fn wfn 6375  ontowfo 6378  1-1-ontowf1o 6379  cfv 6380  (class class class)co 7213  2nd c2nd 7760
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1803  ax-4 1817  ax-5 1918  ax-6 1976  ax-7 2016  ax-8 2112  ax-9 2120  ax-10 2141  ax-11 2158  ax-12 2175  ax-ext 2708  ax-sep 5192  ax-nul 5199  ax-pr 5322  ax-un 7523
This theorem depends on definitions:  df-bi 210  df-an 400  df-or 848  df-3an 1091  df-tru 1546  df-fal 1556  df-ex 1788  df-nf 1792  df-sb 2071  df-mo 2539  df-eu 2568  df-clab 2715  df-cleq 2729  df-clel 2816  df-nfc 2886  df-ne 2941  df-ral 3066  df-rex 3067  df-rab 3070  df-v 3410  df-sbc 3695  df-csb 3812  df-dif 3869  df-un 3871  df-in 3873  df-ss 3883  df-nul 4238  df-if 4440  df-sn 4542  df-pr 4544  df-op 4548  df-uni 4820  df-iun 4906  df-br 5054  df-opab 5116  df-mpt 5136  df-id 5455  df-xp 5557  df-rel 5558  df-cnv 5559  df-co 5560  df-dm 5561  df-rn 5562  df-res 5563  df-ima 5564  df-iota 6338  df-fun 6382  df-fn 6383  df-f 6384  df-f1 6385  df-fo 6386  df-f1o 6387  df-fv 6388  df-ov 7216  df-1st 7761  df-2nd 7762
This theorem is referenced by:  curry1val  7873  curry1f  7874
  Copyright terms: Public domain W3C validator