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

Theorem ccatcl 12274
Description: The concatenation of two words is a word. (Contributed by FL, 2-Feb-2014.) (Proof shortened by Stefan O'Rear, 15-Aug-2015.)
Assertion
Ref Expression
ccatcl  |-  ( ( S  e. Word  B  /\  T  e. Word  B )  ->  ( S concat  T )  e. Word  B )

Proof of Theorem ccatcl
Dummy variable  x is distinct from all other variables.
StepHypRef Expression
1 ccatfval 12273 . 2  |-  ( ( S  e. Word  B  /\  T  e. Word  B )  ->  ( S concat  T )  =  ( x  e.  ( 0..^ ( (
# `  S )  +  ( # `  T
) ) )  |->  if ( x  e.  ( 0..^ ( # `  S
) ) ,  ( S `  x ) ,  ( T `  ( x  -  ( # `
 S ) ) ) ) ) )
2 wrdf 12240 . . . . . . 7  |-  ( S  e. Word  B  ->  S : ( 0..^ (
# `  S )
) --> B )
32ad2antrr 725 . . . . . 6  |-  ( ( ( S  e. Word  B  /\  T  e. Word  B )  /\  x  e.  ( 0..^ ( ( # `  S )  +  (
# `  T )
) ) )  ->  S : ( 0..^ (
# `  S )
) --> B )
43ffvelrnda 5843 . . . . 5  |-  ( ( ( ( S  e. Word  B  /\  T  e. Word  B
)  /\  x  e.  ( 0..^ ( ( # `  S )  +  (
# `  T )
) ) )  /\  x  e.  ( 0..^ ( # `  S
) ) )  -> 
( S `  x
)  e.  B )
5 wrdf 12240 . . . . . . . 8  |-  ( T  e. Word  B  ->  T : ( 0..^ (
# `  T )
) --> B )
65adantl 466 . . . . . . 7  |-  ( ( S  e. Word  B  /\  T  e. Word  B )  ->  T : ( 0..^ ( # `  T
) ) --> B )
76ad2antrr 725 . . . . . 6  |-  ( ( ( ( S  e. Word  B  /\  T  e. Word  B
)  /\  x  e.  ( 0..^ ( ( # `  S )  +  (
# `  T )
) ) )  /\  -.  x  e.  (
0..^ ( # `  S
) ) )  ->  T : ( 0..^ (
# `  T )
) --> B )
8 simpr 461 . . . . . . . . . 10  |-  ( ( ( S  e. Word  B  /\  T  e. Word  B )  /\  x  e.  ( 0..^ ( ( # `  S )  +  (
# `  T )
) ) )  ->  x  e.  ( 0..^ ( ( # `  S
)  +  ( # `  T ) ) ) )
9 wrdfin 12248 . . . . . . . . . . . . . 14  |-  ( S  e. Word  B  ->  S  e.  Fin )
109adantr 465 . . . . . . . . . . . . 13  |-  ( ( S  e. Word  B  /\  T  e. Word  B )  ->  S  e.  Fin )
11 hashcl 12126 . . . . . . . . . . . . 13  |-  ( S  e.  Fin  ->  ( # `
 S )  e. 
NN0 )
1210, 11syl 16 . . . . . . . . . . . 12  |-  ( ( S  e. Word  B  /\  T  e. Word  B )  ->  ( # `  S
)  e.  NN0 )
1312nn0zd 10745 . . . . . . . . . . 11  |-  ( ( S  e. Word  B  /\  T  e. Word  B )  ->  ( # `  S
)  e.  ZZ )
1413adantr 465 . . . . . . . . . 10  |-  ( ( ( S  e. Word  B  /\  T  e. Word  B )  /\  x  e.  ( 0..^ ( ( # `  S )  +  (
# `  T )
) ) )  -> 
( # `  S )  e.  ZZ )
15 fzospliti 11581 . . . . . . . . . 10  |-  ( ( x  e.  ( 0..^ ( ( # `  S
)  +  ( # `  T ) ) )  /\  ( # `  S
)  e.  ZZ )  ->  ( x  e.  ( 0..^ ( # `  S ) )  \/  x  e.  ( (
# `  S )..^ ( ( # `  S
)  +  ( # `  T ) ) ) ) )
168, 14, 15syl2anc 661 . . . . . . . . 9  |-  ( ( ( S  e. Word  B  /\  T  e. Word  B )  /\  x  e.  ( 0..^ ( ( # `  S )  +  (
# `  T )
) ) )  -> 
( x  e.  ( 0..^ ( # `  S
) )  \/  x  e.  ( ( # `  S
)..^ ( ( # `  S )  +  (
# `  T )
) ) ) )
1716orcanai 904 . . . . . . . 8  |-  ( ( ( ( S  e. Word  B  /\  T  e. Word  B
)  /\  x  e.  ( 0..^ ( ( # `  S )  +  (
# `  T )
) ) )  /\  -.  x  e.  (
0..^ ( # `  S
) ) )  ->  x  e.  ( ( # `
 S )..^ ( ( # `  S
)  +  ( # `  T ) ) ) )
1813ad2antrr 725 . . . . . . . 8  |-  ( ( ( ( S  e. Word  B  /\  T  e. Word  B
)  /\  x  e.  ( 0..^ ( ( # `  S )  +  (
# `  T )
) ) )  /\  -.  x  e.  (
0..^ ( # `  S
) ) )  -> 
( # `  S )  e.  ZZ )
19 fzosubel 11599 . . . . . . . 8  |-  ( ( x  e.  ( (
# `  S )..^ ( ( # `  S
)  +  ( # `  T ) ) )  /\  ( # `  S
)  e.  ZZ )  ->  ( x  -  ( # `  S ) )  e.  ( ( ( # `  S
)  -  ( # `  S ) )..^ ( ( ( # `  S
)  +  ( # `  T ) )  -  ( # `  S ) ) ) )
2017, 18, 19syl2anc 661 . . . . . . 7  |-  ( ( ( ( S  e. Word  B  /\  T  e. Word  B
)  /\  x  e.  ( 0..^ ( ( # `  S )  +  (
# `  T )
) ) )  /\  -.  x  e.  (
0..^ ( # `  S
) ) )  -> 
( x  -  ( # `
 S ) )  e.  ( ( (
# `  S )  -  ( # `  S
) )..^ ( ( ( # `  S
)  +  ( # `  T ) )  -  ( # `  S ) ) ) )
2112nn0cnd 10638 . . . . . . . . . 10  |-  ( ( S  e. Word  B  /\  T  e. Word  B )  ->  ( # `  S
)  e.  CC )
2221subidd 9707 . . . . . . . . 9  |-  ( ( S  e. Word  B  /\  T  e. Word  B )  ->  ( ( # `  S
)  -  ( # `  S ) )  =  0 )
23 wrdfin 12248 . . . . . . . . . . . . 13  |-  ( T  e. Word  B  ->  T  e.  Fin )
2423adantl 466 . . . . . . . . . . . 12  |-  ( ( S  e. Word  B  /\  T  e. Word  B )  ->  T  e.  Fin )
25 hashcl 12126 . . . . . . . . . . . 12  |-  ( T  e.  Fin  ->  ( # `
 T )  e. 
NN0 )
2624, 25syl 16 . . . . . . . . . . 11  |-  ( ( S  e. Word  B  /\  T  e. Word  B )  ->  ( # `  T
)  e.  NN0 )
2726nn0cnd 10638 . . . . . . . . . 10  |-  ( ( S  e. Word  B  /\  T  e. Word  B )  ->  ( # `  T
)  e.  CC )
2821, 27pncan2d 9721 . . . . . . . . 9  |-  ( ( S  e. Word  B  /\  T  e. Word  B )  ->  ( ( ( # `  S )  +  (
# `  T )
)  -  ( # `  S ) )  =  ( # `  T
) )
2922, 28oveq12d 6109 . . . . . . . 8  |-  ( ( S  e. Word  B  /\  T  e. Word  B )  ->  ( ( ( # `  S )  -  ( # `
 S ) )..^ ( ( ( # `  S )  +  (
# `  T )
)  -  ( # `  S ) ) )  =  ( 0..^ (
# `  T )
) )
3029ad2antrr 725 . . . . . . 7  |-  ( ( ( ( S  e. Word  B  /\  T  e. Word  B
)  /\  x  e.  ( 0..^ ( ( # `  S )  +  (
# `  T )
) ) )  /\  -.  x  e.  (
0..^ ( # `  S
) ) )  -> 
( ( ( # `  S )  -  ( # `
 S ) )..^ ( ( ( # `  S )  +  (
# `  T )
)  -  ( # `  S ) ) )  =  ( 0..^ (
# `  T )
) )
3120, 30eleqtrd 2519 . . . . . 6  |-  ( ( ( ( S  e. Word  B  /\  T  e. Word  B
)  /\  x  e.  ( 0..^ ( ( # `  S )  +  (
# `  T )
) ) )  /\  -.  x  e.  (
0..^ ( # `  S
) ) )  -> 
( x  -  ( # `
 S ) )  e.  ( 0..^ (
# `  T )
) )
327, 31ffvelrnd 5844 . . . . 5  |-  ( ( ( ( S  e. Word  B  /\  T  e. Word  B
)  /\  x  e.  ( 0..^ ( ( # `  S )  +  (
# `  T )
) ) )  /\  -.  x  e.  (
0..^ ( # `  S
) ) )  -> 
( T `  (
x  -  ( # `  S ) ) )  e.  B )
334, 32ifclda 3821 . . . 4  |-  ( ( ( S  e. Word  B  /\  T  e. Word  B )  /\  x  e.  ( 0..^ ( ( # `  S )  +  (
# `  T )
) ) )  ->  if ( x  e.  ( 0..^ ( # `  S
) ) ,  ( S `  x ) ,  ( T `  ( x  -  ( # `
 S ) ) ) )  e.  B
)
34 eqid 2443 . . . 4  |-  ( x  e.  ( 0..^ ( ( # `  S
)  +  ( # `  T ) ) ) 
|->  if ( x  e.  ( 0..^ ( # `  S ) ) ,  ( S `  x
) ,  ( T `
 ( x  -  ( # `  S ) ) ) ) )  =  ( x  e.  ( 0..^ ( (
# `  S )  +  ( # `  T
) ) )  |->  if ( x  e.  ( 0..^ ( # `  S
) ) ,  ( S `  x ) ,  ( T `  ( x  -  ( # `
 S ) ) ) ) )
3533, 34fmptd 5867 . . 3  |-  ( ( S  e. Word  B  /\  T  e. Word  B )  ->  ( x  e.  ( 0..^ ( ( # `  S )  +  (
# `  T )
) )  |->  if ( x  e.  ( 0..^ ( # `  S
) ) ,  ( S `  x ) ,  ( T `  ( x  -  ( # `
 S ) ) ) ) ) : ( 0..^ ( (
# `  S )  +  ( # `  T
) ) ) --> B )
36 iswrdi 12239 . . 3  |-  ( ( x  e.  ( 0..^ ( ( # `  S
)  +  ( # `  T ) ) ) 
|->  if ( x  e.  ( 0..^ ( # `  S ) ) ,  ( S `  x
) ,  ( T `
 ( x  -  ( # `  S ) ) ) ) ) : ( 0..^ ( ( # `  S
)  +  ( # `  T ) ) ) --> B  ->  ( x  e.  ( 0..^ ( (
# `  S )  +  ( # `  T
) ) )  |->  if ( x  e.  ( 0..^ ( # `  S
) ) ,  ( S `  x ) ,  ( T `  ( x  -  ( # `
 S ) ) ) ) )  e. Word  B )
3735, 36syl 16 . 2  |-  ( ( S  e. Word  B  /\  T  e. Word  B )  ->  ( x  e.  ( 0..^ ( ( # `  S )  +  (
# `  T )
) )  |->  if ( x  e.  ( 0..^ ( # `  S
) ) ,  ( S `  x ) ,  ( T `  ( x  -  ( # `
 S ) ) ) ) )  e. Word  B )
381, 37eqeltrd 2517 1  |-  ( ( S  e. Word  B  /\  T  e. Word  B )  ->  ( S concat  T )  e. Word  B )
Colors of variables: wff setvar class
Syntax hints:   -. wn 3    -> wi 4    \/ wo 368    /\ wa 369    = wceq 1369    e. wcel 1756   ifcif 3791    e. cmpt 4350   -->wf 5414   ` cfv 5418  (class class class)co 6091   Fincfn 7310   0cc0 9282    + caddc 9285    - cmin 9595   NN0cn0 10579   ZZcz 10646  ..^cfzo 11548   #chash 12103  Word cword 12221   concat cconcat 12223
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1591  ax-4 1602  ax-5 1670  ax-6 1708  ax-7 1728  ax-8 1758  ax-9 1760  ax-10 1775  ax-11 1780  ax-12 1792  ax-13 1943  ax-ext 2423  ax-rep 4403  ax-sep 4413  ax-nul 4421  ax-pow 4470  ax-pr 4531  ax-un 6372  ax-cnex 9338  ax-resscn 9339  ax-1cn 9340  ax-icn 9341  ax-addcl 9342  ax-addrcl 9343  ax-mulcl 9344  ax-mulrcl 9345  ax-mulcom 9346  ax-addass 9347  ax-mulass 9348  ax-distr 9349  ax-i2m1 9350  ax-1ne0 9351  ax-1rid 9352  ax-rnegex 9353  ax-rrecex 9354  ax-cnre 9355  ax-pre-lttri 9356  ax-pre-lttrn 9357  ax-pre-ltadd 9358  ax-pre-mulgt0 9359
This theorem depends on definitions:  df-bi 185  df-or 370  df-an 371  df-3or 966  df-3an 967  df-tru 1372  df-ex 1587  df-nf 1590  df-sb 1701  df-eu 2257  df-mo 2258  df-clab 2430  df-cleq 2436  df-clel 2439  df-nfc 2568  df-ne 2608  df-nel 2609  df-ral 2720  df-rex 2721  df-reu 2722  df-rab 2724  df-v 2974  df-sbc 3187  df-csb 3289  df-dif 3331  df-un 3333  df-in 3335  df-ss 3342  df-pss 3344  df-nul 3638  df-if 3792  df-pw 3862  df-sn 3878  df-pr 3880  df-tp 3882  df-op 3884  df-uni 4092  df-int 4129  df-iun 4173  df-br 4293  df-opab 4351  df-mpt 4352  df-tr 4386  df-eprel 4632  df-id 4636  df-po 4641  df-so 4642  df-fr 4679  df-we 4681  df-ord 4722  df-on 4723  df-lim 4724  df-suc 4725  df-xp 4846  df-rel 4847  df-cnv 4848  df-co 4849  df-dm 4850  df-rn 4851  df-res 4852  df-ima 4853  df-iota 5381  df-fun 5420  df-fn 5421  df-f 5422  df-f1 5423  df-fo 5424  df-f1o 5425  df-fv 5426  df-riota 6052  df-ov 6094  df-oprab 6095  df-mpt2 6096  df-om 6477  df-1st 6577  df-2nd 6578  df-recs 6832  df-rdg 6866  df-1o 6920  df-oadd 6924  df-er 7101  df-en 7311  df-dom 7312  df-sdom 7313  df-fin 7314  df-card 8109  df-pnf 9420  df-mnf 9421  df-xr 9422  df-ltxr 9423  df-le 9424  df-sub 9597  df-neg 9598  df-nn 10323  df-n0 10580  df-z 10647  df-uz 10862  df-fz 11438  df-fzo 11549  df-hash 12104  df-word 12229  df-concat 12231
This theorem is referenced by:  ccatsymb  12281  ccatlid  12284  ccatrid  12285  ccatass  12286  lswccatn0lsw  12287  lswccat0lsw  12288  ccatws1cl  12303  ccatswrd  12350  swrdccat1  12351  swrdccat2  12352  cats1un  12370  swrdccatfn  12373  swrdccatin1  12374  swrdccatin2  12378  swrdccatin12lem2c  12379  swrdccatin12  12382  splcl  12394  spllen  12396  splfv1  12397  splfv2a  12398  splval2  12399  revccat  12406  cshwcl  12435  cats1cld  12482  cats1cli  12484  gsumccat  15519  gsumspl  15522  gsumwspan  15524  frmdplusg  15532  frmdmnd  15537  frmdsssubm  15539  frmdup1  15542  psgnuni  16005  efginvrel2  16224  efgsp1  16234  efgredleme  16240  efgredlemc  16242  efgcpbllemb  16252  efgcpbl2  16254  frgpuplem  16269  frgpup1  16272  psgnghm  18010  sseqf  26775  ofcccat  26942  signstfvn  26970  signstfvp  26972  signstfvc  26975  signsvfn  26983  signsvtn  26985  signshf  26989  wwlknext  30356  clwlkisclwwlk2  30452  clwwlkel  30455  wwlkext2clwwlk  30465  numclwwlkovf2ex  30679  numclwlk1lem2foa  30684  numclwlk1lem2fo  30688
  Copyright terms: Public domain W3C validator