Metamath Proof Explorer


Theorem efgtf

Description: Value of the free group construction. (Contributed by Mario Carneiro, 27-Sep-2015)

Ref Expression
Hypotheses efgval.w
|- W = ( _I ` Word ( I X. 2o ) )
efgval.r
|- .~ = ( ~FG ` I )
efgval2.m
|- M = ( y e. I , z e. 2o |-> <. y , ( 1o \ z ) >. )
efgval2.t
|- T = ( v e. W |-> ( n e. ( 0 ... ( # ` v ) ) , w e. ( I X. 2o ) |-> ( v splice <. n , n , <" w ( M ` w ) "> >. ) ) )
Assertion efgtf
|- ( X e. W -> ( ( T ` X ) = ( a e. ( 0 ... ( # ` X ) ) , b e. ( I X. 2o ) |-> ( X splice <. a , a , <" b ( M ` b ) "> >. ) ) /\ ( T ` X ) : ( ( 0 ... ( # ` X ) ) X. ( I X. 2o ) ) --> W ) )

Proof

Step Hyp Ref Expression
1 efgval.w
 |-  W = ( _I ` Word ( I X. 2o ) )
2 efgval.r
 |-  .~ = ( ~FG ` I )
3 efgval2.m
 |-  M = ( y e. I , z e. 2o |-> <. y , ( 1o \ z ) >. )
4 efgval2.t
 |-  T = ( v e. W |-> ( n e. ( 0 ... ( # ` v ) ) , w e. ( I X. 2o ) |-> ( v splice <. n , n , <" w ( M ` w ) "> >. ) ) )
5 fviss
 |-  ( _I ` Word ( I X. 2o ) ) C_ Word ( I X. 2o )
6 1 5 eqsstri
 |-  W C_ Word ( I X. 2o )
7 simpl
 |-  ( ( X e. W /\ ( a e. ( 0 ... ( # ` X ) ) /\ b e. ( I X. 2o ) ) ) -> X e. W )
8 6 7 sselid
 |-  ( ( X e. W /\ ( a e. ( 0 ... ( # ` X ) ) /\ b e. ( I X. 2o ) ) ) -> X e. Word ( I X. 2o ) )
9 simprr
 |-  ( ( X e. W /\ ( a e. ( 0 ... ( # ` X ) ) /\ b e. ( I X. 2o ) ) ) -> b e. ( I X. 2o ) )
10 3 efgmf
 |-  M : ( I X. 2o ) --> ( I X. 2o )
11 10 ffvelrni
 |-  ( b e. ( I X. 2o ) -> ( M ` b ) e. ( I X. 2o ) )
12 11 ad2antll
 |-  ( ( X e. W /\ ( a e. ( 0 ... ( # ` X ) ) /\ b e. ( I X. 2o ) ) ) -> ( M ` b ) e. ( I X. 2o ) )
13 9 12 s2cld
 |-  ( ( X e. W /\ ( a e. ( 0 ... ( # ` X ) ) /\ b e. ( I X. 2o ) ) ) -> <" b ( M ` b ) "> e. Word ( I X. 2o ) )
14 splcl
 |-  ( ( X e. Word ( I X. 2o ) /\ <" b ( M ` b ) "> e. Word ( I X. 2o ) ) -> ( X splice <. a , a , <" b ( M ` b ) "> >. ) e. Word ( I X. 2o ) )
15 8 13 14 syl2anc
 |-  ( ( X e. W /\ ( a e. ( 0 ... ( # ` X ) ) /\ b e. ( I X. 2o ) ) ) -> ( X splice <. a , a , <" b ( M ` b ) "> >. ) e. Word ( I X. 2o ) )
16 1 efgrcl
 |-  ( X e. W -> ( I e. _V /\ W = Word ( I X. 2o ) ) )
17 16 simprd
 |-  ( X e. W -> W = Word ( I X. 2o ) )
18 17 adantr
 |-  ( ( X e. W /\ ( a e. ( 0 ... ( # ` X ) ) /\ b e. ( I X. 2o ) ) ) -> W = Word ( I X. 2o ) )
19 15 18 eleqtrrd
 |-  ( ( X e. W /\ ( a e. ( 0 ... ( # ` X ) ) /\ b e. ( I X. 2o ) ) ) -> ( X splice <. a , a , <" b ( M ` b ) "> >. ) e. W )
20 19 ralrimivva
 |-  ( X e. W -> A. a e. ( 0 ... ( # ` X ) ) A. b e. ( I X. 2o ) ( X splice <. a , a , <" b ( M ` b ) "> >. ) e. W )
21 eqid
 |-  ( a e. ( 0 ... ( # ` X ) ) , b e. ( I X. 2o ) |-> ( X splice <. a , a , <" b ( M ` b ) "> >. ) ) = ( a e. ( 0 ... ( # ` X ) ) , b e. ( I X. 2o ) |-> ( X splice <. a , a , <" b ( M ` b ) "> >. ) )
22 21 fmpo
 |-  ( A. a e. ( 0 ... ( # ` X ) ) A. b e. ( I X. 2o ) ( X splice <. a , a , <" b ( M ` b ) "> >. ) e. W <-> ( a e. ( 0 ... ( # ` X ) ) , b e. ( I X. 2o ) |-> ( X splice <. a , a , <" b ( M ` b ) "> >. ) ) : ( ( 0 ... ( # ` X ) ) X. ( I X. 2o ) ) --> W )
23 20 22 sylib
 |-  ( X e. W -> ( a e. ( 0 ... ( # ` X ) ) , b e. ( I X. 2o ) |-> ( X splice <. a , a , <" b ( M ` b ) "> >. ) ) : ( ( 0 ... ( # ` X ) ) X. ( I X. 2o ) ) --> W )
24 ovex
 |-  ( 0 ... ( # ` X ) ) e. _V
25 16 simpld
 |-  ( X e. W -> I e. _V )
26 2on
 |-  2o e. On
27 xpexg
 |-  ( ( I e. _V /\ 2o e. On ) -> ( I X. 2o ) e. _V )
28 25 26 27 sylancl
 |-  ( X e. W -> ( I X. 2o ) e. _V )
29 xpexg
 |-  ( ( ( 0 ... ( # ` X ) ) e. _V /\ ( I X. 2o ) e. _V ) -> ( ( 0 ... ( # ` X ) ) X. ( I X. 2o ) ) e. _V )
30 24 28 29 sylancr
 |-  ( X e. W -> ( ( 0 ... ( # ` X ) ) X. ( I X. 2o ) ) e. _V )
31 23 30 fexd
 |-  ( X e. W -> ( a e. ( 0 ... ( # ` X ) ) , b e. ( I X. 2o ) |-> ( X splice <. a , a , <" b ( M ` b ) "> >. ) ) e. _V )
32 fveq2
 |-  ( u = X -> ( # ` u ) = ( # ` X ) )
33 32 oveq2d
 |-  ( u = X -> ( 0 ... ( # ` u ) ) = ( 0 ... ( # ` X ) ) )
34 eqidd
 |-  ( u = X -> ( I X. 2o ) = ( I X. 2o ) )
35 oveq1
 |-  ( u = X -> ( u splice <. a , a , <" b ( M ` b ) "> >. ) = ( X splice <. a , a , <" b ( M ` b ) "> >. ) )
36 33 34 35 mpoeq123dv
 |-  ( u = X -> ( a e. ( 0 ... ( # ` u ) ) , b e. ( I X. 2o ) |-> ( u splice <. a , a , <" b ( M ` b ) "> >. ) ) = ( a e. ( 0 ... ( # ` X ) ) , b e. ( I X. 2o ) |-> ( X splice <. a , a , <" b ( M ` b ) "> >. ) ) )
37 oteq1
 |-  ( n = a -> <. n , n , <" w ( M ` w ) "> >. = <. a , n , <" w ( M ` w ) "> >. )
38 oteq2
 |-  ( n = a -> <. a , n , <" w ( M ` w ) "> >. = <. a , a , <" w ( M ` w ) "> >. )
39 37 38 eqtrd
 |-  ( n = a -> <. n , n , <" w ( M ` w ) "> >. = <. a , a , <" w ( M ` w ) "> >. )
40 39 oveq2d
 |-  ( n = a -> ( v splice <. n , n , <" w ( M ` w ) "> >. ) = ( v splice <. a , a , <" w ( M ` w ) "> >. ) )
41 id
 |-  ( w = b -> w = b )
42 fveq2
 |-  ( w = b -> ( M ` w ) = ( M ` b ) )
43 41 42 s2eqd
 |-  ( w = b -> <" w ( M ` w ) "> = <" b ( M ` b ) "> )
44 43 oteq3d
 |-  ( w = b -> <. a , a , <" w ( M ` w ) "> >. = <. a , a , <" b ( M ` b ) "> >. )
45 44 oveq2d
 |-  ( w = b -> ( v splice <. a , a , <" w ( M ` w ) "> >. ) = ( v splice <. a , a , <" b ( M ` b ) "> >. ) )
46 40 45 cbvmpov
 |-  ( n e. ( 0 ... ( # ` v ) ) , w e. ( I X. 2o ) |-> ( v splice <. n , n , <" w ( M ` w ) "> >. ) ) = ( a e. ( 0 ... ( # ` v ) ) , b e. ( I X. 2o ) |-> ( v splice <. a , a , <" b ( M ` b ) "> >. ) )
47 fveq2
 |-  ( v = u -> ( # ` v ) = ( # ` u ) )
48 47 oveq2d
 |-  ( v = u -> ( 0 ... ( # ` v ) ) = ( 0 ... ( # ` u ) ) )
49 eqidd
 |-  ( v = u -> ( I X. 2o ) = ( I X. 2o ) )
50 oveq1
 |-  ( v = u -> ( v splice <. a , a , <" b ( M ` b ) "> >. ) = ( u splice <. a , a , <" b ( M ` b ) "> >. ) )
51 48 49 50 mpoeq123dv
 |-  ( v = u -> ( a e. ( 0 ... ( # ` v ) ) , b e. ( I X. 2o ) |-> ( v splice <. a , a , <" b ( M ` b ) "> >. ) ) = ( a e. ( 0 ... ( # ` u ) ) , b e. ( I X. 2o ) |-> ( u splice <. a , a , <" b ( M ` b ) "> >. ) ) )
52 46 51 eqtrid
 |-  ( v = u -> ( n e. ( 0 ... ( # ` v ) ) , w e. ( I X. 2o ) |-> ( v splice <. n , n , <" w ( M ` w ) "> >. ) ) = ( a e. ( 0 ... ( # ` u ) ) , b e. ( I X. 2o ) |-> ( u splice <. a , a , <" b ( M ` b ) "> >. ) ) )
53 52 cbvmptv
 |-  ( v e. W |-> ( n e. ( 0 ... ( # ` v ) ) , w e. ( I X. 2o ) |-> ( v splice <. n , n , <" w ( M ` w ) "> >. ) ) ) = ( u e. W |-> ( a e. ( 0 ... ( # ` u ) ) , b e. ( I X. 2o ) |-> ( u splice <. a , a , <" b ( M ` b ) "> >. ) ) )
54 4 53 eqtri
 |-  T = ( u e. W |-> ( a e. ( 0 ... ( # ` u ) ) , b e. ( I X. 2o ) |-> ( u splice <. a , a , <" b ( M ` b ) "> >. ) ) )
55 36 54 fvmptg
 |-  ( ( X e. W /\ ( a e. ( 0 ... ( # ` X ) ) , b e. ( I X. 2o ) |-> ( X splice <. a , a , <" b ( M ` b ) "> >. ) ) e. _V ) -> ( T ` X ) = ( a e. ( 0 ... ( # ` X ) ) , b e. ( I X. 2o ) |-> ( X splice <. a , a , <" b ( M ` b ) "> >. ) ) )
56 31 55 mpdan
 |-  ( X e. W -> ( T ` X ) = ( a e. ( 0 ... ( # ` X ) ) , b e. ( I X. 2o ) |-> ( X splice <. a , a , <" b ( M ` b ) "> >. ) ) )
57 56 feq1d
 |-  ( X e. W -> ( ( T ` X ) : ( ( 0 ... ( # ` X ) ) X. ( I X. 2o ) ) --> W <-> ( a e. ( 0 ... ( # ` X ) ) , b e. ( I X. 2o ) |-> ( X splice <. a , a , <" b ( M ` b ) "> >. ) ) : ( ( 0 ... ( # ` X ) ) X. ( I X. 2o ) ) --> W ) )
58 23 57 mpbird
 |-  ( X e. W -> ( T ` X ) : ( ( 0 ... ( # ` X ) ) X. ( I X. 2o ) ) --> W )
59 56 58 jca
 |-  ( X e. W -> ( ( T ` X ) = ( a e. ( 0 ... ( # ` X ) ) , b e. ( I X. 2o ) |-> ( X splice <. a , a , <" b ( M ` b ) "> >. ) ) /\ ( T ` X ) : ( ( 0 ... ( # ` X ) ) X. ( I X. 2o ) ) --> W ) )