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

Theorem mplcoe5 18769
 Description: Decompose a monomial into a finite product of powers of variables. Instead of assuming that is a commutative ring (as in mplcoe2 18770), it is sufficient that is a ring and all the variables of the multivariate polynomial commute. (Contributed by AV, 7-Oct-2019.)
Hypotheses
Ref Expression
mplcoe1.p mPoly
mplcoe1.d
mplcoe1.z
mplcoe1.o
mplcoe1.i
mplcoe2.g mulGrp
mplcoe2.m .g
mplcoe2.v mVar
mplcoe5.r
mplcoe5.y
mplcoe5.c
Assertion
Ref Expression
mplcoe5 g
Distinct variable groups:   ,, ,   ,   ,,   ,,   ,,,,   ,,,   ,,   ,,,   ,,   ,,   ,,,,   ,,,,   ,,   ,   ,   ,
Allowed substitution hints:   ()   ()   (,)   (,)   ()   ()   ()   ()   (,)

Proof of Theorem mplcoe5
Dummy variables are mutually distinct and distinct from all other variables.
StepHypRef Expression
1 mplcoe5.y . . . . . . . . 9
2 mplcoe1.i . . . . . . . . . 10
3 mplcoe1.d . . . . . . . . . . 11
43psrbag 18665 . . . . . . . . . 10
52, 4syl 17 . . . . . . . . 9
61, 5mpbid 215 . . . . . . . 8
76simpld 466 . . . . . . 7
87feqmptd 5932 . . . . . 6
9 iftrue 3878 . . . . . . . . 9
109adantl 473 . . . . . . . 8
11 eldif 3400 . . . . . . . . . 10
12 ifid 3909 . . . . . . . . . . 11
13 frnnn0supp 10947 . . . . . . . . . . . . . . 15 supp
142, 7, 13syl2anc 673 . . . . . . . . . . . . . 14 supp
15 eqimss 3470 . . . . . . . . . . . . . 14 supp supp
1614, 15syl 17 . . . . . . . . . . . . 13 supp
17 c0ex 9655 . . . . . . . . . . . . . 14
1817a1i 11 . . . . . . . . . . . . 13
197, 16, 2, 18suppssr 6965 . . . . . . . . . . . 12
2019ifeq2d 3891 . . . . . . . . . . 11
2112, 20syl5reqr 2520 . . . . . . . . . 10
2211, 21sylan2br 484 . . . . . . . . 9
2322anassrs 660 . . . . . . . 8
2410, 23pm2.61dan 808 . . . . . . 7
2524mpteq2dva 4482 . . . . . 6
268, 25eqtr4d 2508 . . . . 5
2726eqeq2d 2481 . . . 4
2827ifbid 3894 . . 3
2928mpteq2dv 4483 . 2
30 cnvimass 5194 . . . . 5
31 fdm 5745 . . . . . 6
327, 31syl 17 . . . . 5
3330, 32syl5sseq 3466 . . . 4
346simprd 470 . . . . 5
35 sseq1 3439 . . . . . . . 8
36 noel 3726 . . . . . . . . . . . . . . . 16
37 eleq2 2538 . . . . . . . . . . . . . . . 16
3836, 37mtbiri 310 . . . . . . . . . . . . . . 15
3938iffalsed 3883 . . . . . . . . . . . . . 14
4039mpteq2dv 4483 . . . . . . . . . . . . 13
41 fconstmpt 4883 . . . . . . . . . . . . 13
4240, 41syl6eqr 2523 . . . . . . . . . . . 12
4342eqeq2d 2481 . . . . . . . . . . 11
4443ifbid 3894 . . . . . . . . . 10
4544mpteq2dv 4483 . . . . . . . . 9
46 mpteq1 4476 . . . . . . . . . . . 12
47 mpt0 5715 . . . . . . . . . . . 12
4846, 47syl6eq 2521 . . . . . . . . . . 11
4948oveq2d 6324 . . . . . . . . . 10 g g
50 mplcoe2.g . . . . . . . . . . . 12 mulGrp
51 eqid 2471 . . . . . . . . . . . 12
5250, 51ringidval 17815 . . . . . . . . . . 11
5352gsum0 16599 . . . . . . . . . 10 g
5449, 53syl6eq 2521 . . . . . . . . 9 g
5545, 54eqeq12d 2486 . . . . . . . 8 g
5635, 55imbi12d 327 . . . . . . 7 g
5756imbi2d 323 . . . . . 6 g
58 sseq1 3439 . . . . . . . 8
59 eleq2 2538 . . . . . . . . . . . . . 14
6059ifbid 3894 . . . . . . . . . . . . 13
6160mpteq2dv 4483 . . . . . . . . . . . 12
6261eqeq2d 2481 . . . . . . . . . . 11
6362ifbid 3894 . . . . . . . . . 10
6463mpteq2dv 4483 . . . . . . . . 9
65 mpteq1 4476 . . . . . . . . . 10
6665oveq2d 6324 . . . . . . . . 9 g g
6764, 66eqeq12d 2486 . . . . . . . 8 g g
6858, 67imbi12d 327 . . . . . . 7 g g
6968imbi2d 323 . . . . . 6 g g
70 sseq1 3439 . . . . . . . 8
71 eleq2 2538 . . . . . . . . . . . . . 14
7271ifbid 3894 . . . . . . . . . . . . 13
7372mpteq2dv 4483 . . . . . . . . . . . 12
7473eqeq2d 2481 . . . . . . . . . . 11
7574ifbid 3894 . . . . . . . . . 10
7675mpteq2dv 4483 . . . . . . . . 9
77 mpteq1 4476 . . . . . . . . . 10
7877oveq2d 6324 . . . . . . . . 9 g g
7976, 78eqeq12d 2486 . . . . . . . 8 g g
8070, 79imbi12d 327 . . . . . . 7 g g
8180imbi2d 323 . . . . . 6 g g
82 sseq1 3439 . . . . . . . 8
83 eleq2 2538 . . . . . . . . . . . . . 14
8483ifbid 3894 . . . . . . . . . . . . 13
8584mpteq2dv 4483 . . . . . . . . . . . 12
8685eqeq2d 2481 . . . . . . . . . . 11
8786ifbid 3894 . . . . . . . . . 10
8887mpteq2dv 4483 . . . . . . . . 9
89 mpteq1 4476 . . . . . . . . . 10
9089oveq2d 6324 . . . . . . . . 9 g g
9188, 90eqeq12d 2486 . . . . . . . 8 g g
9282, 91imbi12d 327 . . . . . . 7 g g
9392imbi2d 323 . . . . . 6 g g
94 mplcoe1.p . . . . . . . . 9 mPoly
95 mplcoe1.z . . . . . . . . 9
96 mplcoe1.o . . . . . . . . 9
97 mplcoe5.r . . . . . . . . 9
9894, 3, 95, 96, 51, 2, 97mpl1 18745 . . . . . . . 8
9998eqcomd 2477 . . . . . . 7
10099a1d 25 . . . . . 6
101 ssun1 3588 . . . . . . . . . . 11
102 sstr2 3425 . . . . . . . . . . 11
103101, 102ax-mp 5 . . . . . . . . . 10
104103imim1i 59 . . . . . . . . 9 g g
105 oveq1 6315 . . . . . . . . . . . 12 g g
106 eqid 2471 . . . . . . . . . . . . . . 15
1072adantr 472 . . . . . . . . . . . . . . 15
10897adantr 472 . . . . . . . . . . . . . . 15
1097adantr 472 . . . . . . . . . . . . . . . . . . 19
110109ffvelrnda 6037 . . . . . . . . . . . . . . . . . 18
111 0nn0 10908 . . . . . . . . . . . . . . . . . 18
112 ifcl 3914 . . . . . . . . . . . . . . . . . 18
113110, 111, 112sylancl 675 . . . . . . . . . . . . . . . . 17
114 eqid 2471 . . . . . . . . . . . . . . . . 17
115113, 114fmptd 6061 . . . . . . . . . . . . . . . 16
116 frnnn0supp 10947 . . . . . . . . . . . . . . . . . 18 supp
117107, 115, 116syl2anc 673 . . . . . . . . . . . . . . . . 17 supp
118 simprll 780 . . . . . . . . . . . . . . . . . 18
119 eldifn 3545 . . . . . . . . . . . . . . . . . . . . 21
120119adantl 473 . . . . . . . . . . . . . . . . . . . 20
121120iffalsed 3883 . . . . . . . . . . . . . . . . . . 19
122121, 107suppss2 6968 . . . . . . . . . . . . . . . . . 18 supp
123 ssfi 7810 . . . . . . . . . . . . . . . . . 18 supp supp
124118, 122, 123syl2anc 673 . . . . . . . . . . . . . . . . 17 supp
125117, 124eqeltrrd 2550 . . . . . . . . . . . . . . . 16
1263psrbag 18665 . . . . . . . . . . . . . . . . 17
127107, 126syl 17 . . . . . . . . . . . . . . . 16
128115, 125, 127mpbir2and 936 . . . . . . . . . . . . . . 15
129 eqid 2471 . . . . . . . . . . . . . . 15
130 ssun2 3589 . . . . . . . . . . . . . . . . . . 19
131 simprr 774 . . . . . . . . . . . . . . . . . . 19
132130, 131syl5ss 3429 . . . . . . . . . . . . . . . . . 18
133 vex 3034 . . . . . . . . . . . . . . . . . . 19
134133snss 4087 . . . . . . . . . . . . . . . . . 18
135132, 134sylibr 217 . . . . . . . . . . . . . . . . 17
136109, 135ffvelrnd 6038 . . . . . . . . . . . . . . . 16
1373snifpsrbag 18667 . . . . . . . . . . . . . . . 16
138107, 136, 137syl2anc 673 . . . . . . . . . . . . . . 15
13994, 106, 95, 96, 3, 107, 108, 128, 129, 138mplmonmul 18765 . . . . . . . . . . . . . 14
140 mplcoe2.m . . . . . . . . . . . . . . . 16 .g
141 mplcoe2.v . . . . . . . . . . . . . . . 16 mVar
14294, 3, 95, 96, 107, 50, 140, 141, 108, 135, 136mplcoe3 18767 . . . . . . . . . . . . . . 15
143142oveq2d 6324 . . . . . . . . . . . . . 14
144136adantr 472 . . . . . . . . . . . . . . . . . . . 20
145 ifcl 3914 . . . . . . . . . . . . . . . . . . . 20
146144, 111, 145sylancl 675 . . . . . . . . . . . . . . . . . . 19
147 eqidd 2472 . . . . . . . . . . . . . . . . . . 19
148 eqidd 2472 . . . . . . . . . . . . . . . . . . 19
149107, 113, 146, 147, 148offval2 6567 . . . . . . . . . . . . . . . . . 18
150110adantr 472 . . . . . . . . . . . . . . . . . . . . . . 23
151150nn0cnd 10951 . . . . . . . . . . . . . . . . . . . . . 22
152151addid2d 9852 . . . . . . . . . . . . . . . . . . . . 21
153 elsni 3985 . . . . . . . . . . . . . . . . . . . . . . . . 25
154153adantl 473 . . . . . . . . . . . . . . . . . . . . . . . 24
155 simprlr 781 . . . . . . . . . . . . . . . . . . . . . . . . 25
156155ad2antrr 740 . . . . . . . . . . . . . . . . . . . . . . . 24
157154, 156eqneltrd 2568 . . . . . . . . . . . . . . . . . . . . . . 23
158157iffalsed 3883 . . . . . . . . . . . . . . . . . . . . . 22
159154iftrued 3880 . . . . . . . . . . . . . . . . . . . . . . 23
160154fveq2d 5883 . . . . . . . . . . . . . . . . . . . . . . 23
161159, 160eqtr4d 2508 . . . . . . . . . . . . . . . . . . . . . 22
162158, 161oveq12d 6326 . . . . . . . . . . . . . . . . . . . . 21
163 simpr 468 . . . . . . . . . . . . . . . . . . . . . . 23
164130, 163sseldi 3416 . . . . . . . . . . . . . . . . . . . . . 22
165164iftrued 3880 . . . . . . . . . . . . . . . . . . . . 21
166152, 162, 1653eqtr4d 2515 . . . . . . . . . . . . . . . . . . . 20
167113adantr 472 . . . . . . . . . . . . . . . . . . . . . . 23
168167nn0cnd 10951 . . . . . . . . . . . . . . . . . . . . . 22
169168addid1d 9851 . . . . . . . . . . . . . . . . . . . . 21
170 simpr 468 . . . . . . . . . . . . . . . . . . . . . . . 24
171 elsn 3973 . . . . . . . . . . . . . . . . . . . . . . . 24
172170, 171sylnib 311 . . . . . . . . . . . . . . . . . . . . . . 23
173172iffalsed 3883 . . . . . . . . . . . . . . . . . . . . . 22
174173oveq2d 6324 . . . . . . . . . . . . . . . . . . . . 21
175 biorf 412 . . . . . . . . . . . . . . . . . . . . . . . 24
176 elun 3565 . . . . . . . . . . . . . . . . . . . . . . . . 25
177 orcom 394 . . . . . . . . . . . . . . . . . . . . . . . . 25
178176, 177bitri 257 . . . . . . . . . . . . . . . . . . . . . . . 24
179175, 178syl6rbbr 272 . . . . . . . . . . . . . . . . . . . . . . 23
180179adantl 473 . . . . . . . . . . . . . . . . . . . . . 22
181180ifbid 3894 . . . . . . . . . . . . . . . . . . . . 21
182169, 174, 1813eqtr4d 2515 . . . . . . . . . . . . . . . . . . . 20
183166, 182pm2.61dan 808 . . . . . . . . . . . . . . . . . . 19
184183mpteq2dva 4482 . . . . . . . . . . . . . . . . . 18
185149, 184eqtrd 2505 . . . . . . . . . . . . . . . . 17
186185eqeq2d 2481 . . . . . . . . . . . . . . . 16
187186ifbid 3894 . . . . . . . . . . . . . . 15
188187mpteq2dv 4483 . . . . . . . . . . . . . 14
189139, 143, 1883eqtr3rd 2514 . . . . . . . . . . . . 13
19050, 106mgpbas 17807 . . . . . . . . . . . . . 14
19150, 129mgpplusg 17805 . . . . . . . . . . . . . 14
192 eqid 2471 . . . . . . . . . . . . . 14 Cntz Cntz
193 eqid 2471 . . . . . . . . . . . . . 14
19494mplring 18753 . . . . . . . . . . . . . . . . 17
1952, 97, 194syl2anc 673 . . . . . . . . . . . . . . . 16
19650ringmgp 17864 . . . . . . . . . . . . . . . 16
197195, 196syl 17 . . . . . . . . . . . . . . 15
198197adantr 472 . . . . . . . . . . . . . 14
1991adantr 472 . . . . . . . . . . . . . . 15
200 mplcoe5.c . . . . . . . . . . . . . . . . 17
201 fveq2 5879 . . . . . . . . . . . . . . . . . . . 20
202201oveq2d 6324 . . . . . . . . . . . . . . . . . . 19
203201oveq1d 6323 . . . . . . . . . . . . . . . . . . 19
204202, 203eqeq12d 2486 . . . . . . . . . . . . . . . . . 18
205 fveq2 5879 . . . . . . . . . . . . . . . . . . . 20
206205oveq1d 6323 . . . . . . . . . . . . . . . . . . 19
207205oveq2d 6324 . . . . . . . . . . . . . . . . . . 19
208206, 207eqeq12d 2486 . . . . . . . . . . . . . . . . . 18
209204, 208cbvral2v 3013 . . . . . . . . . . . . . . . . 17
210200, 209sylib 201 . . . . . . . . . . . . . . . 16
211210adantr 472 . . . . . . . . . . . . . . 15
21294, 3, 95, 96, 107, 50, 140, 141, 108, 199, 211, 131mplcoe5lem 18768 . . . . . . . . . . . . . 14 Cntz
213101, 131syl5ss 3429 . . . . . . . . . . . . . . . 16
214213sselda 3418 . . . . . . . . . . . . . . 15
215197adantr 472 . . . . . . . . . . . . . . . . 17
2167ffvelrnda 6037 . . . . . . . . . . . . . . . . 17
2172adantr 472 . . . . . . . . . . . . . . . . . 18
21897adantr 472 . . . . . . . . . . . . . . . . . 18
219 simpr 468 . . . . . . . . . . . . . . . . . 18
22094, 141, 106, 217, 218, 219mvrcl 18750 . . . . . . . . . . . . . . . . 17
221190, 140mulgnn0cl 16852 . . . . . . . . . . . . . . . . 17
222215, 216, 220, 221syl3anc 1292 . . . . . . . . . . . . . . . 16
223222adantlr 729 . . . . . . . . . . . . . . 15
224214, 223syldan 478 . . . . . . . . . . . . . 14
22594, 141, 106, 107, 108, 135mvrcl 18750 . . . . . . . . . . . . . . 15
226190, 140mulgnn0cl 16852 . . . . . . . . . . . . . . 15
227198, 136, 225, 226syl3anc 1292 . . . . . . . . . . . . . 14
228 fveq2 5879 . . . . . . . . . . . . . . . 16
229 fveq2 5879 . . . . . . . . . . . . . . . 16
230228, 229oveq12d 6326 . . . . . . . . . . . . . . 15
231230adantl 473 . . . . . . . . . . . . . 14
232190, 191, 192, 193, 198, 118, 212, 224, 135, 155, 227, 231gsumzunsnd 17666 . . . . . . . . . . . . 13 g g
233189, 232eqeq12d 2486 . . . . . . . . . . . 12 g g
234105, 233syl5ibr 229 . . . . . . . . . . 11 g g
235234expr 626 . . . . . . . . . 10 g g
236235a2d 28 . . . . . . . . 9 g g
237104, 236syl5 32 . . . . . . . 8 g g
238237expcom 442 . . . . . . 7 g g
239238a2d 28 . . . . . 6 g g
24057, 69, 81, 93, 100, 239findcard2s 7830 . . . . 5 g
24134, 240mpcom 36 . . . 4 g
24233, 241mpd 15 . . 3 g
24333resmptd 5162 . . . 4
244243oveq2d 6324 . . 3 g g
245 eqid 2471 . . . . 5
246222, 245fmptd 6061 . . . 4
247 ssid 3437 . . . . . 6
248247a1i 11 . . . . 5
24994, 3, 95, 96, 2, 50, 140, 141, 97, 1, 200, 248mplcoe5lem 18768 . . . 4 Cntz
2507, 16, 2, 18suppssr 6965 . . . . . . 7
251250oveq1d 6323 . . . . . 6
252 eldifi 3544 . . . . . . . 8
253252, 220sylan2 482 . . . . . . 7
254190, 52, 140mulg0 16841 . . . . . . 7
255253, 254syl 17 . . . . . 6
256251, 255eqtrd 2505 . . . . 5
257256, 2suppss2 6968 . . . 4 supp
258 mptexg 6151 . . . . . 6
2592, 258syl 17 . . . . 5
260 funmpt 5625 . . . . . 6
261260a1i 11 . . . . 5
262 fvex 5889 . . . . . 6
263262a1i 11 . . . . 5
264 suppssfifsupp 7916 . . . . 5 supp finSupp
265259, 261, 263, 34, 257, 264syl32anc 1300 . . . 4 finSupp
266190, 52, 192, 197, 2, 246, 249, 257, 265gsumzres 17621 . . 3 g g
267242, 244, 2663eqtr2d 2511 . 2 g
26829, 267eqtrd 2505 1 g
 Colors of variables: wff setvar class Syntax hints:   wn 3   wi 4   wb 189   wo 375   wa 376   wceq 1452   wcel 1904  wral 2756  crab 2760  cvv 3031   cdif 3387   cun 3388   wss 3390  c0 3722  cif 3872  csn 3959   class class class wbr 4395   cmpt 4454   cxp 4837  ccnv 4838   cdm 4839   cres 4841  cima 4842   wfun 5583  wf 5585  cfv 5589  (class class class)co 6308   cof 6548   supp csupp 6933   cmap 7490  cfn 7587   finSupp cfsupp 7901  cc0 9557   caddc 9560  cn 10631  cn0 10893  cbs 15199   cplusg 15268  cmulr 15269  c0g 15416   g cgsu 15417  cmnd 16613  .gcmg 16750  Cntzccntz 17047  mulGrpcmgp 17801  cur 17813  crg 17858   mVar cmvr 18653   mPoly cmpl 18654 This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1677  ax-4 1690  ax-5 1766  ax-6 1813  ax-7 1859  ax-8 1906  ax-9 1913  ax-10 1932  ax-11 1937  ax-12 1950  ax-13 2104  ax-ext 2451  ax-rep 4508  ax-sep 4518  ax-nul 4527  ax-pow 4579  ax-pr 4639  ax-un 6602  ax-inf2 8164  ax-cnex 9613  ax-resscn 9614  ax-1cn 9615  ax-icn 9616  ax-addcl 9617  ax-addrcl 9618  ax-mulcl 9619  ax-mulrcl 9620  ax-mulcom 9621  ax-addass 9622  ax-mulass 9623  ax-distr 9624  ax-i2m1 9625  ax-1ne0 9626  ax-1rid 9627  ax-rnegex 9628  ax-rrecex 9629  ax-cnre 9630  ax-pre-lttri 9631  ax-pre-lttrn 9632  ax-pre-ltadd 9633  ax-pre-mulgt0 9634 This theorem depends on definitions:  df-bi 190  df-or 377  df-an 378  df-3or 1008  df-3an 1009  df-tru 1455  df-ex 1672  df-nf 1676  df-sb 1806  df-eu 2323  df-mo 2324  df-clab 2458  df-cleq 2464  df-clel 2467  df-nfc 2601  df-ne 2643  df-nel 2644  df-ral 2761  df-rex 2762  df-reu 2763  df-rmo 2764  df-rab 2765  df-v 3033  df-sbc 3256  df-csb 3350  df-dif 3393  df-un 3395  df-in 3397  df-ss 3404  df-pss 3406  df-nul 3723  df-if 3873  df-pw 3944  df-sn 3960  df-pr 3962  df-tp 3964  df-op 3966  df-uni 4191  df-int 4227  df-iun 4271  df-iin 4272  df-br 4396  df-opab 4455  df-mpt 4456  df-tr 4491  df-eprel 4750  df-id 4754  df-po 4760  df-so 4761  df-fr 4798  df-se 4799  df-we 4800  df-xp 4845  df-rel 4846  df-cnv 4847  df-co 4848  df-dm 4849  df-rn 4850  df-res 4851  df-ima 4852  df-pred 5387  df-ord 5433  df-on 5434  df-lim 5435  df-suc 5436  df-iota 5553  df-fun 5591  df-fn 5592  df-f 5593  df-f1 5594  df-fo 5595  df-f1o 5596  df-fv 5597  df-isom 5598  df-riota 6270  df-ov 6311  df-oprab 6312  df-mpt2 6313  df-of 6550  df-ofr 6551  df-om 6712  df-1st 6812  df-2nd 6813  df-supp 6934  df-wrecs 7046  df-recs 7108  df-rdg 7146  df-1o 7200  df-2o 7201  df-oadd 7204  df-er 7381  df-map 7492  df-pm 7493  df-ixp 7541  df-en 7588  df-dom 7589  df-sdom 7590  df-fin 7591  df-fsupp 7902  df-oi 8043  df-card 8391  df-pnf 9695  df-mnf 9696  df-xr 9697  df-ltxr 9698  df-le 9699  df-sub 9882  df-neg 9883  df-nn 10632  df-2 10690  df-3 10691  df-4 10692  df-5 10693  df-6 10694  df-7 10695  df-8 10696  df-9 10697  df-n0 10894  df-z 10962  df-uz 11183  df-fz 11811  df-fzo 11943  df-seq 12252  df-hash 12554  df-struct 15201  df-ndx 15202  df-slot 15203  df-base 15204  df-sets 15205  df-ress 15206  df-plusg 15281  df-mulr 15282  df-sca 15284  df-vsca 15285  df-tset 15287  df-0g 15418  df-gsum 15419  df-mre 15570  df-mrc 15571  df-acs 15573  df-mgm 16566  df-sgrp 16605  df-mnd 16615  df-mhm 16660  df-submnd 16661  df-grp 16751  df-minusg 16752  df-mulg 16754  df-subg 16892  df-ghm 16959  df-cntz 17049  df-cmn 17510  df-abl 17511  df-mgp 17802  df-ur 17814  df-srg 17818  df-ring 17860  df-subrg 18084  df-psr 18657  df-mvr 18658  df-mpl 18659 This theorem is referenced by:  mplcoe2  18770  ply1coe  18966
 Copyright terms: Public domain W3C validator