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

Theorem dchrvmasumlema 27790
Description: Lemma for dchrvmasum 27815 and dchrvmasumif 27793. Apply dchrisum 27782 for the function log(𝑦) / 𝑦, which is decreasing above e (or above 3, the nearest integer bound). (Contributed by Mario Carneiro, 5-May-2016.)
Hypotheses
Ref Expression
rpvmasum.z 𝑍 = (ℤ/nℤ‘𝑁)
rpvmasum.l 𝐿 = (ℤRHom‘𝑍)
rpvmasum.a (𝜑 → 𝑁 ∈ ℕ)
rpvmasum.g 𝐺 = (DChr‘𝑁)
rpvmasum.d 𝐷 = (Base‘𝐺)
rpvmasum.1 1 = (0g‘𝐺)
dchrisum.b (𝜑 → 𝑋 ∈ 𝐷)
dchrisum.n1 (𝜑 → 𝑋 ≠ 1 )
dchrvmasumlema.f 𝐹 = (𝑎 ∈ ℕ ↦ ((𝑋‘(𝐿‘𝑎)) · ((log‘𝑎) / 𝑎)))
Assertion
Ref Expression
dchrvmasumlema (𝜑 → ∃𝑡∃𝑐 ∈ (0[,)+∞)(seq1( + , 𝐹) ⇝ 𝑡 ∧ ∀𝑦 ∈ (3[,)+∞)(abs‘((seq1( + , 𝐹)‘(⌊‘𝑦)) − 𝑡)) ≤ (𝑐 · ((log‘𝑦) / 𝑦))))
Distinct variable groups:   𝑡,𝑐,𝑦, 1   𝐹,𝑐,𝑡,𝑦   𝑎,𝑐,𝑡,𝑦   𝑁,𝑐,𝑡,𝑦   𝜑,𝑐,𝑡   𝑦,𝑍   𝐷,𝑐,𝑡,𝑦   𝐿,𝑎,𝑐,𝑡,𝑦   𝑋,𝑎,𝑐,𝑡,𝑦
Allowed substitution hints:   𝜑(𝑦, 𝑎)   𝐷(𝑎)   1 (𝑎)   𝐹(𝑎)   𝐺(𝑦, 𝑡, 𝑎, 𝑐)   𝑁(𝑎)   𝑍(𝑡, 𝑎, 𝑐)

Proof of Theorem dchrvmasumlema
Dummy variables 𝑛 𝑥 are mutually distinct and distinct from all other variables.
StepHypRef Expression
1 rpvmasum.z . . 3 𝑍 = (ℤ/nℤ‘𝑁)
2 rpvmasum.l . . 3 𝐿 = (ℤRHom‘𝑍)
3 rpvmasum.a . . 3 (𝜑 → 𝑁 ∈ ℕ)
4 rpvmasum.g . . 3 𝐺 = (DChr‘𝑁)
5 rpvmasum.d . . 3 𝐷 = (Base‘𝐺)
6 rpvmasum.1 . . 3 1 = (0g‘𝐺)
7 dchrisum.b . . 3 (𝜑 → 𝑋 ∈ 𝐷)
8 dchrisum.n1 . . 3 (𝜑 → 𝑋 ≠ 1 )
9 fveq2 6873 . . . 4 (𝑛 = 𝑥 → (log‘𝑛) = (log‘𝑥))
10 id 23 . . . 4 (𝑛 = 𝑥 → 𝑛 = 𝑥)
119, 10oveq12d 7426 . . 3 (𝑛 = 𝑥 → ((log‘𝑛) / 𝑛) = ((log‘𝑥) / 𝑥))
12 3nn 12391 . . . 4 3 ∈ ℕ
1312a1i 11 . . 3 (𝜑 → 3 ∈ ℕ)
14 relogcl 26866 . . . . 5 (𝑛 ∈ ℝ+ → (log‘𝑛) ∈ ℝ)
15 rerpdivcl 13121 . . . . 5 (((log‘𝑛) ∈ ℝ ∧ 𝑛 ∈ ℝ+) → ((log‘𝑛) / 𝑛) ∈ ℝ)
1614, 15mpancom 701 . . . 4 (𝑛 ∈ ℝ+ → ((log‘𝑛) / 𝑛) ∈ ℝ)
1716adantl 487 . . 3 ((𝜑 ∧ 𝑛 ∈ ℝ+) → ((log‘𝑛) / 𝑛) ∈ ℝ)
18 simp3r 1221 . . . 4 ((𝜑 ∧ (𝑛 ∈ ℝ+ ∧ 𝑥 ∈ ℝ+) ∧ (3 ≤ 𝑛 ∧ 𝑛 ≤ 𝑥)) → 𝑛 ≤ 𝑥)
19 simp2l 1218 . . . . . 6 ((𝜑 ∧ (𝑛 ∈ ℝ+ ∧ 𝑥 ∈ ℝ+) ∧ (3 ≤ 𝑛 ∧ 𝑛 ≤ 𝑥)) → 𝑛 ∈ ℝ+)
2019rpred 13133 . . . . 5 ((𝜑 ∧ (𝑛 ∈ ℝ+ ∧ 𝑥 ∈ ℝ+) ∧ (3 ≤ 𝑛 ∧ 𝑛 ≤ 𝑥)) → 𝑛 ∈ ℝ)
21 ere 16222 . . . . . . 7 e ∈ ℝ
2221a1i 11 . . . . . 6 ((𝜑 ∧ (𝑛 ∈ ℝ+ ∧ 𝑥 ∈ ℝ+) ∧ (3 ≤ 𝑛 ∧ 𝑛 ≤ 𝑥)) → e ∈ ℝ)
23 3re 12392 . . . . . . 7 3 ∈ ℝ
2423a1i 11 . . . . . 6 ((𝜑 ∧ (𝑛 ∈ ℝ+ ∧ 𝑥 ∈ ℝ+) ∧ (3 ≤ 𝑛 ∧ 𝑛 ≤ 𝑥)) → 3 ∈ ℝ)
25 egt2lt3 16341 . . . . . . . . 9 (2 < e ∧ e < 3)
2625simpri 491 . . . . . . . 8 e < 3
2721, 23, 26ltleii 11404 . . . . . . 7 e ≤ 3
2827a1i 11 . . . . . 6 ((𝜑 ∧ (𝑛 ∈ ℝ+ ∧ 𝑥 ∈ ℝ+) ∧ (3 ≤ 𝑛 ∧ 𝑛 ≤ 𝑥)) → e ≤ 3)
29 simp3l 1220 . . . . . 6 ((𝜑 ∧ (𝑛 ∈ ℝ+ ∧ 𝑥 ∈ ℝ+) ∧ (3 ≤ 𝑛 ∧ 𝑛 ≤ 𝑥)) → 3 ≤ 𝑛)
3022, 24, 20, 28, 29letrd 11438 . . . . 5 ((𝜑 ∧ (𝑛 ∈ ℝ+ ∧ 𝑥 ∈ ℝ+) ∧ (3 ≤ 𝑛 ∧ 𝑛 ≤ 𝑥)) → e ≤ 𝑛)
31 simp2r 1219 . . . . . 6 ((𝜑 ∧ (𝑛 ∈ ℝ+ ∧ 𝑥 ∈ ℝ+) ∧ (3 ≤ 𝑛 ∧ 𝑛 ≤ 𝑥)) → 𝑥 ∈ ℝ+)
3231rpred 13133 . . . . 5 ((𝜑 ∧ (𝑛 ∈ ℝ+ ∧ 𝑥 ∈ ℝ+) ∧ (3 ≤ 𝑛 ∧ 𝑛 ≤ 𝑥)) → 𝑥 ∈ ℝ)
3322, 20, 32, 30, 18letrd 11438 . . . . 5 ((𝜑 ∧ (𝑛 ∈ ℝ+ ∧ 𝑥 ∈ ℝ+) ∧ (3 ≤ 𝑛 ∧ 𝑛 ≤ 𝑥)) → e ≤ 𝑥)
34 logdivle 26913 . . . . 5 (((𝑛 ∈ ℝ ∧ e ≤ 𝑛) ∧ (𝑥 ∈ ℝ ∧ e ≤ 𝑥)) → (𝑛 ≤ 𝑥 ↔ ((log‘𝑥) / 𝑥) ≤ ((log‘𝑛) / 𝑛)))
3520, 30, 32, 33, 34syl22anc 852 . . . 4 ((𝜑 ∧ (𝑛 ∈ ℝ+ ∧ 𝑥 ∈ ℝ+) ∧ (3 ≤ 𝑛 ∧ 𝑛 ≤ 𝑥)) → (𝑛 ≤ 𝑥 ↔ ((log‘𝑥) / 𝑥) ≤ ((log‘𝑛) / 𝑛)))
3618, 35mpbid 235 . . 3 ((𝜑 ∧ (𝑛 ∈ ℝ+ ∧ 𝑥 ∈ ℝ+) ∧ (3 ≤ 𝑛 ∧ 𝑛 ≤ 𝑥)) → ((log‘𝑥) / 𝑥) ≤ ((log‘𝑛) / 𝑛))
37 rpcn 13100 . . . . . . 7 (𝑛 ∈ ℝ+ → 𝑛 ∈ ℂ)
3837cxp1d 26997 . . . . . 6 (𝑛 ∈ ℝ+ → (𝑛↑𝑐1) = 𝑛)
3938oveq2d 7424 . . . . 5 (𝑛 ∈ ℝ+ → ((log‘𝑛) / (𝑛↑𝑐1)) = ((log‘𝑛) / 𝑛))
4039mpteq2ia 5199 . . . 4 (𝑛 ∈ ℝ+ ↦ ((log‘𝑛) / (𝑛↑𝑐1))) = (𝑛 ∈ ℝ+ ↦ ((log‘𝑛) / 𝑛))
41 1rp 13093 . . . . 5 1 ∈ ℝ+
42 cxploglim 27268 . . . . 5 (1 ∈ ℝ+ → (𝑛 ∈ ℝ+ ↦ ((log‘𝑛) / (𝑛↑𝑐1))) ⇝𝑟 0)
4341, 42mp1i 14 . . . 4 (𝜑 → (𝑛 ∈ ℝ+ ↦ ((log‘𝑛) / (𝑛↑𝑐1))) ⇝𝑟 0)
4440, 43eqbrtrrid 5140 . . 3 (𝜑 → (𝑛 ∈ ℝ+ ↦ ((log‘𝑛) / 𝑛)) ⇝𝑟 0)
45 dchrvmasumlema.f . . . 4 𝐹 = (𝑎 ∈ ℕ ↦ ((𝑋‘(𝐿‘𝑎)) · ((log‘𝑎) / 𝑎)))
46 2fveq3 6878 . . . . . 6 (𝑎 = 𝑛 → (𝑋‘(𝐿‘𝑎)) = (𝑋‘(𝐿‘𝑛)))
47 fveq2 6873 . . . . . . 7 (𝑎 = 𝑛 → (log‘𝑎) = (log‘𝑛))
48 id 23 . . . . . . 7 (𝑎 = 𝑛 → 𝑎 = 𝑛)
4947, 48oveq12d 7426 . . . . . 6 (𝑎 = 𝑛 → ((log‘𝑎) / 𝑎) = ((log‘𝑛) / 𝑛))
5046, 49oveq12d 7426 . . . . 5 (𝑎 = 𝑛 → ((𝑋‘(𝐿‘𝑎)) · ((log‘𝑎) / 𝑎)) = ((𝑋‘(𝐿‘𝑛)) · ((log‘𝑛) / 𝑛)))
5150cbvmptv 5208 . . . 4 (𝑎 ∈ ℕ ↦ ((𝑋‘(𝐿‘𝑎)) · ((log‘𝑎) / 𝑎))) = (𝑛 ∈ ℕ ↦ ((𝑋‘(𝐿‘𝑛)) · ((log‘𝑛) / 𝑛)))
5245, 51eqtri 2783 . . 3 𝐹 = (𝑛 ∈ ℕ ↦ ((𝑋‘(𝐿‘𝑛)) · ((log‘𝑛) / 𝑛)))
531, 2, 3, 4, 5, 6, 7, 8, 11, 13, 17, 36, 44, 52dchrisum 27782 . 2 (𝜑 → ∃𝑡∃𝑐 ∈ (0[,)+∞)(seq1( + , 𝐹) ⇝ 𝑡 ∧ ∀𝑥 ∈ (3[,)+∞)(abs‘((seq1( + , 𝐹)‘(⌊‘𝑥)) − 𝑡)) ≤ (𝑐 · ((log‘𝑥) / 𝑥))))
54 2fveq3 6878 . . . . . . . 8 (𝑥 = 𝑦 → (seq1( + , 𝐹)‘(⌊‘𝑥)) = (seq1( + , 𝐹)‘(⌊‘𝑦)))
5554fvoveq1d 7430 . . . . . . 7 (𝑥 = 𝑦 → (abs‘((seq1( + , 𝐹)‘(⌊‘𝑥)) − 𝑡)) = (abs‘((seq1( + , 𝐹)‘(⌊‘𝑦)) − 𝑡)))
56 fveq2 6873 . . . . . . . . 9 (𝑥 = 𝑦 → (log‘𝑥) = (log‘𝑦))
57 id 23 . . . . . . . . 9 (𝑥 = 𝑦 → 𝑥 = 𝑦)
5856, 57oveq12d 7426 . . . . . . . 8 (𝑥 = 𝑦 → ((log‘𝑥) / 𝑥) = ((log‘𝑦) / 𝑦))
5958oveq2d 7424 . . . . . . 7 (𝑥 = 𝑦 → (𝑐 · ((log‘𝑥) / 𝑥)) = (𝑐 · ((log‘𝑦) / 𝑦)))
6055, 59breq12d 5115 . . . . . 6 (𝑥 = 𝑦 → ((abs‘((seq1( + , 𝐹)‘(⌊‘𝑥)) − 𝑡)) ≤ (𝑐 · ((log‘𝑥) / 𝑥)) ↔ (abs‘((seq1( + , 𝐹)‘(⌊‘𝑦)) − 𝑡)) ≤ (𝑐 · ((log‘𝑦) / 𝑦))))
6160cbvralvw 3240 . . . . 5 (∀𝑥 ∈ (3[,)+∞)(abs‘((seq1( + , 𝐹)‘(⌊‘𝑥)) − 𝑡)) ≤ (𝑐 · ((log‘𝑥) / 𝑥)) ↔ ∀𝑦 ∈ (3[,)+∞)(abs‘((seq1( + , 𝐹)‘(⌊‘𝑦)) − 𝑡)) ≤ (𝑐 · ((log‘𝑦) / 𝑦)))
6261anbi2i 635 . . . 4 ((seq1( + , 𝐹) ⇝ 𝑡 ∧ ∀𝑥 ∈ (3[,)+∞)(abs‘((seq1( + , 𝐹)‘(⌊‘𝑥)) − 𝑡)) ≤ (𝑐 · ((log‘𝑥) / 𝑥))) ↔ (seq1( + , 𝐹) ⇝ 𝑡 ∧ ∀𝑦 ∈ (3[,)+∞)(abs‘((seq1( + , 𝐹)‘(⌊‘𝑦)) − 𝑡)) ≤ (𝑐 · ((log‘𝑦) / 𝑦))))
6362rexbii 3109 . . 3 (∃𝑐 ∈ (0[,)+∞)(seq1( + , 𝐹) ⇝ 𝑡 ∧ ∀𝑥 ∈ (3[,)+∞)(abs‘((seq1( + , 𝐹)‘(⌊‘𝑥)) − 𝑡)) ≤ (𝑐 · ((log‘𝑥) / 𝑥))) ↔ ∃𝑐 ∈ (0[,)+∞)(seq1( + , 𝐹) ⇝ 𝑡 ∧ ∀𝑦 ∈ (3[,)+∞)(abs‘((seq1( + , 𝐹)‘(⌊‘𝑦)) − 𝑡)) ≤ (𝑐 · ((log‘𝑦) / 𝑦))))
6463exbii 1881 . 2 (∃𝑡∃𝑐 ∈ (0[,)+∞)(seq1( + , 𝐹) ⇝ 𝑡 ∧ ∀𝑥 ∈ (3[,)+∞)(abs‘((seq1( + , 𝐹)‘(⌊‘𝑥)) − 𝑡)) ≤ (𝑐 · ((log‘𝑥) / 𝑥))) ↔ ∃𝑡∃𝑐 ∈ (0[,)+∞)(seq1( + , 𝐹) ⇝ 𝑡 ∧ ∀𝑦 ∈ (3[,)+∞)(abs‘((seq1( + , 𝐹)‘(⌊‘𝑦)) − 𝑡)) ≤ (𝑐 · ((log‘𝑦) / 𝑦))))
6553, 64sylib 221 1 (𝜑 → ∃𝑡∃𝑐 ∈ (0[,)+∞)(seq1( + , 𝐹) ⇝ 𝑡 ∧ ∀𝑦 ∈ (3[,)+∞)(abs‘((seq1( + , 𝐹)‘(⌊‘𝑦)) − 𝑡)) ≤ (𝑐 · ((log‘𝑦) / 𝑦))))
Colors of variables:    wff setvar class
This proof depends on syntax axioms:   → wi 4   ↔ wb 209   ∧ wa 401   ∧ w3a 1103   = wceq 1570  ∃wex 1812   ∈ wcel 2145   ≠ wne 2955  ∀wral 3076  ∃wrex 3086   class class class wbr 5102   ↦ cmpt 5185  ‘cfv 6527  (class class class)co 7408  ℝcr 11170  0cc0 11171  1c1 11172   + caddc 11174   · cmul 11176  +∞cpnf 11311   < clt 11314   ≤ cle 11315   − cmin 11512   / cdiv 11942  ℕcn 12304  2c2 12366  3c3 12367  ℝ+crp 13089  [,)cico 13447  ⌊cfl 13898  seqcseq 14112  abscabs 15368   ⇝ cli 15618   ⇝𝑟 crli 15619  eceu 16195  Basecbs 17348  0gc0g 17571  ℤRHomczrh 21766  ℤ/nℤczn 21769  logclog 26845  ↑𝑐ccxp 26846  DChrcdchr 27522
This proof depends on axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1828  ax-4 1842  ax-5 1943  ax-6 2000  ax-7 2041  ax-8 2147  ax-9 2155  ax-10 2178  ax-11 2194  ax-12 2213  ax-ext 2732  ax-rep 5231  ax-sep 5248  ax-nul 5259  ax-pow 5326  ax-pr 5390  ax-un 7734  ax-inf2 9620  ax-cnex 11227  ax-resscn 11228  ax-1cn 11229  ax-icn 11230  ax-addcl 11231  ax-addrcl 11232  ax-mulcl 11233  ax-mulrcl 11234  ax-mulcom 11235  ax-addass 11236  ax-mulass 11237  ax-distr 11238  ax-i2m1 11239  ax-1ne0 11240  ax-1rid 11241  ax-rnegex 11242  ax-rrecex 11243  ax-cnre 11244  ax-pre-lttri 11245  ax-pre-lttrn 11246  ax-pre-ltadd 11247  ax-pre-mulgt0 11248  ax-pre-sup 11249  ax-addf 11250  ax-mulf 11251
This proof depends on definitions:  df-bi 210  df-an 402  df-or 862  df-3or 1104  df-3an 1105  df-tru 1573  df-fal 1583  df-ex 1813  df-nf 1817  df-sb 2100  df-mo 2564  df-eu 2594  df-clab 2739  df-cleq 2752  df-clel 2835  df-nfc 2909  df-ne 2956  df-nel 3062  df-ral 3077  df-rex 3087  df-rmo 3365  df-reu 3366  df-rab 3413  df-v 3452  df-sbc 3739  df-csb 3847  df-dif 3901  df-un 3903  df-in 3905  df-ss 3915  df-pss 3918  df-nul 4279  df-if 4482  df-pw 4558  df-sn 4584  df-pr 4586  df-tp 4588  df-op 4590  df-uni 4867  df-int 4907  df-iun 4952  df-iin 4953  df-br 5103  df-opab 5167  df-mpt 5186  df-tr 5212  df-id 5542  df-eprel 5547  df-po 5555  df-so 5556  df-fr 5600  df-se 5601  df-we 5602  df-xp 5653  df-rel 5654  df-cnv 5655  df-co 5656  df-dm 5657  df-rn 5658  df-res 5659  df-ima 5660  df-pred 6293  df-ord 6354  df-on 6355  df-lim 6356  df-suc 6357  df-iota 6483  df-fun 6529  df-fn 6530  df-f 6531  df-f1 6532  df-fo 6533  df-f1o 6534  df-fv 6535  df-isom 6536  df-riota 7365  df-ov 7411  df-oprab 7412  df-mpo 7413  df-of 7676  df-om 7861  df-1st 7984  df-2nd 7985  df-supp 8156  df-tpos 8221  df-frecs 8277  df-wrecs 8308  df-recs 8357  df-rdg 8396  df-1o 8454  df-2o 8455  df-oadd 8458  df-er 8695  df-ec 8697  df-qs 8701  df-map 8827  df-pm 8828  df-ixp 8904  df-en 8952  df-dom 8953  df-sdom 8954  df-fin 8955  df-fsupp 9332  df-fi 9381  df-sup 9412  df-inf 9413  df-oi 9482  df-card 9991  df-pnf 11316  df-mnf 11317  df-xr 11318  df-ltxr 11319  df-le 11320  df-sub 11514  df-neg 11515  df-div 11943  df-nn 12305  df-2 12374  df-3 12375  df-4 12376  df-5 12377  df-6 12378  df-7 12379  df-8 12380  df-9 12381  df-n0 12576  df-xnn0 12649  df-z 12663  df-dec 12784  df-uz 12935  df-q 13045  df-rp 13090  df-xneg 13210  df-xadd 13211  df-xmul 13212  df-ioo 13449  df-ioc 13450  df-ico 13451  df-icc 13452  df-fz 13609  df-fzo 13757  df-fl 13900  df-mod 13978  df-seq 14113  df-exp 14173  df-fac 14385  df-bc 14414  df-hash 14442  df-shft 15187  df-cj 15233  df-re 15234  df-im 15235  df-sqrt 15369  df-abs 15370  df-limsup 15605  df-clim 15622  df-rlim 15623  df-sum 15821  df-ef 16200  df-e 16201  df-sin 16202  df-cos 16203  df-pi 16205  df-dvds 16390  df-gcd 16632  df-phi 16904  df-struct 17286  df-sets 17303  df-slot 17321  df-ndx 17333  df-base 17349  df-ress 17370  df-plusg 17402  df-mulr 17403  df-starv 17404  df-sca 17405  df-vsca 17406  df-ip 17407  df-tset 17408  df-ple 17409  df-ds 17411  df-unif 17412  df-hom 17413  df-cco 17414  df-rest 17554  df-topn 17555  df-0g 17573  df-gsum 17574  df-topgen 17575  df-pt 17576  df-prds 17579  df-xrs 17635  df-qtop 17640  df-imas 17641  df-qus 17642  df-xps 17643  df-mre 17717  df-mrc 17718  df-acs 17720  df-mgm 18777  df-sgrp 18869  df-mnd 18885  df-mhm 18939  df-submnd 18940  df-grp 19108  df-minusg 19109  df-sbg 19110  df-mulg 19239  df-subg 19294  df-nsg 19295  df-eqg 19296  df-ghm 19389  df-cntz 19492  df-cmn 19957  df-abl 19958  df-mgp 20322  df-rng 20336  df-ur 20369  df-ring 20422  df-cring 20423  df-oppr 20528  df-dvdsr 20548  df-unit 20549  df-invr 20579  df-rhm 20663  df-subrng 20759  df-subrg 20783  df-lmod 21098  df-lss 21168  df-lsp 21208  df-sra 21409  df-rgmod 21410  df-lidl 21447  df-rsp 21448  df-2idl 21504  df-psmet 21631  df-xmet 21632  df-met 21633  df-bl 21634  df-mopn 21635  df-fbas 21636  df-fg 21637  df-cnfld 21640  df-zring 21714  df-zrh 21770  df-zn 21773  df-top 23173  df-topon 23190  df-topsp 23212  df-bases 23225  df-cld 23298  df-ntr 23299  df-cls 23300  df-nei 23377  df-lp 23415  df-perf 23416  df-cn 23506  df-cnp 23507  df-haus 23594  df-tx 23842  df-hmeo 24035  df-fil 24126  df-fm 24218  df-flim 24219  df-flf 24220  df-xms 24600  df-ms 24601  df-tms 24602  df-cncf 25160  df-limc 26147  df-dv 26148  df-log 26847  df-cxp 26848  df-dchr 27523
This theorem is used by:  dchrvmasumif  27793
  Copyright terms: Public domain W3C validator