HomeHome Metamath Proof Explorer < Previous   Next >
Related theorems
Unicode version

Theorem curry2 5078
Description: Composition with `'(1st |` (_V X. {C})) turns any binary operation F with a constant second operand into a function G of the first operand only. This transformation is called "currying." (If this becomes frequently used, we can introduce a new notation for the hypothesis.)
Hypothesis
Ref Expression
curry2.1 |- G = (F o. `'(1st |` (_V X. {C})))
Assertion
Ref Expression
curry2 |- ((F Fn (A X. B) /\ C e. B) -> G = {<.x, y>. | (x e. A /\ y = (xFC))})
Distinct variable groups:   x,y,A   x,B,y   x,C,y   x,F,y

Proof of Theorem curry2
StepHypRef Expression
1 1stconst 5070 . . . . . . . . . 10 |- (C e. B -> (1st |` (_V X. {C})):(_V X. {C})-1-1-onto->_V)
21adantr 425 . . . . . . . . 9 |- ((C e. B /\ z e. A) -> (1st |` (_V X. {C})):(_V X. {C})-1-1-onto->_V)
3 snidg 3067 . . . . . . . . . . . 12 |- (C e. B -> C e. {C})
4 visset 2295 . . . . . . . . . . . 12 |- z e. _V
53, 4jctil 316 . . . . . . . . . . 11 |- (C e. B -> (z e. _V /\ C e. {C}))
6 opelxpg 4039 . . . . . . . . . . 11 |- (C e. B -> (<.z, C>. e. (_V X. {C}) <-> (z e. _V /\ C e. {C})))
75, 6mpbird 213 . . . . . . . . . 10 |- (C e. B -> <.z, C>. e. (_V X. {C}))
87adantr 425 . . . . . . . . 9 |- ((C e. B /\ z e. A) -> <.z, C>. e. (_V X. {C}))
92, 8jca 310 . . . . . . . 8 |- ((C e. B /\ z e. A) -> ((1st |` (_V X. {C})):(_V X. {C})-1-1-onto->_V /\ <.z, C>. e. (_V X. {C})))
10 fvres 4691 . . . . . . . . . . 11 |- (<.z, C>. e. (_V X. {C}) -> ((1st |` (_V X. {C}))` <.z, C>.) = (1st` <.z, C>.))
117, 10syl 12 . . . . . . . . . 10 |- (C e. B -> ((1st |` (_V X. {C}))` <.z, C>.) = (1st`
<.z, C>.))
124op1st 5026 . . . . . . . . . 10 |- (1st` <.z, C>.) = z
1311, 12syl6eq 1944 . . . . . . . . 9 |- (C e. B -> ((1st |` (_V X. {C}))` <.z, C>.) = z)
1413adantr 425 . . . . . . . 8 |- ((C e. B /\ z e. A) -> ((1st |` (_V X. {C}))` <.z, C>.) = z)
15 f1ocnvfv 4856 . . . . . . . 8 |- (((1st |` (_V X. {C})):(_V X. {C})-1-1-onto->_V /\ <.z, C>. e. (_V X. {C})) -> (((1st |` (_V X. {C}))` <.z, C>.) = z -> (`'(1st |` (_V X. {C}))` z) = <.z, C>.))
169, 14, 15sylc 83 . . . . . . 7 |- ((C e. B /\ z e. A) -> (`'(1st |` (_V X. {C}))` z) = <.z, C>.)
1716fveq2d 4685 . . . . . 6 |- ((C e. B /\ z e. A) -> (F` (`'(1st |` (_V X. {C}))` z)) = (F` <.z, C>.))
1817adantll 428 . . . . 5 |- (((F Fn (A X. B) /\ C e. B) /\ z e. A) -> (F` (`'(1st |` (_V X. {C}))` z)) = (F` <.z, C>.))
19 df-opr 4886 . . . . 5 |- (zFC) = (F` <.z, C>.)
2018, 19syl6eqr 1946 . . . 4 |- (((F Fn (A X. B) /\ C e. B) /\ z e. A) -> (F` (`'(1st |` (_V X. {C}))` z)) = (zFC))
21 fvco2 4737 . . . . . . . 8 |- ((Fun F /\ `'(1st |` (_V X. {C})) Fn _V /\ z e. _V) -> ((F o. `'(1st |` (_V X. {C})))` z) = (F` (`'(1st |` (_V X. {C}))` z)))
224, 21mp3an3 1180 . . . . . . 7 |- ((Fun F /\ `'(1st |` (_V X. {C})) Fn _V) -> ((F o. `'(1st |` (_V X. {C})))` z) = (F` (`'(1st |` (_V X. {C}))` z)))
23 fnfun 4510 . . . . . . 7 |- (F Fn (A X. B) -> Fun F)
24 dff1o4 4644 . . . . . . . . 9 |- ((1st |` (_V X. {C})):(_V X. {C})-1-1-onto->_V <-> ((1st |` (_V X. {C})) Fn (_V X. {C}) /\ `'(1st |` (_V X. {C})) Fn _V))
251, 24sylib 215 . . . . . . . 8 |- (C e. B -> ((1st |` (_V X. {C})) Fn (_V X. {C}) /\ `'(1st |` (_V X. {C})) Fn _V))
2625simprd 352 . . . . . . 7 |- (C e. B -> `'(1st |` (_V X. {C})) Fn _V)
2722, 23, 26syl2an 503 . . . . . 6 |- ((F Fn (A X. B) /\ C e. B) -> ((F o. `'(1st |` (_V X. {C})))` z) = (F` (`'(1st |` (_V X. {C}))` z)))
2827adantr 425 . . . . 5 |- (((F Fn (A X. B) /\ C e. B) /\ z e. A) -> ((F o. `'(1st |` (_V X. {C})))` z) = (F` (`'(1st |` (_V X. {C}))` z)))
29 curry2.1 . . . . . 6 |- G = (F o. `'(1st |` (_V X. {C})))
3029fveq1i 4682 . . . . 5 |- (G` z) = ((F o. `'(1st |` (_V X. {C})))` z)
3128, 30syl5eq 1940 . . . 4 |- (((F Fn (A X. B) /\ C e. B) /\ z e. A) -> (G` z) = (F` (`'(1st |` (_V X. {C}))` z)))
32 opreq1 4889 . . . . . 6 |- (x = z -> (xFC) = (zFC))
33 eqid 1884 . . . . . 6 |- {<.x, y>. | (x e. A /\ y = (xFC))} = {<.x, y>. | (x e. A /\ y = (xFC))}
34 oprex 4907 . . . . . 6 |- (zFC) e. _V
3532, 33, 34fvopab4 4743 . . . . 5 |- (z e. A -> ({<.x, y>. | (x e. A /\ y = (xFC))}` z) = (zFC))
3635adantl 424 . . . 4 |- (((F Fn (A X. B) /\ C e. B) /\ z e. A) -> ({<.x, y>. | (x e. A /\ y = (xFC))}` z) = (zFC))
3720, 31, 363eqtr4d 1937 . . 3 |- (((F Fn (A X. B) /\ C e. B) /\ z e. A) -> (G` z) = ({<.x, y>. | (x e. A /\ y = (xFC))}` z))
3837r19.21aiva 2176 . 2 |- ((F Fn (A X. B) /\ C e. B) -> A.z e. A (G` z) = ({<.x, y>. | (x e. A /\ y = (xFC))}` z))
39 eqfnfv2 4767 . . 3 |- ((G Fn A /\ {<.x, y>. | (x e. A /\ y = (xFC))} Fn A) -> (G = {<.x, y>. | (x e. A /\ y = (xFC))} <-> A.z e. A (G` z) = ({<.x, y>. | (x e. A /\ y = (xFC))}` z)))
4029fneq1i 4507 . . . . 5 |- (G Fn A <-> (F o. `'(1st |` (_V X. {C}))) Fn A)
41 df-fn 4009 . . . . 5 |- ((F o. `'(1st |` (_V X. {C}))) Fn A <-> (Fun (F o. `'(1st |` (_V X. {C}))) /\ dom ( F o. `'(1st |` (_V X. {C}))) = A))
4240, 41bitri 190 . . . 4 |- (G Fn A <-> (Fun (F o. `'(1st |` (_V X. {C}))) /\ dom ( F o. `'(1st |` (_V X. {C}))) = A))
43 funco 4457 . . . . 5 |- ((Fun F /\ Fun `'(1st |` (_V X. {C}))) -> Fun (F o. `'(1st |` (_V X. {C}))))
44 dff1o3 4641 . . . . . . 7 |- ((1st |` (_V X. {C})):(_V X. {C})-1-1-onto->_V <-> ((1st |` (_V X. {C})):(_V X. {C})-onto->_V /\ Fun `'(1st |` (_V X. {C}))))
4544simprbi 353 . . . . . 6 |- ((1st |` (_V X. {C})):(_V X. {C})-1-1-onto->_V -> Fun `'(1st |` (_V X. {C})))
461, 45syl 12 . . . . 5 |- (C e. B -> Fun `'(1st |` (_V X. {C})))
4743, 23, 46syl2an 503 . . . 4 |- ((F Fn (A X. B) /\ C e. B) -> Fun (F o. `'(1st |` (_V X. {C}))))
48 fndm 4512 . . . . . . . 8 |- (F Fn (A X. B) -> dom F = (A X. B))
4948adantr 425 . . . . . . 7 |- ((F Fn (A X. B) /\ C e. B) -> dom F = (A X. B))
5049imaeq2d 4264 . . . . . 6 |- ((F Fn (A X. B) /\ C e. B) -> (`'`'(1st |` (_V X. {C}))"dom F) = (`'`'(1st |` (_V X. {C}))"(A X. B)))
51 snssi 3129 . . . . . . . . . . . . . 14 |- (C e. B -> {C} C_ B)
52 df-ss 2605 . . . . . . . . . . . . . 14 |- ({C} C_ B <-> ({C} i^i B) = {C})
5351, 52sylib 215 . . . . . . . . . . . . 13 |- (C e. B -> ({C} i^i B) = {C})
54 xpeq2 4017 . . . . . . . . . . . . 13 |- (({C} i^i B) = {C} -> (A X. ({C} i^i B)) = (A X. {C}))
5553, 54syl 12 . . . . . . . . . . . 12 |- (C e. B -> (A X. ({C} i^i B)) = (A X. {C}))
56 inxp 4109 . . . . . . . . . . . . 13 |- ((_V X. {C}) i^i (A X. B)) = ((_V i^i A) X. ({C} i^i B))
57 incom 2787 . . . . . . . . . . . . . . 15 |- (_V i^i A) = (A i^i _V)
58 inv1 2898 . . . . . . . . . . . . . . 15 |- (A i^i _V) = A
5957, 58eqtri 1908 . . . . . . . . . . . . . 14 |- (_V i^i A) = A
6059xpeq1i 4021 . . . . . . . . . . . . 13 |- ((_V i^i A) X. ({C} i^i B)) = (A X. ({C} i^i B))
6156, 60eqtri 1908 . . . . . . . . . . . 12 |- ((_V X. {C}) i^i (A X. B)) = (A X. ({C} i^i B))
6255, 61syl5eq 1940 . . . . . . . . . . 11 |- (C e. B -> ((_V X. {C}) i^i (A X. B)) = (A X. {C}))
63 reseq2 4219 . . . . . . . . . . 11 |- (((_V X. {C}) i^i (A X. B)) = (A X. {C}) -> (1st |` ((_V X. {C}) i^i (A X. B))) = (1st |` (A X. {C})))
6462, 63syl 12 . . . . . . . . . 10 |- (C e. B -> (1st |` ((_V X. {C}) i^i (A X. B))) = (1st |` (A X. {C})))
6564rneqd 4188 . . . . . . . . 9 |- (C e. B -> ran (1st |` ((_V X. {C}) i^i (A X. B))) = ran (1st |` (A X. {C})))
66 1stconst 5070 . . . . . . . . . . 11 |- (C e. B -> (1st |` (A X. {C})):(A X. {C})-1-1-onto->A)
67 f1ofo 4643 . . . . . . . . . . 11 |- ((1st |` (A X. {C})):(A X. {C})-1-1-onto->A -> (1st |` (A X. {C})):(A X. {C})-onto->A)
6866, 67syl 12 . . . . . . . . . 10 |- (C e. B -> (1st |` (A X. {C})):(A X. {C})-onto->A)
69 forn 4620 . . . . . . . . . 10 |- ((1st |` (A X. {C})):(A X. {C})-onto->A -> ran (1st |` (A X. {C})) = A)
7068, 69syl 12 . . . . . . . . 9 |- (C e. B -> ran (1st |` (A X. {C})) = A)
7165, 70eqtrd 1925 . . . . . . . 8 |- (C e. B -> ran (1st |` ((_V X. {C}) i^i (A X. B))) = A)
72 imacnvcnv 4388 . . . . . . . . 9 |- (`'`'(1st |` (_V X. {C}))"(A X. B)) = ((1st |` (_V X. {C}))"(A X. B))
73 df-ima 4007 . . . . . . . . 9 |- ((1st |` (_V X. {C}))"(A X. B)) = ran ((1st |` (_V X. {C})) |` (A X. B))
74 resres 4228 . . . . . . . . . 10 |- ((1st |` (_V X. {C})) |` (A X. B)) = (1st |` ((_V X. {C}) i^i (A X. B)))
7574rneqi 4187 . . . . . . . . 9 |- ran ((1st |` (_V X. {C})) |` (A X. B)) = ran (1st |` ((_V X. {C}) i^i (A X. B)))
7672, 73, 753eqtri 1912 . . . . . . . 8 |- (`'`'(1st |` (_V X. {C}))"(A X. B)) = ran (1st |` ((_V X. {C}) i^i (A X. B)))
7771, 76syl5eq 1940 . . . . . . 7 |- (C e. B -> (`'`'(1st |` (_V X. {C}))"(A X. B)) = A)
7877adantl 424 . . . . . 6 |- ((F Fn (A X. B) /\ C e. B) -> (`'`'(1st |` (_V X. {C}))"(A X. B)) = A)
7950, 78eqtrd 1925 . . . . 5 |- ((F Fn (A X. B) /\ C e. B) -> (`'`'(1st |` (_V X. {C}))"dom F) = A)
80 dmco 4406 . . . . 5 |- dom ( F o. `'(1st |` (_V X. {C}))) = (`'`'(1st |` (_V X. {C}))"dom F)
8179, 80syl5eq 1940 . . . 4 |- ((F Fn (A X. B) /\ C e. B) -> dom ( F o. `'(1st |` (_V X. {C}))) = A)
8242, 47, 81sylanbrc 527 . . 3 |- ((F Fn (A X. B) /\ C e. B) -> G Fn A)
83 oprex 4907 . . . 4 |- (xFC) e. _V
8483, 33fnopab2 4549 . . 3 |- {<.x, y>. | (x e. A /\ y = (xFC))} Fn A
8539, 82, 84sylancl 525 . 2 |- ((F Fn (A X. B) /\ C e. B) -> (G = {<.x, y>. | (x e. A /\ y = (xFC))} <-> A.z e. A (G` z) = ({<.x, y>. | (x e. A /\ y = (xFC))}` z)))
8638, 85mpbird 213 1 |- ((F Fn (A X. B) /\ C e. B) -> G = {<.x, y>. | (x e. A /\ y = (xFC))})
Colors of variables: wff set class
Syntax hints:   -> wi 3   <-> wb 163   /\ wa 240   = wceq 1298   e. wcel 1300  A.wral 2105  _Vcvv 2292   i^i cin 2592   C_ wss 2593  {csn 3044  <.cop 3046  {copab 3395   X. cxp 3984  `'ccnv 3985  dom cdm 3986  ran crn 3987   |` cres 3988  "cima 3989   o. ccom 3990  Fun wfun 3992   Fn wfn 3993  -onto->wfo 3996  -1-1-onto->wf1o 3997  ` cfv 3998  (class class class)co 4884  1stc1st 5018
This theorem is referenced by:  curry2f 5079  curry2val 5080
This theorem was proved from axioms:  ax-1 4  ax-2 5  ax-3 6  ax-mp 7  ax-7 1304  ax-gen 1305  ax-8 1306  ax-9 1307  ax-10 1308  ax-11 1309  ax-12 1310  ax-13 1311  ax-14 1312  ax-17 1317  ax-4 1319  ax-5o 1321  ax-6o 1324  ax-9o 1481  ax-10o 1500  ax-16 1580  ax-11o 1588  ax-ext 1865  ax-sep 3438  ax-nul 3445  ax-pow 3481  ax-pr 3524  ax-un 3790
This theorem depends on definitions:  df-bi 164  df-or 241  df-an 242  df-3an 860  df-ex 1327  df-sb 1536  df-eu 1775  df-mo 1776  df-clab 1872  df-cleq 1877  df-clel 1880  df-ne 2019  df-ral 2109  df-rex 2110  df-v 2294  df-dif 2597  df-un 2600  df-in 2603  df-ss 2605  df-nul 2876  df-pw 3035  df-sn 3049  df-pr 3050  df-op 3053  df-uni 3178  df-br 3339  df-opab 3396  df-id 3586  df-xp 4000  df-rel 4001  df-cnv 4002  df-co 4003  df-dm 4004  df-rn 4005  df-res 4006  df-ima 4007  df-fun 4008  df-fn 4009  df-f 4010  df-f1 4011  df-fo 4012  df-f1o 4013  df-fv 4014  df-opr 4886  df-1st 5020  df-2nd 5021
Copyright terms: Public domain