Metamath Proof Explorer


Theorem elmrsubrn

Description: Characterization of the substitutions as functions from expressions to expressions that distribute under concatenation and map constants to themselves. (The constant part uses ( C \ V ) because we don't know that C and V are disjoint until we get to ismfs .) (Contributed by Mario Carneiro, 18-Jul-2016)

Ref Expression
Hypotheses mrsubccat.s S=mRSubstT
mrsubccat.r R=mRExT
mrsubcn.v V=mVRT
mrsubcn.c C=mCNT
Assertion elmrsubrn TWFranSF:RRcCVF⟨“c”⟩=⟨“c”⟩xRyRFx++y=Fx++Fy

Proof

Step Hyp Ref Expression
1 mrsubccat.s S=mRSubstT
2 mrsubccat.r R=mRExT
3 mrsubcn.v V=mVRT
4 mrsubcn.c C=mCNT
5 1 2 mrsubf FranSF:RR
6 1 2 3 4 mrsubcn FranScCVF⟨“c”⟩=⟨“c”⟩
7 6 ralrimiva FranScCVF⟨“c”⟩=⟨“c”⟩
8 1 2 mrsubccat FranSxRyRFx++y=Fx++Fy
9 8 3expb FranSxRyRFx++y=Fx++Fy
10 9 ralrimivva FranSxRyRFx++y=Fx++Fy
11 5 7 10 3jca FranSF:RRcCVF⟨“c”⟩=⟨“c”⟩xRyRFx++y=Fx++Fy
12 4 3 2 mrexval TWR=WordCV
13 12 adantr TWF:RRcCVF⟨“c”⟩=⟨“c”⟩xRyRFx++y=Fx++FyR=WordCV
14 s1eq w=v⟨“w”⟩=⟨“v”⟩
15 14 fveq2d w=vF⟨“w”⟩=F⟨“v”⟩
16 eqid wVF⟨“w”⟩=wVF⟨“w”⟩
17 fvex F⟨“v”⟩V
18 15 16 17 fvmpt vVwVF⟨“w”⟩v=F⟨“v”⟩
19 18 adantl TWF:RRcCVF⟨“c”⟩=⟨“c”⟩xRyRFx++y=Fx++FyvCVvVwVF⟨“w”⟩v=F⟨“v”⟩
20 difun2 CVV=CV
21 20 eleq2i vCVVvCV
22 eldif vCVVvCV¬vV
23 21 22 bitr3i vCVvCV¬vV
24 simpr2 TWF:RRcCVF⟨“c”⟩=⟨“c”⟩xRyRFx++y=Fx++FycCVF⟨“c”⟩=⟨“c”⟩
25 s1eq c=v⟨“c”⟩=⟨“v”⟩
26 25 fveq2d c=vF⟨“c”⟩=F⟨“v”⟩
27 26 25 eqeq12d c=vF⟨“c”⟩=⟨“c”⟩F⟨“v”⟩=⟨“v”⟩
28 27 rspccva cCVF⟨“c”⟩=⟨“c”⟩vCVF⟨“v”⟩=⟨“v”⟩
29 24 28 sylan TWF:RRcCVF⟨“c”⟩=⟨“c”⟩xRyRFx++y=Fx++FyvCVF⟨“v”⟩=⟨“v”⟩
30 23 29 sylan2br TWF:RRcCVF⟨“c”⟩=⟨“c”⟩xRyRFx++y=Fx++FyvCV¬vVF⟨“v”⟩=⟨“v”⟩
31 30 anassrs TWF:RRcCVF⟨“c”⟩=⟨“c”⟩xRyRFx++y=Fx++FyvCV¬vVF⟨“v”⟩=⟨“v”⟩
32 31 eqcomd TWF:RRcCVF⟨“c”⟩=⟨“c”⟩xRyRFx++y=Fx++FyvCV¬vV⟨“v”⟩=F⟨“v”⟩
33 19 32 ifeqda TWF:RRcCVF⟨“c”⟩=⟨“c”⟩xRyRFx++y=Fx++FyvCVifvVwVF⟨“w”⟩v⟨“v”⟩=F⟨“v”⟩
34 33 mpteq2dva TWF:RRcCVF⟨“c”⟩=⟨“c”⟩xRyRFx++y=Fx++FyvCVifvVwVF⟨“w”⟩v⟨“v”⟩=vCVF⟨“v”⟩
35 34 coeq1d TWF:RRcCVF⟨“c”⟩=⟨“c”⟩xRyRFx++y=Fx++FyvCVifvVwVF⟨“w”⟩v⟨“v”⟩r=vCVF⟨“v”⟩r
36 35 oveq2d TWF:RRcCVF⟨“c”⟩=⟨“c”⟩xRyRFx++y=Fx++FyfreeMndCVvCVifvVwVF⟨“w”⟩v⟨“v”⟩r=freeMndCVvCVF⟨“v”⟩r
37 13 36 mpteq12dv TWF:RRcCVF⟨“c”⟩=⟨“c”⟩xRyRFx++y=Fx++FyrRfreeMndCVvCVifvVwVF⟨“w”⟩v⟨“v”⟩r=rWordCVfreeMndCVvCVF⟨“v”⟩r
38 elun2 vVvCV
39 simplr1 TWF:RRcCVF⟨“c”⟩=⟨“c”⟩xRyRFx++y=Fx++FyvCVF:RR
40 simpr TWF:RRcCVF⟨“c”⟩=⟨“c”⟩xRyRFx++y=Fx++FyvCVvCV
41 40 s1cld TWF:RRcCVF⟨“c”⟩=⟨“c”⟩xRyRFx++y=Fx++FyvCV⟨“v”⟩WordCV
42 12 ad2antrr TWF:RRcCVF⟨“c”⟩=⟨“c”⟩xRyRFx++y=Fx++FyvCVR=WordCV
43 41 42 eleqtrrd TWF:RRcCVF⟨“c”⟩=⟨“c”⟩xRyRFx++y=Fx++FyvCV⟨“v”⟩R
44 39 43 ffvelcdmd TWF:RRcCVF⟨“c”⟩=⟨“c”⟩xRyRFx++y=Fx++FyvCVF⟨“v”⟩R
45 38 44 sylan2 TWF:RRcCVF⟨“c”⟩=⟨“c”⟩xRyRFx++y=Fx++FyvVF⟨“v”⟩R
46 15 cbvmptv wVF⟨“w”⟩=vVF⟨“v”⟩
47 45 46 fmptd TWF:RRcCVF⟨“c”⟩=⟨“c”⟩xRyRFx++y=Fx++FywVF⟨“w”⟩:VR
48 ssid VV
49 eqid freeMndCV=freeMndCV
50 4 3 2 1 49 mrsubfval wVF⟨“w”⟩:VRVVSwVF⟨“w”⟩=rRfreeMndCVvCVifvVwVF⟨“w”⟩v⟨“v”⟩r
51 47 48 50 sylancl TWF:RRcCVF⟨“c”⟩=⟨“c”⟩xRyRFx++y=Fx++FySwVF⟨“w”⟩=rRfreeMndCVvCVifvVwVF⟨“w”⟩v⟨“v”⟩r
52 4 fvexi CV
53 3 fvexi VV
54 52 53 unex CVV
55 49 frmdmnd CVVfreeMndCVMnd
56 54 55 ax-mp freeMndCVMnd
57 56 a1i TWF:RRcCVF⟨“c”⟩=⟨“c”⟩xRyRFx++y=Fx++FyfreeMndCVMnd
58 54 a1i TWF:RRcCVF⟨“c”⟩=⟨“c”⟩xRyRFx++y=Fx++FyCVV
59 44 42 eleqtrd TWF:RRcCVF⟨“c”⟩=⟨“c”⟩xRyRFx++y=Fx++FyvCVF⟨“v”⟩WordCV
60 59 fmpttd TWF:RRcCVF⟨“c”⟩=⟨“c”⟩xRyRFx++y=Fx++FyvCVF⟨“v”⟩:CVWordCV
61 simpr1 TWF:RRcCVF⟨“c”⟩=⟨“c”⟩xRyRFx++y=Fx++FyF:RR
62 13 13 feq23d TWF:RRcCVF⟨“c”⟩=⟨“c”⟩xRyRFx++y=Fx++FyF:RRF:WordCVWordCV
63 61 62 mpbid TWF:RRcCVF⟨“c”⟩=⟨“c”⟩xRyRFx++y=Fx++FyF:WordCVWordCV
64 simpr3 TWF:RRcCVF⟨“c”⟩=⟨“c”⟩xRyRFx++y=Fx++FyxRyRFx++y=Fx++Fy
65 simprl TWF:RRxRyRxR
66 12 adantr TWF:RRR=WordCV
67 66 adantr TWF:RRxRyRR=WordCV
68 65 67 eleqtrd TWF:RRxRyRxWordCV
69 simprr TWF:RRxRyRyR
70 69 67 eleqtrd TWF:RRxRyRyWordCV
71 eqid BasefreeMndCV=BasefreeMndCV
72 49 71 frmdbas CVVBasefreeMndCV=WordCV
73 54 72 ax-mp BasefreeMndCV=WordCV
74 73 eqcomi WordCV=BasefreeMndCV
75 eqid +freeMndCV=+freeMndCV
76 49 74 75 frmdadd xWordCVyWordCVx+freeMndCVy=x++y
77 68 70 76 syl2anc TWF:RRxRyRx+freeMndCVy=x++y
78 77 fveq2d TWF:RRxRyRFx+freeMndCVy=Fx++y
79 ffvelcdm F:RRxRFxR
80 79 ad2ant2lr TWF:RRxRyRFxR
81 80 67 eleqtrd TWF:RRxRyRFxWordCV
82 ffvelcdm F:RRyRFyR
83 82 ad2ant2l TWF:RRxRyRFyR
84 83 67 eleqtrd TWF:RRxRyRFyWordCV
85 49 74 75 frmdadd FxWordCVFyWordCVFx+freeMndCVFy=Fx++Fy
86 81 84 85 syl2anc TWF:RRxRyRFx+freeMndCVFy=Fx++Fy
87 78 86 eqeq12d TWF:RRxRyRFx+freeMndCVy=Fx+freeMndCVFyFx++y=Fx++Fy
88 87 2ralbidva TWF:RRxRyRFx+freeMndCVy=Fx+freeMndCVFyxRyRFx++y=Fx++Fy
89 66 raleqdv TWF:RRyRFx+freeMndCVy=Fx+freeMndCVFyyWordCVFx+freeMndCVy=Fx+freeMndCVFy
90 66 89 raleqbidv TWF:RRxRyRFx+freeMndCVy=Fx+freeMndCVFyxWordCVyWordCVFx+freeMndCVy=Fx+freeMndCVFy
91 88 90 bitr3d TWF:RRxRyRFx++y=Fx++FyxWordCVyWordCVFx+freeMndCVy=Fx+freeMndCVFy
92 91 3ad2antr1 TWF:RRcCVF⟨“c”⟩=⟨“c”⟩xRyRFx++y=Fx++FyxRyRFx++y=Fx++FyxWordCVyWordCVFx+freeMndCVy=Fx+freeMndCVFy
93 64 92 mpbid TWF:RRcCVF⟨“c”⟩=⟨“c”⟩xRyRFx++y=Fx++FyxWordCVyWordCVFx+freeMndCVy=Fx+freeMndCVFy
94 wrd0 WordCV
95 ffvelcdm F:WordCVWordCVWordCVFWordCV
96 63 94 95 sylancl TWF:RRcCVF⟨“c”⟩=⟨“c”⟩xRyRFx++y=Fx++FyFWordCV
97 lencl FWordCVF0
98 96 97 syl TWF:RRcCVF⟨“c”⟩=⟨“c”⟩xRyRFx++y=Fx++FyF0
99 98 nn0cnd TWF:RRcCVF⟨“c”⟩=⟨“c”⟩xRyRFx++y=Fx++FyF
100 0cnd TWF:RRcCVF⟨“c”⟩=⟨“c”⟩xRyRFx++y=Fx++Fy0
101 99 addridd TWF:RRcCVF⟨“c”⟩=⟨“c”⟩xRyRFx++y=Fx++FyF+0=F
102 94 13 eleqtrrid TWF:RRcCVF⟨“c”⟩=⟨“c”⟩xRyRFx++y=Fx++FyR
103 fvoveq1 x=Fx++y=F++y
104 fveq2 x=Fx=F
105 104 oveq1d x=Fx++Fy=F++Fy
106 103 105 eqeq12d x=Fx++y=Fx++FyF++y=F++Fy
107 oveq2 y=++y=++
108 ccatidid ++=
109 107 108 eqtrdi y=++y=
110 109 fveq2d y=F++y=F
111 fveq2 y=Fy=F
112 111 oveq2d y=F++Fy=F++F
113 110 112 eqeq12d y=F++y=F++FyF=F++F
114 106 113 rspc2va RRxRyRFx++y=Fx++FyF=F++F
115 102 102 64 114 syl21anc TWF:RRcCVF⟨“c”⟩=⟨“c”⟩xRyRFx++y=Fx++FyF=F++F
116 115 fveq2d TWF:RRcCVF⟨“c”⟩=⟨“c”⟩xRyRFx++y=Fx++FyF=F++F
117 ccatlen FWordCVFWordCVF++F=F+F
118 96 96 117 syl2anc TWF:RRcCVF⟨“c”⟩=⟨“c”⟩xRyRFx++y=Fx++FyF++F=F+F
119 101 116 118 3eqtrrd TWF:RRcCVF⟨“c”⟩=⟨“c”⟩xRyRFx++y=Fx++FyF+F=F+0
120 99 99 100 119 addcanad TWF:RRcCVF⟨“c”⟩=⟨“c”⟩xRyRFx++y=Fx++FyF=0
121 fvex FV
122 hasheq0 FVF=0F=
123 121 122 ax-mp F=0F=
124 120 123 sylib TWF:RRcCVF⟨“c”⟩=⟨“c”⟩xRyRFx++y=Fx++FyF=
125 56 56 pm3.2i freeMndCVMndfreeMndCVMnd
126 49 frmd0 =0freeMndCV
127 74 74 75 75 126 126 ismhm FfreeMndCVMndHomfreeMndCVfreeMndCVMndfreeMndCVMndF:WordCVWordCVxWordCVyWordCVFx+freeMndCVy=Fx+freeMndCVFyF=
128 125 127 mpbiran FfreeMndCVMndHomfreeMndCVF:WordCVWordCVxWordCVyWordCVFx+freeMndCVy=Fx+freeMndCVFyF=
129 63 93 124 128 syl3anbrc TWF:RRcCVF⟨“c”⟩=⟨“c”⟩xRyRFx++y=Fx++FyFfreeMndCVMndHomfreeMndCV
130 eqid varFMndCV=varFMndCV
131 130 vrmdf CVVvarFMndCV:CVWordCV
132 54 131 ax-mp varFMndCV:CVWordCV
133 fcompt F:WordCVWordCVvarFMndCV:CVWordCVFvarFMndCV=vCVFvarFMndCVv
134 63 132 133 sylancl TWF:RRcCVF⟨“c”⟩=⟨“c”⟩xRyRFx++y=Fx++FyFvarFMndCV=vCVFvarFMndCVv
135 130 vrmdval CVVvCVvarFMndCVv=⟨“v”⟩
136 54 135 mpan vCVvarFMndCVv=⟨“v”⟩
137 136 fveq2d vCVFvarFMndCVv=F⟨“v”⟩
138 137 mpteq2ia vCVFvarFMndCVv=vCVF⟨“v”⟩
139 134 138 eqtrdi TWF:RRcCVF⟨“c”⟩=⟨“c”⟩xRyRFx++y=Fx++FyFvarFMndCV=vCVF⟨“v”⟩
140 49 74 130 frmdup3lem freeMndCVMndCVVvCVF⟨“v”⟩:CVWordCVFfreeMndCVMndHomfreeMndCVFvarFMndCV=vCVF⟨“v”⟩F=rWordCVfreeMndCVvCVF⟨“v”⟩r
141 57 58 60 129 139 140 syl32anc TWF:RRcCVF⟨“c”⟩=⟨“c”⟩xRyRFx++y=Fx++FyF=rWordCVfreeMndCVvCVF⟨“v”⟩r
142 37 51 141 3eqtr4rd TWF:RRcCVF⟨“c”⟩=⟨“c”⟩xRyRFx++y=Fx++FyF=SwVF⟨“w”⟩
143 3 2 1 mrsubff TWS:R𝑝𝑚VRR
144 143 ffnd TWSFnR𝑝𝑚V
145 144 adantr TWF:RRcCVF⟨“c”⟩=⟨“c”⟩xRyRFx++y=Fx++FySFnR𝑝𝑚V
146 2 fvexi RV
147 elpm2r RVVVwVF⟨“w”⟩:VRVVwVF⟨“w”⟩R𝑝𝑚V
148 146 53 147 mpanl12 wVF⟨“w”⟩:VRVVwVF⟨“w”⟩R𝑝𝑚V
149 47 48 148 sylancl TWF:RRcCVF⟨“c”⟩=⟨“c”⟩xRyRFx++y=Fx++FywVF⟨“w”⟩R𝑝𝑚V
150 fnfvelrn SFnR𝑝𝑚VwVF⟨“w”⟩R𝑝𝑚VSwVF⟨“w”⟩ranS
151 145 149 150 syl2anc TWF:RRcCVF⟨“c”⟩=⟨“c”⟩xRyRFx++y=Fx++FySwVF⟨“w”⟩ranS
152 142 151 eqeltrd TWF:RRcCVF⟨“c”⟩=⟨“c”⟩xRyRFx++y=Fx++FyFranS
153 152 ex TWF:RRcCVF⟨“c”⟩=⟨“c”⟩xRyRFx++y=Fx++FyFranS
154 11 153 impbid2 TWFranSF:RRcCVF⟨“c”⟩=⟨“c”⟩xRyRFx++y=Fx++Fy