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

Theorem curry1 4091
Description: Composition with `'(2nd |` ({C} X. V)) turns any binary operation F with a constant first operand into a function G of the second operand only. This transformation is called "currying."
Hypothesis
Ref Expression
curry1.1 |- G = (F o. `'(2nd |` ({C} X. V)))
Assertion
Ref Expression
curry1 |- ((F Fn (A X. B) /\ C e. A) -> G = {<.x, y>. | (x e. B /\ y = (CFx))})
Distinct variable groups:   x,y,A   x,B,y   x,C,y   x,F,y

Proof of Theorem curry1
StepHypRef Expression
1 f1ocnvfv 3875 . . . . . . . . 9 |- (((2nd |` ({C} X. V)):({C} X. V)-1-1-onto->V /\ <.C, z>. e. ({C} X. V)) -> (((2nd |` ({C} X. V))` <.C, z>.) = z -> (`'(2nd |` ({C} X. V))` z) = <.C, z>.))
2 2ndconst 4090 . . . . . . . . . . 11 |- (C e. A -> (2nd |` ({C} X. V)):({C} X. V)-1-1-onto->V)
32adantr 389 . . . . . . . . . 10 |- ((C e. A /\ z e. B) -> (2nd |` ({C} X. V)):({C} X. V)-1-1-onto->V)
4 snidg 2430 . . . . . . . . . . . . 13 |- (C e. A -> C e. {C})
5 visset 1810 . . . . . . . . . . . . 13 |- z e. V
64, 5jctir 293 . . . . . . . . . . . 12 |- (C e. A -> (C e. {C} /\ z e. V))
75opelxp 3210 . . . . . . . . . . . 12 |- (<.C, z>. e. ({C} X. V) <-> (C e. {C} /\ z e. V))
86, 7sylibr 200 . . . . . . . . . . 11 |- (C e. A -> <.C, z>. e. ({C} X. V))
98adantr 389 . . . . . . . . . 10 |- ((C e. A /\ z e. B) -> <.C, z>. e. ({C} X. V))
103, 9jca 288 . . . . . . . . 9 |- ((C e. A /\ z e. B) -> ((2nd |` ({C} X. V)):({C} X. V)-1-1-onto->V /\ <.C, z>. e. ({C} X. V)))
11 fvres 3729 . . . . . . . . . . . 12 |- (<.C, z>. e. ({C} X. V) -> ((2nd |` ({C} X. V))` <.C, z>.) = (2nd`
<.C, z>.))
128, 11syl 10 . . . . . . . . . . 11 |- (C e. A -> ((2nd |` ({C} X. V))` <.C, z>.) = (2nd`
<.C, z>.))
13 op2ndg 4081 . . . . . . . . . . . 12 |- ((C e. A /\ z e. V) -> (2nd`
<.C, z>.) = z)
145, 13mpan2 695 . . . . . . . . . . 11 |- (C e. A -> (2nd` <.C, z>.) = z)
1512, 14eqtrd 1505 . . . . . . . . . 10 |- (C e. A -> ((2nd |` ({C} X. V))` <.C, z>.) = z)
1615adantr 389 . . . . . . . . 9 |- ((C e. A /\ z e. B) -> ((2nd |` ({C} X. V))` <.C, z>.) = z)
171, 10, 16sylc 68 . . . . . . . 8 |- ((C e. A /\ z e. B) -> (`'(2nd |` ({C} X. V))` z) = <.C, z>.)
1817fveq2d 3723 . . . . . . 7 |- ((C e. A /\ z e. B) -> (F` (`'(2nd |` ({C} X. V))` z)) = (F` <.C, z>.))
1918adantll 392 . . . . . 6 |- (((F Fn (A X. B) /\ C e. A) /\ z e. B) -> (F` (`'(2nd |` ({C} X. V))` z)) = (F` <.C, z>.))
20 df-opr 3960 . . . . . 6 |- (CFz) = (F` <.C, z>.)
2119, 20syl6eqr 1523 . . . . 5 |- (((F Fn (A X. B) /\ C e. A) /\ z e. B) -> (F` (`'(2nd |` ({C} X. V))` z)) = (CFz))
22 fvco2 3770 . . . . . . . . 9 |- ((Fun F /\ `'(2nd |` ({C} X. V)) Fn V /\ z e. V) -> ((F o. `'(2nd |` ({C} X. V)))` z) = (F` (`'(2nd |` ({C} X. V))` z)))
235, 22mp3an3 904 . . . . . . . 8 |- ((Fun F /\ `'(2nd |` ({C} X. V)) Fn V) -> ((F o. `'(2nd |` ({C} X. V)))` z) = (F` (`'(2nd |` ({C} X. V))` z)))
24 fnfun 3581 . . . . . . . 8 |- (F Fn (A X. B) -> Fun F)
25 f1o4 3691 . . . . . . . . . 10 |- ((2nd |` ({C} X. V)):({C} X. V)-1-1-onto->V <-> ((2nd |` ({C} X. V)) Fn ({C} X. V) /\ `'(2nd |` ({C} X. V)) Fn V))
262, 25sylib 198 . . . . . . . . 9 |- (C e. A -> ((2nd |` ({C} X. V)) Fn ({C} X. V) /\ `'(2nd |` ({C} X. V)) Fn V))
2726pm3.27d 325 . . . . . . . 8 |- (C e. A -> `'(2nd |` ({C} X. V)) Fn V)
2823, 24, 27syl2an 454 . . . . . . 7 |- ((F Fn (A X. B) /\ C e. A) -> ((F o. `'(2nd |` ({C} X. V)))` z) = (F` (`'(2nd |` ({C} X. V))` z)))
2928adantr 389 . . . . . 6 |- (((F Fn (A X. B) /\ C e. A) /\ z e. B) -> ((F o. `'(2nd |` ({C} X. V)))` z) = (F` (`'(2nd |` ({C} X. V))` z)))
30 curry1.1 . . . . . . 7 |- G = (F o. `'(2nd |` ({C} X. V)))
3130fveq1i 3720 . . . . . 6 |- (G` z) = ((F o. `'(2nd |` ({C} X. V)))` z)
3229, 31syl5eq 1517 . . . . 5 |- (((F Fn (A X. B) /\ C e. A) /\ z e. B) -> (G` z) = (F` (`'(2nd |` ({C} X. V))` z)))
33 opreq2 3964 . . . . . . 7 |- (x = z -> (CFx) = (CFz))
34 eqid 1474 . . . . . . 7 |- {<.x, y>. | (x e. B /\ y = (CFx))} = {<.x, y>. | (x e. B /\ y = (CFx))}
35 oprex 3978 . . . . . . 7 |- (CFz) e. V
3633, 34, 35fvopab4 3775 . . . . . 6 |- (z e. B -> ({<.x, y>. | (x e. B /\ y = (CFx))}` z) = (CFz))
3736adantl 388 . . . . 5 |- (((F Fn (A X. B) /\ C e. A) /\ z e. B) -> ({<.x, y>. | (x e. B /\ y = (CFx))}` z) = (CFz))
3821, 32, 373eqtr4d 1515 . . . 4 |- (((F Fn (A X. B) /\ C e. A) /\ z e. B) -> (G` z) = ({<.x, y>. | (x e. B /\ y = (CFx))}` z))
3938r19.21aiva 1712 . . 3 |- ((F Fn (A X. B) /\ C e. A) -> A.z e. B (G` z) = ({<.x, y>. | (x e. B /\ y = (CFx))}` z))
40 eqid 1474 . . 3 |- B = B
4139, 40jctil 292 . 2 |- ((F Fn (A X. B) /\ C e. A) -> (B = B /\ A.z e. B (G` z) = ({<.x, y>. | (x e. B /\ y = (CFx))}` z)))
42 funco 3546 . . . . . 6 |- ((Fun F /\ Fun `'(2nd |` ({C} X. V))) -> Fun (F o. `'(2nd |` ({C} X. V))))
43 f1o3 3689 . . . . . . . 8 |- ((2nd |` ({C} X. V)):({C} X. V)-1-1-onto->V <-> ((2nd |` ({C} X. V)):({C} X. V)-onto->V /\ Fun `'(2nd |` ({C} X. V))))
4443pm3.27bi 326 . . . . . . 7 |- ((2nd |` ({C} X. V)):({C} X. V)-1-1-onto->V -> Fun `'(2nd |` ({C} X. V)))
452, 44syl 10 . . . . . 6 |- (C e. A -> Fun `'(2nd |` ({C} X. V)))
4642, 24, 45syl2an 454 . . . . 5 |- ((F Fn (A X. B) /\ C e. A) -> Fun (F o. `'(2nd |` ({C} X. V))))
47 fndm 3583 . . . . . . . . 9 |- (F Fn (A X. B) -> dom F = (A X. B))
4847adantr 389 . . . . . . . 8 |- ((F Fn (A X. B) /\ C e. A) -> dom F = (A X. B))
4948imaeq2d 3400 . . . . . . 7 |- ((F Fn (A X. B) /\ C e. A) -> (`'`'(2nd |` ({C} X. V))"dom F) = (`'`'(2nd |` ({C} X. V))"(A X. B)))
50 snssi 2463 . . . . . . . . . . . . . . 15 |- (C e. A -> {C} (_ A)
51 df-ss 2050 . . . . . . . . . . . . . . 15 |- ({C} (_ A <-> ({C} i^i A) = {C})
5250, 51sylib 198 . . . . . . . . . . . . . 14 |- (C e. A -> ({C} i^i A) = {C})
53 xpeq1 3196 . . . . . . . . . . . . . 14 |- (({C} i^i A) = {C} -> (({C} i^i A) X. B) = ({C} X. B))
5452, 53syl 10 . . . . . . . . . . . . 13 |- (C e. A -> (({C} i^i A) X. B) = ({C} X. B))
55 inxp 3265 . . . . . . . . . . . . . 14 |- (({C} X. V) i^i (A X. B)