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

Theorem uncfval 15827
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 15808 . . . 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 756 . . . . . . 7  |-  ( (
ph  /\  ( c  =  <" C D E ">  /\  f  =  G ) )  -> 
c  =  <" C D E "> )
54fveq1d 5851 . . . . . 6  |-  ( (
ph  /\  ( c  =  <" C D E ">  /\  f  =  G ) )  -> 
( c `  1
)  =  ( <" C D E "> `  1
) )
6 uncfval.c . . . . . . . 8  |-  ( ph  ->  D  e.  Cat )
7 s3fv1 12910 . . . . . . . 8  |-  ( D  e.  Cat  ->  ( <" C D E "> `  1
)  =  D )
86, 7syl 17 . . . . . . 7  |-  ( ph  ->  ( <" C D E "> `  1
)  =  D )
98adantr 463 . . . . . 6  |-  ( (
ph  /\  ( c  =  <" C D E ">  /\  f  =  G ) )  -> 
( <" C D E "> `  1
)  =  D )
105, 9eqtrd 2443 . . . . 5  |-  ( (
ph  /\  ( c  =  <" C D E ">  /\  f  =  G ) )  -> 
( c `  1
)  =  D )
114fveq1d 5851 . . . . . 6  |-  ( (
ph  /\  ( c  =  <" C D E ">  /\  f  =  G ) )  -> 
( c `  2
)  =  ( <" C D E "> `  2
) )
12 uncfval.d . . . . . . . 8  |-  ( ph  ->  E  e.  Cat )
13 s3fv2 12911 . . . . . . . 8  |-  ( E  e.  Cat  ->  ( <" C D E "> `  2
)  =  E )
1412, 13syl 17 . . . . . . 7  |-  ( ph  ->  ( <" C D E "> `  2
)  =  E )
1514adantr 463 . . . . . 6  |-  ( (
ph  /\  ( c  =  <" C D E ">  /\  f  =  G ) )  -> 
( <" C D E "> `  2
)  =  E )
1611, 15eqtrd 2443 . . . . 5  |-  ( (
ph  /\  ( c  =  <" C D E ">  /\  f  =  G ) )  -> 
( c `  2
)  =  E )
1710, 16oveq12d 6296 . . . 4  |-  ( (
ph  /\  ( c  =  <" C D E ">  /\  f  =  G ) )  -> 
( ( c ` 
1 ) evalF  ( c `  2
) )  =  ( D evalF 
E ) )
18 simprr 758 . . . . . 6  |-  ( (
ph  /\  ( c  =  <" C D E ">  /\  f  =  G ) )  -> 
f  =  G )
194fveq1d 5851 . . . . . . . 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 15476 . . . . . . . . . . . 12  |-  ( G  e.  ( C  Func  ( D FuncCat  E ) )  -> 
( C  e.  Cat  /\  ( D FuncCat  E )  e.  Cat ) )
2220, 21syl 17 . . . . . . . . . . 11  |-  ( ph  ->  ( C  e.  Cat  /\  ( D FuncCat  E )  e.  Cat ) )
2322simpld 457 . . . . . . . . . 10  |-  ( ph  ->  C  e.  Cat )
24 s3fv0 12909 . . . . . . . . . 10  |-  ( C  e.  Cat  ->  ( <" C D E "> `  0
)  =  C )
2523, 24syl 17 . . . . . . . . 9  |-  ( ph  ->  ( <" C D E "> `  0
)  =  C )
2625adantr 463 . . . . . . . 8  |-  ( (
ph  /\  ( c  =  <" C D E ">  /\  f  =  G ) )  -> 
( <" C D E "> `  0
)  =  C )
2719, 26eqtrd 2443 . . . . . . 7  |-  ( (
ph  /\  ( c  =  <" C D E ">  /\  f  =  G ) )  -> 
( c `  0
)  =  C )
2827, 10oveq12d 6296 . . . . . 6  |-  ( (
ph  /\  ( c  =  <" C D E ">  /\  f  =  G ) )  -> 
( ( c ` 
0 )  1stF  ( c `  1 ) )  =  ( C  1stF  D ) )
2918, 28oveq12d 6296 . . . . 5  |-  ( (
ph  /\  ( c  =  <" C D E ">  /\  f  =  G ) )  -> 
( f  o.func  ( (
c `  0 )  1stF  ( c `  1
) ) )  =  ( G  o.func  ( C  1stF  D ) ) )
3027, 10oveq12d 6296 . . . . 5  |-  ( (
ph  /\  ( c  =  <" C D E ">  /\  f  =  G ) )  -> 
( ( c ` 
0 )  2ndF  ( c `  1 ) )  =  ( C  2ndF  D ) )
3129, 30oveq12d 6296 . . . 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 6296 . . 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 12900 . . . 4  |-  <" C D E ">  e. Word  _V
34 elex 3068 . . . 4  |-  ( <" C D E ">  e. Word  _V  ->  <" C D E ">  e.  _V )
3533, 34mp1i 13 . . 3  |-  ( ph  ->  <" C D E ">  e.  _V )
36 elex 3068 . . . 4  |-  ( G  e.  ( C  Func  ( D FuncCat  E ) )  ->  G  e.  _V )
3720, 36syl 17 . . 3  |-  ( ph  ->  G  e.  _V )
38 ovex 6306 . . . 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 6411 . 2  |-  ( ph  ->  ( <" C D E "> uncurryF  G )  =  ( ( D evalF  E )  o.func  ( ( G  o.func  ( C  1stF  D )
) ⟨,⟩F  ( C  2ndF  D ) ) ) )
411, 40syl5eq 2455 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 367    = wceq 1405    e. wcel 1842   _Vcvv 3059   ` cfv 5569  (class class class)co 6278    |-> cmpt2 6280   0cc0 9522   1c1 9523   2c2 10626  Word cword 12583   <"cs3 12863   Catccat 15278    Func cfunc 15467    o.func ccofu 15469   FuncCat cfuc 15555    1stF c1stf 15762    2ndF c2ndf 15763   ⟨,⟩F cprf 15764   evalF cevlf 15802   uncurryF cuncf 15804
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1639  ax-4 1652  ax-5 1725  ax-6 1771  ax-7 1814  ax-8 1844  ax-9 1846  ax-10 1861  ax-11 1866  ax-12 1878  ax-13 2026  ax-ext 2380  ax-rep 4507  ax-sep 4517  ax-nul 4525  ax-pow 4572  ax-pr 4630  ax-un 6574  ax-cnex 9578  ax-resscn 9579  ax-1cn 9580  ax-icn 9581  ax-addcl 9582  ax-addrcl 9583  ax-mulcl 9584  ax-mulrcl 9585  ax-mulcom 9586  ax-addass 9587  ax-mulass 9588  ax-distr 9589  ax-i2m1 9590  ax-1ne0 9591  ax-1rid 9592  ax-rnegex 9593  ax-rrecex 9594  ax-cnre 9595  ax-pre-lttri 9596  ax-pre-lttrn 9597  ax-pre-ltadd 9598  ax-pre-mulgt0 9599
This theorem depends on definitions:  df-bi 185  df-or 368  df-an 369  df-3or 975  df-3an 976  df-tru 1408  df-ex 1634  df-nf 1638  df-sb 1764  df-eu 2242  df-mo 2243  df-clab 2388  df-cleq 2394  df-clel 2397  df-nfc 2552  df-ne 2600  df-nel 2601  df-ral 2759  df-rex 2760  df-reu 2761  df-rmo 2762  df-rab 2763  df-v 3061  df-sbc 3278  df-csb 3374  df-dif 3417  df-un 3419  df-in 3421  df-ss 3428  df-pss 3430  df-nul 3739  df-if 3886  df-pw 3957  df-sn 3973  df-pr 3975  df-tp 3977  df-op 3979  df-uni 4192  df-int 4228  df-iun 4273  df-br 4396  df-opab 4454  df-mpt 4455  df-tr 4490  df-eprel 4734  df-id 4738  df-po 4744  df-so 4745  df-fr 4782  df-we 4784  df-xp 4829  df-rel 4830  df-cnv 4831  df-co 4832  df-dm 4833  df-rn 4834  df-res 4835  df-ima 4836  df-pred 5367  df-ord 5413  df-on 5414  df-lim 5415  df-suc 5416  df-iota 5533  df-fun 5571  df-fn 5572  df-f 5573  df-f1 5574  df-fo 5575  df-f1o 5576  df-fv 5577  df-riota 6240  df-ov 6281  df-oprab 6282  df-mpt2 6283  df-om 6684  df-1st 6784  df-2nd 6785  df-wrecs 7013  df-recs 7075  df-rdg 7113  df-1o 7167  df-oadd 7171  df-er 7348  df-en 7555  df-dom 7556  df-sdom 7557  df-fin 7558  df-card 8352  df-cda 8580  df-pnf 9660  df-mnf 9661  df-xr 9662  df-ltxr 9663  df-le 9664  df-sub 9843  df-neg 9844  df-nn 10577  df-2 10635  df-n0 10837  df-z 10906  df-uz 11128  df-fz 11727  df-fzo 11855  df-hash 12453  df-word 12591  df-concat 12593  df-s1 12594  df-s2 12869  df-s3 12870  df-func 15471  df-uncf 15808
This theorem is referenced by:  uncfcl  15828  uncf1  15829  uncf2  15830
  Copyright terms: Public domain W3C validator