MPE Home Metamath Proof Explorer < Previous   Next >
Nearby theorems
Mirrors  >  Home  >  MPE Home  >  Th. List  >  uncfval Unicode version

Theorem uncfval 14259
Description: Value of the uncurry functor, which is the reverse of the curry functor, taking  G : C --> ( D --> E ) to uncurryF  ( G ) : C  X.  D --> E. (Contributed by Mario Carneiro, 13-Jan-2017.)
Hypotheses
Ref Expression
uncfval.g  |-  F  =  ( <" C D E "> uncurryF  G )
uncfval.c  |-  ( ph  ->  D  e.  Cat )
uncfval.d  |-  ( ph  ->  E  e.  Cat )
uncfval.f  |-  ( ph  ->  G  e.  ( C 
Func  ( D FuncCat  E
) ) )
Assertion
Ref Expression
uncfval  |-  ( ph  ->  F  =  ( ( D evalF 
E )  o.func  ( ( G  o.func  ( C  1stF  D )
) ⟨,⟩F  ( C  2ndF  D ) ) ) )

Proof of Theorem uncfval
Dummy variables  f 
c are mutually distinct and distinct from all other variables.
StepHypRef Expression
1 uncfval.g . 2  |-  F  =  ( <" C D E "> uncurryF  G )
2 df-uncf 14240 . . . 4  |- uncurryF  =  ( c  e. 
_V ,  f  e. 
_V  |->  ( ( ( c `  1 ) evalF  ( c `  2 ) )  o.func  ( ( f  o.func  ( ( c `  0
)  1stF  ( c `  1
) ) ) ⟨,⟩F  ( ( c ` 
0 )  2ndF  ( c `  1 ) ) ) ) )
32a1i 11 . . 3  |-  ( ph  -> uncurryF  =  ( c  e.  _V ,  f  e.  _V  |->  ( ( ( c `
 1 ) evalF  ( c `
 2 ) )  o.func  ( ( f  o.func  ( ( c `  0
)  1stF  ( c `  1
) ) ) ⟨,⟩F  ( ( c ` 
0 )  2ndF  ( c `  1 ) ) ) ) ) )
4 simprl 733 . . . . . . 7  |-  ( (
ph  /\  ( c  =  <" C D E ">  /\  f  =  G ) )  -> 
c  =  <" C D E "> )
54fveq1d 5671 . . . . . 6  |-  ( (
ph  /\  ( c  =  <" C D E ">  /\  f  =  G ) )  -> 
( c `  1
)  =  ( <" C D E "> `  1
) )
6 uncfval.c . . . . . . . 8  |-  ( ph  ->  D  e.  Cat )
7 s3fv1 11781 . . . . . . . 8  |-  ( D  e.  Cat  ->  ( <" C D E "> `  1
)  =  D )
86, 7syl 16 . . . . . . 7  |-  ( ph  ->  ( <" C D E "> `  1
)  =  D )
98adantr 452 . . . . . 6  |-  ( (
ph  /\  ( c  =  <" C D E ">  /\  f  =  G ) )  -> 
( <" C D E "> `  1
)  =  D )
105, 9eqtrd 2420 . . . . 5  |-  ( (
ph  /\  ( c  =  <" C D E ">  /\  f  =  G ) )  -> 
( c `  1
)  =  D )
114fveq1d 5671 . . . . . 6  |-  ( (
ph  /\  ( c  =  <" C D E ">  /\  f  =  G ) )  -> 
( c `  2
)  =  ( <" C D E "> `  2
) )
12 uncfval.d . . . . . . . 8  |-  ( ph  ->  E  e.  Cat )
13 s3fv2 11782 . . . . . . . 8  |-  ( E  e.  Cat  ->  ( <" C D E "> `  2
)  =  E )
1412, 13syl 16 . . . . . . 7  |-  ( ph  ->  ( <" C D E "> `  2
)  =  E )
1514adantr 452 . . . . . 6  |-  ( (
ph  /\  ( c  =  <" C D E ">  /\  f  =  G ) )  -> 
( <" C D E "> `  2
)  =  E )
1611, 15eqtrd 2420 . . . . 5  |-  ( (
ph  /\  ( c  =  <" C D E ">  /\  f  =  G ) )  -> 
( c `  2
)  =  E )
1710, 16oveq12d 6039 . . . 4  |-  ( (
ph  /\  ( c  =  <" C D E ">  /\  f  =  G ) )  -> 
( ( c ` 
1 ) evalF  ( c `  2
) )  =  ( D evalF 
E ) )
18 simprr 734 . . . . . 6  |-  ( (
ph  /\  ( c  =  <" C D E ">  /\  f  =  G ) )  -> 
f  =  G )
194fveq1d 5671 . . . . . . . 8  |-  ( (
ph  /\  ( c  =  <" C D E ">  /\  f  =  G ) )  -> 
( c `  0
)  =  ( <" C D E "> `  0
) )
20 uncfval.f . . . . . . . . . . . 12  |-  ( ph  ->  G  e.  ( C 
Func  ( D FuncCat  E
) ) )
21 funcrcl 13988 . . . . . . . . . . . 12  |-  ( G  e.  ( C  Func  ( D FuncCat  E ) )  -> 
( C  e.  Cat  /\  ( D FuncCat  E )  e.  Cat ) )
2220, 21syl 16 . . . . . . . . . . 11  |-  ( ph  ->  ( C  e.  Cat  /\  ( D FuncCat  E )  e.  Cat ) )
2322simpld 446 . . . . . . . . . 10  |-  ( ph  ->  C  e.  Cat )
24 s3fv0 11780 . . . . . . . . . 10  |-  ( C  e.  Cat  ->  ( <" C D E "> `  0
)  =  C )
2523, 24syl 16 . . . . . . . . 9  |-  ( ph  ->  ( <" C D E "> `  0
)  =  C )
2625adantr 452 . . . . . . . 8  |-  ( (
ph  /\  ( c  =  <" C D E ">  /\  f  =  G ) )  -> 
( <" C D E "> `  0
)  =  C )
2719, 26eqtrd 2420 . . . . . . 7  |-  ( (
ph  /\  ( c  =  <" C D E ">  /\  f  =  G ) )  -> 
( c `  0
)  =  C )
2827, 10oveq12d 6039 . . . . . 6  |-  ( (
ph  /\  ( c  =  <" C D E ">  /\  f  =  G ) )  -> 
( ( c ` 
0 )  1stF  ( c `  1 ) )  =  ( C  1stF  D ) )
2918, 28oveq12d 6039 . . . . 5  |-  ( (
ph  /\  ( c  =  <" C D E ">  /\  f  =  G ) )  -> 
( f  o.func  ( (
c `  0 )  1stF  ( c `  1
) ) )  =  ( G  o.func  ( C  1stF  D ) ) )
3027, 10oveq12d 6039 . . . . 5  |-  ( (
ph  /\  ( c  =  <" C D E ">  /\  f  =  G ) )  -> 
( ( c ` 
0 )  2ndF  ( c `  1 ) )  =  ( C  2ndF  D ) )
3129, 30oveq12d 6039 . . . 4  |-  ( (
ph  /\  ( c  =  <" C D E ">  /\  f  =  G ) )  -> 
( ( f  o.func  ( ( c `  0
)  1stF  ( c `  1
) ) ) ⟨,⟩F  ( ( c ` 
0 )  2ndF  ( c `  1 ) ) )  =  ( ( G  o.func  ( C  1stF  D )
) ⟨,⟩F  ( C  2ndF  D ) ) )
3217, 31oveq12d 6039 . . 3  |-  ( (
ph  /\  ( c  =  <" C D E ">  /\  f  =  G ) )  -> 
( ( ( c `
 1 ) evalF  ( c `
 2 ) )  o.func  ( ( f  o.func  ( ( c `  0
)  1stF  ( c `  1
) ) ) ⟨,⟩F  ( ( c ` 
0 )  2ndF  ( c `  1 ) ) ) )  =  ( ( D evalF  E )  o.func  ( ( G  o.func  ( C  1stF  D )
) ⟨,⟩F  ( C  2ndF  D ) ) ) )
33 s3cli 11771 . . . 4  |-  <" C D E ">  e. Word  _V
34 elex 2908 . . . 4  |-  ( <" C D E ">  e. Word  _V  ->  <" C D E ">  e.  _V )
3533, 34mp1i 12 . . 3  |-  ( ph  ->  <" C D E ">  e.  _V )
36 elex 2908 . . . 4  |-  ( G  e.  ( C  Func  ( D FuncCat  E ) )  ->  G  e.  _V )
3720, 36syl 16 . . 3  |-  ( ph  ->  G  e.  _V )
38 ovex 6046 . . . 4  |-  ( ( D evalF 
E )  o.func  ( ( G  o.func  ( C  1stF  D )
) ⟨,⟩F  ( C  2ndF  D ) ) )  e.  _V
3938a1i 11 . . 3  |-  ( ph  ->  ( ( D evalF  E )  o.func  ( ( G  o.func  ( C  1stF  D ) ) ⟨,⟩F  ( C  2ndF  D )
) )  e.  _V )
403, 32, 35, 37, 39ovmpt2d 6141 . 2  |-  ( ph  ->  ( <" C D E "> uncurryF  G )  =  ( ( D evalF  E )  o.func  ( ( G  o.func  ( C  1stF  D )
) ⟨,⟩F  ( C  2ndF  D ) ) ) )
411, 40syl5eq 2432 1  |-  ( ph  ->  F  =  ( ( D evalF 
E )  o.func  ( ( G  o.func  ( C  1stF  D )
) ⟨,⟩F  ( C  2ndF  D ) ) ) )
Colors of variables: wff set class
Syntax hints:    -> wi 4    /\ wa 359    = wceq 1649    e. wcel 1717   _Vcvv 2900   ` cfv 5395  (class class class)co 6021    e. cmpt2 6023   0cc0 8924   1c1 8925   2c2 9982  Word cword 11645   <"cs3 11734   Catccat 13817    Func cfunc 13979    o.func ccofu 13981   FuncCat cfuc 14067    1stF c1stf 14194    2ndF c2ndf 14195   ⟨,⟩F cprf 14196   evalF cevlf 14234   uncurryF cuncf 14236
This theorem is referenced by:  uncfcl  14260  uncf1  14261  uncf2  14262
This theorem was proved from axioms:  ax-1 5  ax-2 6  ax-3 7  ax-mp 8  ax-gen 1552  ax-5 1563  ax-17 1623  ax-9 1661  ax-8 1682  ax-13 1719  ax-14 1721  ax-6 1736  ax-7 1741  ax-11 1753  ax-12 1939  ax-ext 2369  ax-rep 4262  ax-sep 4272  ax-nul 4280  ax-pow 4319  ax-pr 4345  ax-un 4642  ax-cnex 8980  ax-resscn 8981  ax-1cn 8982  ax-icn 8983  ax-addcl 8984  ax-addrcl 8985  ax-mulcl 8986  ax-mulrcl 8987  ax-mulcom 8988  ax-addass 8989  ax-mulass 8990  ax-distr 8991  ax-i2m1 8992  ax-1ne0 8993  ax-1rid 8994  ax-rnegex 8995  ax-rrecex 8996  ax-cnre 8997  ax-pre-lttri 8998  ax-pre-lttrn 8999  ax-pre-ltadd 9000  ax-pre-mulgt0 9001
This theorem depends on definitions:  df-bi 178  df-or 360  df-an 361  df-3or 937  df-3an 938  df-tru 1325  df-ex 1548  df-nf 1551  df-sb 1656  df-eu 2243  df-mo 2244  df-clab 2375  df-cleq 2381  df-clel 2384  df-nfc 2513  df-ne 2553  df-nel 2554  df-ral 2655  df-rex 2656  df-reu 2657  df-rab 2659  df-v 2902  df-sbc 3106  df-csb 3196  df-dif 3267  df-un 3269  df-in 3271  df-ss 3278  df-pss 3280  df-nul 3573  df-if 3684  df-pw 3745  df-sn 3764  df-pr 3765  df-tp 3766  df-op 3767  df-uni 3959  df-int 3994  df-iun 4038  df-br 4155  df-opab 4209  df-mpt 4210  df-tr 4245  df-eprel 4436  df-id 4440  df-po 4445  df-so 4446  df-fr 4483  df-we 4485  df-ord 4526  df-on 4527  df-lim 4528  df-suc 4529  df-om 4787  df-xp 4825  df-rel 4826  df-cnv 4827  df-co 4828  df-dm 4829  df-rn 4830  df-res 4831  df-ima 4832  df-iota 5359  df-fun 5397  df-fn 5398  df-f 5399  df-f1 5400  df-fo 5401  df-f1o 5402  df-fv 5403  df-ov 6024  df-oprab 6025  df-mpt2 6026  df-1st 6289  df-2nd 6290  df-riota 6486  df-recs 6570  df-rdg 6605  df-1o 6661  df-oadd 6665  df-er 6842  df-en 7047  df-dom 7048  df-sdom 7049  df-fin 7050  df-card 7760  df-pnf 9056  df-mnf 9057  df-xr 9058  df-ltxr 9059  df-le 9060  df-sub 9226  df-neg 9227  df-nn 9934  df-2 9991  df-n0 10155  df-z 10216  df-uz 10422  df-fz 10977  df-fzo 11067  df-hash 11547  df-word 11651  df-concat 11652  df-s1 11653  df-s2 11740  df-s3 11741  df-func 13983  df-uncf 14240
  Copyright terms: Public domain W3C validator