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

Theorem uncfval 15143
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 15124 . . . 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 755 . . . . . . 7  |-  ( (
ph  /\  ( c  =  <" C D E ">  /\  f  =  G ) )  -> 
c  =  <" C D E "> )
54fveq1d 5788 . . . . . 6  |-  ( (
ph  /\  ( c  =  <" C D E ">  /\  f  =  G ) )  -> 
( c `  1
)  =  ( <" C D E "> `  1
) )
6 uncfval.c . . . . . . . 8  |-  ( ph  ->  D  e.  Cat )
7 s3fv1 12615 . . . . . . . 8  |-  ( D  e.  Cat  ->  ( <" C D E "> `  1
)  =  D )
86, 7syl 16 . . . . . . 7  |-  ( ph  ->  ( <" C D E "> `  1
)  =  D )
98adantr 465 . . . . . 6  |-  ( (
ph  /\  ( c  =  <" C D E ">  /\  f  =  G ) )  -> 
( <" C D E "> `  1
)  =  D )
105, 9eqtrd 2491 . . . . 5  |-  ( (
ph  /\  ( c  =  <" C D E ">  /\  f  =  G ) )  -> 
( c `  1
)  =  D )
114fveq1d 5788 . . . . . 6  |-  ( (
ph  /\  ( c  =  <" C D E ">  /\  f  =  G ) )  -> 
( c `  2
)  =  ( <" C D E "> `  2
) )
12 uncfval.d . . . . . . . 8  |-  ( ph  ->  E  e.  Cat )
13 s3fv2 12616 . . . . . . . 8  |-  ( E  e.  Cat  ->  ( <" C D E "> `  2
)  =  E )
1412, 13syl 16 . . . . . . 7  |-  ( ph  ->  ( <" C D E "> `  2
)  =  E )
1514adantr 465 . . . . . 6  |-  ( (
ph  /\  ( c  =  <" C D E ">  /\  f  =  G ) )  -> 
( <" C D E "> `  2
)  =  E )
1611, 15eqtrd 2491 . . . . 5  |-  ( (
ph  /\  ( c  =  <" C D E ">  /\  f  =  G ) )  -> 
( c `  2
)  =  E )
1710, 16oveq12d 6205 . . . 4  |-  ( (
ph  /\  ( c  =  <" C D E ">  /\  f  =  G ) )  -> 
( ( c ` 
1 ) evalF  ( c `  2
) )  =  ( D evalF 
E ) )
18 simprr 756 . . . . . 6  |-  ( (
ph  /\  ( c  =  <" C D E ">  /\  f  =  G ) )  -> 
f  =  G )
194fveq1d 5788 . . . . . . . 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 14872 . . . . . . . . . . . 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 459 . . . . . . . . . 10  |-  ( ph  ->  C  e.  Cat )
24 s3fv0 12614 . . . . . . . . . 10  |-  ( C  e.  Cat  ->  ( <" C D E "> `  0
)  =  C )
2523, 24syl 16 . . . . . . . . 9  |-  ( ph  ->  ( <" C D E "> `  0
)  =  C )
2625adantr 465 . . . . . . . 8  |-  ( (
ph  /\  ( c  =  <" C D E ">  /\  f  =  G ) )  -> 
( <" C D E "> `  0
)  =  C )
2719, 26eqtrd 2491 . . . . . . 7  |-  ( (
ph  /\  ( c  =  <" C D E ">  /\  f  =  G ) )  -> 
( c `  0
)  =  C )
2827, 10oveq12d 6205 . . . . . 6  |-  ( (
ph  /\  ( c  =  <" C D E ">  /\  f  =  G ) )  -> 
( ( c ` 
0 )  1stF  ( c `  1 ) )  =  ( C  1stF  D ) )
2918, 28oveq12d 6205 . . . . 5  |-  ( (
ph  /\  ( c  =  <" C D E ">  /\  f  =  G ) )  -> 
( f  o.func  ( (
c `  0 )  1stF  ( c `  1
) ) )  =  ( G  o.func  ( C  1stF  D ) ) )
3027, 10oveq12d 6205 . . . . 5  |-  ( (
ph  /\  ( c  =  <" C D E ">  /\  f  =  G ) )  -> 
( ( c ` 
0 )  2ndF  ( c `  1 ) )  =  ( C  2ndF  D ) )
3129, 30oveq12d 6205 . . . 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 6205 . . 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 12605 . . . 4  |-  <" C D E ">  e. Word  _V
34 elex 3074 . . . 4  |-  ( <" C D E ">  e. Word  _V  ->  <" C D E ">  e.  _V )
3533, 34mp1i 12 . . 3  |-  ( ph  ->  <" C D E ">  e.  _V )
36 elex 3074 . . . 4  |-  ( G  e.  ( C  Func  ( D FuncCat  E ) )  ->  G  e.  _V )
3720, 36syl 16 . . 3  |-  ( ph  ->  G  e.  _V )
38 ovex 6212 . . . 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 6315 . 2  |-  ( ph  ->  ( <" C D E "> uncurryF  G )  =  ( ( D evalF  E )  o.func  ( ( G  o.func  ( C  1stF  D )
) ⟨,⟩F  ( C  2ndF  D ) ) ) )
411, 40syl5eq 2503 1  |-  ( ph  ->  F  =  ( ( D evalF 
E )  o.func  ( ( G  o.func  ( C  1stF  D )
) ⟨,⟩F  ( C  2ndF  D ) ) ) )
Colors of variables: wff setvar class
Syntax hints:    -> wi 4    /\ wa 369    = wceq 1370    e. wcel 1758   _Vcvv 3065   ` cfv 5513  (class class class)co 6187    |-> cmpt2 6189   0cc0 9380   1c1 9381   2c2 10469  Word cword 12320   <"cs3 12568   Catccat 14701    Func cfunc 14863    o.func ccofu 14865   FuncCat cfuc 14951    1stF c1stf 15078    2ndF c2ndf 15079   ⟨,⟩F cprf 15080   evalF cevlf 15118   uncurryF cuncf 15120
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1592  ax-4 1603  ax-5 1671  ax-6 1710  ax-7 1730  ax-8 1760  ax-9 1762  ax-10 1777  ax-11 1782  ax-12 1794  ax-13 1952  ax-ext 2430  ax-rep 4498  ax-sep 4508  ax-nul 4516  ax-pow 4565  ax-pr 4626  ax-un 6469  ax-cnex 9436  ax-resscn 9437  ax-1cn 9438  ax-icn 9439  ax-addcl 9440  ax-addrcl 9441  ax-mulcl 9442  ax-mulrcl 9443  ax-mulcom 9444  ax-addass 9445  ax-mulass 9446  ax-distr 9447  ax-i2m1 9448  ax-1ne0 9449  ax-1rid 9450  ax-rnegex 9451  ax-rrecex 9452  ax-cnre 9453  ax-pre-lttri 9454  ax-pre-lttrn 9455  ax-pre-ltadd 9456  ax-pre-mulgt0 9457
This theorem depends on definitions:  df-bi 185  df-or 370  df-an 371  df-3or 966  df-3an 967  df-tru 1373  df-ex 1588  df-nf 1591  df-sb 1703  df-eu 2264  df-mo 2265  df-clab 2437  df-cleq 2443  df-clel 2446  df-nfc 2599  df-ne 2644  df-nel 2645  df-ral 2798  df-rex 2799  df-reu 2800  df-rab 2802  df-v 3067  df-sbc 3282  df-csb 3384  df-dif 3426  df-un 3428  df-in 3430  df-ss 3437  df-pss 3439  df-nul 3733  df-if 3887  df-pw 3957  df-sn 3973  df-pr 3975  df-tp 3977  df-op 3979  df-uni 4187  df-int 4224  df-iun 4268  df-br 4388  df-opab 4446  df-mpt 4447  df-tr 4481  df-eprel 4727  df-id 4731  df-po 4736  df-so 4737  df-fr 4774  df-we 4776  df-ord 4817  df-on 4818  df-lim 4819  df-suc 4820  df-xp 4941  df-rel 4942  df-cnv 4943  df-co 4944  df-dm 4945  df-rn 4946  df-res 4947  df-ima 4948  df-iota 5476  df-fun 5515  df-fn 5516  df-f 5517  df-f1 5518  df-fo 5519  df-f1o 5520  df-fv 5521  df-riota 6148  df-ov 6190  df-oprab 6191  df-mpt2 6192  df-om 6574  df-1st 6674  df-2nd 6675  df-recs 6929  df-rdg 6963  df-1o 7017  df-oadd 7021  df-er 7198  df-en 7408  df-dom 7409  df-sdom 7410  df-fin 7411  df-card 8207  df-pnf 9518  df-mnf 9519  df-xr 9520  df-ltxr 9521  df-le 9522  df-sub 9695  df-neg 9696  df-nn 10421  df-2 10478  df-n0 10678  df-z 10745  df-uz 10960  df-fz 11536  df-fzo 11647  df-hash 12202  df-word 12328  df-concat 12330  df-s1 12331  df-s2 12574  df-s3 12575  df-func 14867  df-uncf 15124
This theorem is referenced by:  uncfcl  15144  uncf1  15145  uncf2  15146
  Copyright terms: Public domain W3C validator