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

Theorem zrrnghm 20815
Description: The constant mapping to zero is a non-unital ring homomorphism from the zero ring to any non-unital ring. (Contributed by AV, 17-Apr-2020.)
Hypotheses
Ref Expression
zrrnghm.b 𝐵 = (Base‘𝑇)
zrrnghm.0 0 = (0g‘𝑆)
zrrnghm.h 𝐻 = (𝑥 ∈ 𝐵 ↦ 0 )
Assertion
Ref Expression
zrrnghm ((𝑆 ∈ Rng ∧ 𝑇 ∈ (Ring ∖ NzRing)) → 𝐻 ∈ (𝑇 RngHom 𝑆))
Distinct variable groups:   𝑥,𝐵   𝑥,𝑆   𝑥,𝑇   𝑥, 0
Allowed substitution hint:   𝐻(𝑥)

Proof of Theorem zrrnghm
Dummy variables 𝑎 𝑐 are mutually distinct and distinct from all other variables.
StepHypRef Expression
1 eldifi 4070 . . . . 5 (𝑇 ∈ (Ring ∖ NzRing) → 𝑇 ∈ Ring)
2 ringrng 20541 . . . . 5 (𝑇 ∈ Ring → 𝑇 ∈ Rng)
31, 2syl 18 . . . 4 (𝑇 ∈ (Ring ∖ NzRing) → 𝑇 ∈ Rng)
43anim1i 627 . . 3 ((𝑇 ∈ (Ring ∖ NzRing) ∧ 𝑆 ∈ Rng) → (𝑇 ∈ Rng ∧ 𝑆 ∈ Rng))
54ancoms 464 . 2 ((𝑆 ∈ Rng ∧ 𝑇 ∈ (Ring ∖ NzRing)) → (𝑇 ∈ Rng ∧ 𝑆 ∈ Rng))
6 rngabl 20404 . . . . . 6 (𝑆 ∈ Rng → 𝑆 ∈ Abel)
7 ablgrp 20026 . . . . . 6 (𝑆 ∈ Abel → 𝑆 ∈ Grp)
86, 7syl 18 . . . . 5 (𝑆 ∈ Rng → 𝑆 ∈ Grp)
98adantr 486 . . . 4 ((𝑆 ∈ Rng ∧ 𝑇 ∈ (Ring ∖ NzRing)) → 𝑆 ∈ Grp)
10 ringgrp 20491 . . . . . 6 (𝑇 ∈ Ring → 𝑇 ∈ Grp)
111, 10syl 18 . . . . 5 (𝑇 ∈ (Ring ∖ NzRing) → 𝑇 ∈ Grp)
1211adantl 487 . . . 4 ((𝑆 ∈ Rng ∧ 𝑇 ∈ (Ring ∖ NzRing)) → 𝑇 ∈ Grp)
13 zrrnghm.b . . . . . 6 𝐵 = (Base‘𝑇)
14 eqid 2763 . . . . . 6 (0g‘𝑇) = (0g‘𝑇)
1513, 140ringbas 20806 . . . . 5 (𝑇 ∈ (Ring ∖ NzRing) → 𝐵 = {(0g‘𝑇)})
1615adantl 487 . . . 4 ((𝑆 ∈ Rng ∧ 𝑇 ∈ (Ring ∖ NzRing)) → 𝐵 = {(0g‘𝑇)})
17 zrrnghm.0 . . . . 5 0 = (0g‘𝑆)
18 zrrnghm.h . . . . 5 𝐻 = (𝑥 ∈ 𝐵 ↦ 0 )
1913, 17, 18, 14c0snghm 20721 . . . 4 ((𝑆 ∈ Grp ∧ 𝑇 ∈ Grp ∧ 𝐵 = {(0g‘𝑇)}) → 𝐻 ∈ (𝑇 GrpHom 𝑆))
209, 12, 16, 19syl3anc 1399 . . 3 ((𝑆 ∈ Rng ∧ 𝑇 ∈ (Ring ∖ NzRing)) → 𝐻 ∈ (𝑇 GrpHom 𝑆))
2118a1i 11 . . . . . . . 8 (((𝑆 ∈ Rng ∧ 𝑇 ∈ (Ring ∖ NzRing)) ∧ 𝐵 = {(0g‘𝑇)}) → 𝐻 = (𝑥 ∈ 𝐵 ↦ 0 ))
22 eqidd 2764 . . . . . . . 8 ((((𝑆 ∈ Rng ∧ 𝑇 ∈ (Ring ∖ NzRing)) ∧ 𝐵 = {(0g‘𝑇)}) ∧ 𝑥 = (0g‘𝑇)) → 0 = 0 )
2313, 14ring0cl 20523 . . . . . . . . . 10 (𝑇 ∈ Ring → (0g‘𝑇) ∈ 𝐵)
241, 23syl 18 . . . . . . . . 9 (𝑇 ∈ (Ring ∖ NzRing) → (0g‘𝑇) ∈ 𝐵)
2524ad2antlr 740 . . . . . . . 8 (((𝑆 ∈ Rng ∧ 𝑇 ∈ (Ring ∖ NzRing)) ∧ 𝐵 = {(0g‘𝑇)}) → (0g‘𝑇) ∈ 𝐵)
2617fvexi 6919 . . . . . . . . 9 0 ∈ V
2726a1i 11 . . . . . . . 8 (((𝑆 ∈ Rng ∧ 𝑇 ∈ (Ring ∖ NzRing)) ∧ 𝐵 = {(0g‘𝑇)}) → 0 ∈ V)
2821, 22, 25, 27fvmptd 7021 . . . . . . 7 (((𝑆 ∈ Rng ∧ 𝑇 ∈ (Ring ∖ NzRing)) ∧ 𝐵 = {(0g‘𝑇)}) → (𝐻‘(0g‘𝑇)) = 0 )
29 eqid 2763 . . . . . . . . . . . . . 14 (Base‘𝑆) = (Base‘𝑆)
3029, 17grpidcl 19202 . . . . . . . . . . . . 13 (𝑆 ∈ Grp → 0 ∈ (Base‘𝑆))
318, 30syl 18 . . . . . . . . . . . 12 (𝑆 ∈ Rng → 0 ∈ (Base‘𝑆))
32 eqid 2763 . . . . . . . . . . . . 13 (.r‘𝑆) = (.r‘𝑆)
3329, 32, 17rnglz 20414 . . . . . . . . . . . 12 ((𝑆 ∈ Rng ∧ 0 ∈ (Base‘𝑆)) → ( 0 (.r‘𝑆) 0 ) = 0 )
3431, 33mpdan 700 . . . . . . . . . . 11 (𝑆 ∈ Rng → ( 0 (.r‘𝑆) 0 ) = 0 )
3534adantr 486 . . . . . . . . . 10 ((𝑆 ∈ Rng ∧ 𝑇 ∈ (Ring ∖ NzRing)) → ( 0 (.r‘𝑆) 0 ) = 0 )
3635adantr 486 . . . . . . . . 9 (((𝑆 ∈ Rng ∧ 𝑇 ∈ (Ring ∖ NzRing)) ∧ 𝐵 = {(0g‘𝑇)}) → ( 0 (.r‘𝑆) 0 ) = 0 )
3736adantr 486 . . . . . . . 8 ((((𝑆 ∈ Rng ∧ 𝑇 ∈ (Ring ∖ NzRing)) ∧ 𝐵 = {(0g‘𝑇)}) ∧ (𝐻‘(0g‘𝑇)) = 0 ) → ( 0 (.r‘𝑆) 0 ) = 0 )
38 simpr 490 . . . . . . . . 9 ((((𝑆 ∈ Rng ∧ 𝑇 ∈ (Ring ∖ NzRing)) ∧ 𝐵 = {(0g‘𝑇)}) ∧ (𝐻‘(0g‘𝑇)) = 0 ) → (𝐻‘(0g‘𝑇)) = 0 )
3938, 38oveq12d 7458 . . . . . . . 8 ((((𝑆 ∈ Rng ∧ 𝑇 ∈ (Ring ∖ NzRing)) ∧ 𝐵 = {(0g‘𝑇)}) ∧ (𝐻‘(0g‘𝑇)) = 0 ) → ((𝐻‘(0g‘𝑇))(.r‘𝑆)(𝐻‘(0g‘𝑇))) = ( 0 (.r‘𝑆) 0 ))
40 eqid 2763 . . . . . . . . . . . . . 14 (.r‘𝑇) = (.r‘𝑇)
4113, 40, 14ringlz 20551 . . . . . . . . . . . . 13 ((𝑇 ∈ Ring ∧ (0g‘𝑇) ∈ 𝐵) → ((0g‘𝑇)(.r‘𝑇)(0g‘𝑇)) = (0g‘𝑇))
421, 23, 41syl2anc2 597 . . . . . . . . . . . 12 (𝑇 ∈ (Ring ∖ NzRing) → ((0g‘𝑇)(.r‘𝑇)(0g‘𝑇)) = (0g‘𝑇))
4342ad2antlr 740 . . . . . . . . . . 11 (((𝑆 ∈ Rng ∧ 𝑇 ∈ (Ring ∖ NzRing)) ∧ 𝐵 = {(0g‘𝑇)}) → ((0g‘𝑇)(.r‘𝑇)(0g‘𝑇)) = (0g‘𝑇))
4443adantr 486 . . . . . . . . . 10 ((((𝑆 ∈ Rng ∧ 𝑇 ∈ (Ring ∖ NzRing)) ∧ 𝐵 = {(0g‘𝑇)}) ∧ (𝐻‘(0g‘𝑇)) = 0 ) → ((0g‘𝑇)(.r‘𝑇)(0g‘𝑇)) = (0g‘𝑇))
4544fveq2d 6909 . . . . . . . . 9 ((((𝑆 ∈ Rng ∧ 𝑇 ∈ (Ring ∖ NzRing)) ∧ 𝐵 = {(0g‘𝑇)}) ∧ (𝐻‘(0g‘𝑇)) = 0 ) → (𝐻‘((0g‘𝑇)(.r‘𝑇)(0g‘𝑇))) = (𝐻‘(0g‘𝑇)))
4645, 38eqtrd 2798 . . . . . . . 8 ((((𝑆 ∈ Rng ∧ 𝑇 ∈ (Ring ∖ NzRing)) ∧ 𝐵 = {(0g‘𝑇)}) ∧ (𝐻‘(0g‘𝑇)) = 0 ) → (𝐻‘((0g‘𝑇)(.r‘𝑇)(0g‘𝑇))) = 0 )
4737, 39, 463eqtr4rd 2809 . . . . . . 7 ((((𝑆 ∈ Rng ∧ 𝑇 ∈ (Ring ∖ NzRing)) ∧ 𝐵 = {(0g‘𝑇)}) ∧ (𝐻‘(0g‘𝑇)) = 0 ) → (𝐻‘((0g‘𝑇)(.r‘𝑇)(0g‘𝑇))) = ((𝐻‘(0g‘𝑇))(.r‘𝑆)(𝐻‘(0g‘𝑇))))
4828, 47mpdan 700 . . . . . 6 (((𝑆 ∈ Rng ∧ 𝑇 ∈ (Ring ∖ NzRing)) ∧ 𝐵 = {(0g‘𝑇)}) → (𝐻‘((0g‘𝑇)(.r‘𝑇)(0g‘𝑇))) = ((𝐻‘(0g‘𝑇))(.r‘𝑆)(𝐻‘(0g‘𝑇))))
4923, 23jca 521 . . . . . . . . 9 (𝑇 ∈ Ring → ((0g‘𝑇) ∈ 𝐵 ∧ (0g‘𝑇) ∈ 𝐵))
501, 49syl 18 . . . . . . . 8 (𝑇 ∈ (Ring ∖ NzRing) → ((0g‘𝑇) ∈ 𝐵 ∧ (0g‘𝑇) ∈ 𝐵))
5150ad2antlr 740 . . . . . . 7 (((𝑆 ∈ Rng ∧ 𝑇 ∈ (Ring ∖ NzRing)) ∧ 𝐵 = {(0g‘𝑇)}) → ((0g‘𝑇) ∈ 𝐵 ∧ (0g‘𝑇) ∈ 𝐵))
52 fvoveq1 7463 . . . . . . . . 9 (𝑎 = (0g‘𝑇) → (𝐻‘(𝑎(.r‘𝑇)𝑐)) = (𝐻‘((0g‘𝑇)(.r‘𝑇)𝑐)))
53 fveq2 6905 . . . . . . . . . 10 (𝑎 = (0g‘𝑇) → (𝐻‘𝑎) = (𝐻‘(0g‘𝑇)))
5453oveq1d 7455 . . . . . . . . 9 (𝑎 = (0g‘𝑇) → ((𝐻‘𝑎)(.r‘𝑆)(𝐻‘𝑐)) = ((𝐻‘(0g‘𝑇))(.r‘𝑆)(𝐻‘𝑐)))
5552, 54eqeq12d 2779 . . . . . . . 8 (𝑎 = (0g‘𝑇) → ((𝐻‘(𝑎(.r‘𝑇)𝑐)) = ((𝐻‘𝑎)(.r‘𝑆)(𝐻‘𝑐)) ↔ (𝐻‘((0g‘𝑇)(.r‘𝑇)𝑐)) = ((𝐻‘(0g‘𝑇))(.r‘𝑆)(𝐻‘𝑐))))
56 oveq2 7448 . . . . . . . . . 10 (𝑐 = (0g‘𝑇) → ((0g‘𝑇)(.r‘𝑇)𝑐) = ((0g‘𝑇)(.r‘𝑇)(0g‘𝑇)))
5756fveq2d 6909 . . . . . . . . 9 (𝑐 = (0g‘𝑇) → (𝐻‘((0g‘𝑇)(.r‘𝑇)𝑐)) = (𝐻‘((0g‘𝑇)(.r‘𝑇)(0g‘𝑇))))
58 fveq2 6905 . . . . . . . . . 10 (𝑐 = (0g‘𝑇) → (𝐻‘𝑐) = (𝐻‘(0g‘𝑇)))
5958oveq2d 7456 . . . . . . . . 9 (𝑐 = (0g‘𝑇) → ((𝐻‘(0g‘𝑇))(.r‘𝑆)(𝐻‘𝑐)) = ((𝐻‘(0g‘𝑇))(.r‘𝑆)(𝐻‘(0g‘𝑇))))
6057, 59eqeq12d 2779 . . . . . . . 8 (𝑐 = (0g‘𝑇) → ((𝐻‘((0g‘𝑇)(.r‘𝑇)𝑐)) = ((𝐻‘(0g‘𝑇))(.r‘𝑆)(𝐻‘𝑐)) ↔ (𝐻‘((0g‘𝑇)(.r‘𝑇)(0g‘𝑇))) = ((𝐻‘(0g‘𝑇))(.r‘𝑆)(𝐻‘(0g‘𝑇)))))
6155, 602ralsng 4639 . . . . . . 7 (((0g‘𝑇) ∈ 𝐵 ∧ (0g‘𝑇) ∈ 𝐵) → (∀𝑎 ∈ {(0g‘𝑇)}∀𝑐 ∈ {(0g‘𝑇)} (𝐻‘(𝑎(.r‘𝑇)𝑐)) = ((𝐻‘𝑎)(.r‘𝑆)(𝐻‘𝑐)) ↔ (𝐻‘((0g‘𝑇)(.r‘𝑇)(0g‘𝑇))) = ((𝐻‘(0g‘𝑇))(.r‘𝑆)(𝐻‘(0g‘𝑇)))))
6251, 61syl 18 . . . . . 6 (((𝑆 ∈ Rng ∧ 𝑇 ∈ (Ring ∖ NzRing)) ∧ 𝐵 = {(0g‘𝑇)}) → (∀𝑎 ∈ {(0g‘𝑇)}∀𝑐 ∈ {(0g‘𝑇)} (𝐻‘(𝑎(.r‘𝑇)𝑐)) = ((𝐻‘𝑎)(.r‘𝑆)(𝐻‘𝑐)) ↔ (𝐻‘((0g‘𝑇)(.r‘𝑇)(0g‘𝑇))) = ((𝐻‘(0g‘𝑇))(.r‘𝑆)(𝐻‘(0g‘𝑇)))))
6348, 62mpbird 260 . . . . 5 (((𝑆 ∈ Rng ∧ 𝑇 ∈ (Ring ∖ NzRing)) ∧ 𝐵 = {(0g‘𝑇)}) → ∀𝑎 ∈ {(0g‘𝑇)}∀𝑐 ∈ {(0g‘𝑇)} (𝐻‘(𝑎(.r‘𝑇)𝑐)) = ((𝐻‘𝑎)(.r‘𝑆)(𝐻‘𝑐)))
64 raleq 3320 . . . . . . 7 (𝐵 = {(0g‘𝑇)} → (∀𝑐 ∈ 𝐵 (𝐻‘(𝑎(.r‘𝑇)𝑐)) = ((𝐻‘𝑎)(.r‘𝑆)(𝐻‘𝑐)) ↔ ∀𝑐 ∈ {(0g‘𝑇)} (𝐻‘(𝑎(.r‘𝑇)𝑐)) = ((𝐻‘𝑎)(.r‘𝑆)(𝐻‘𝑐))))
6564raleqbi1dv 3333 . . . . . 6 (𝐵 = {(0g‘𝑇)} → (∀𝑎 ∈ 𝐵 ∀𝑐 ∈ 𝐵 (𝐻‘(𝑎(.r‘𝑇)𝑐)) = ((𝐻‘𝑎)(.r‘𝑆)(𝐻‘𝑐)) ↔ ∀𝑎 ∈ {(0g‘𝑇)}∀𝑐 ∈ {(0g‘𝑇)} (𝐻‘(𝑎(.r‘𝑇)𝑐)) = ((𝐻‘𝑎)(.r‘𝑆)(𝐻‘𝑐))))
6665adantl 487 . . . . 5 (((𝑆 ∈ Rng ∧ 𝑇 ∈ (Ring ∖ NzRing)) ∧ 𝐵 = {(0g‘𝑇)}) → (∀𝑎 ∈ 𝐵 ∀𝑐 ∈ 𝐵 (𝐻‘(𝑎(.r‘𝑇)𝑐)) = ((𝐻‘𝑎)(.r‘𝑆)(𝐻‘𝑐)) ↔ ∀𝑎 ∈ {(0g‘𝑇)}∀𝑐 ∈ {(0g‘𝑇)} (𝐻‘(𝑎(.r‘𝑇)𝑐)) = ((𝐻‘𝑎)(.r‘𝑆)(𝐻‘𝑐))))
6763, 66mpbird 260 . . . 4 (((𝑆 ∈ Rng ∧ 𝑇 ∈ (Ring ∖ NzRing)) ∧ 𝐵 = {(0g‘𝑇)}) → ∀𝑎 ∈ 𝐵 ∀𝑐 ∈ 𝐵 (𝐻‘(𝑎(.r‘𝑇)𝑐)) = ((𝐻‘𝑎)(.r‘𝑆)(𝐻‘𝑐)))
6816, 67mpdan 700 . . 3 ((𝑆 ∈ Rng ∧ 𝑇 ∈ (Ring ∖ NzRing)) → ∀𝑎 ∈ 𝐵 ∀𝑐 ∈ 𝐵 (𝐻‘(𝑎(.r‘𝑇)𝑐)) = ((𝐻‘𝑎)(.r‘𝑆)(𝐻‘𝑐)))
6920, 68jca 521 . 2 ((𝑆 ∈ Rng ∧ 𝑇 ∈ (Ring ∖ NzRing)) → (𝐻 ∈ (𝑇 GrpHom 𝑆) ∧ ∀𝑎 ∈ 𝐵 ∀𝑐 ∈ 𝐵 (𝐻‘(𝑎(.r‘𝑇)𝑐)) = ((𝐻‘𝑎)(.r‘𝑆)(𝐻‘𝑐))))
7013, 40, 32isrnghm 20698 . 2 (𝐻 ∈ (𝑇 RngHom 𝑆) ↔ ((𝑇 ∈ Rng ∧ 𝑆 ∈ Rng) ∧ (𝐻 ∈ (𝑇 GrpHom 𝑆) ∧ ∀𝑎 ∈ 𝐵 ∀𝑐 ∈ 𝐵 (𝐻‘(𝑎(.r‘𝑇)𝑐)) = ((𝐻‘𝑎)(.r‘𝑆)(𝐻‘𝑐)))))
715, 69, 70sylanbrc 595 1 ((𝑆 ∈ Rng ∧ 𝑇 ∈ (Ring ∖ NzRing)) → 𝐻 ∈ (𝑇 RngHom 𝑆))
Colors of variables:    wff setvar class
This proof depends on syntax axioms:   → wi 4   ↔ wb 209   ∧ wa 401   = wceq 1570   ∈ wcel 2147  ∀wral 3080  Vcvv 3454   ∖ cdif 4048  {csn 4588   ↦ cmpt 5189  ‘cfv 6555  (class class class)co 7440  Basecbs 17413  .rcmulr 17455  0gc0g 17636  Grpcgrp 19170   GrpHom cghm 19453  Abelcabl 20022  Rngcrng 20401  Ringcrg 20486   RngHom crnghm 20691  NzRingcnzr 20789
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 1945  ax-6 2002  ax-7 2043  ax-8 2149  ax-9 2157  ax-10 2180  ax-11 2197  ax-12 2216  ax-ext 2735  ax-sep 5252  ax-nul 5263  ax-pow 5331  ax-pr 5395  ax-un 7772  ax-cnex 11280  ax-resscn 11281  ax-1cn 11282  ax-icn 11283  ax-addcl 11284  ax-addrcl 11285  ax-mulcl 11286  ax-mulrcl 11287  ax-mulcom 11288  ax-addass 11289  ax-mulass 11290  ax-distr 11291  ax-i2m1 11292  ax-1ne0 11293  ax-1rid 11294  ax-rnegex 11295  ax-rrecex 11296  ax-cnre 11297  ax-pre-lttri 11298  ax-pre-lttrn 11299  ax-pre-ltadd 11300  ax-pre-mulgt0 11301
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 2102  df-mo 2567  df-eu 2597  df-clab 2742  df-cleq 2755  df-clel 2839  df-nfc 2913  df-ne 2960  df-nel 3066  df-ral 3081  df-rex 3091  df-rmo 3369  df-reu 3370  df-rab 3417  df-v 3456  df-sbc 3743  df-csb 3852  df-ss 3901  df-pss 4017  df-dif 4050  df-in 4094  df-un 4154  df-nul 4282  df-if 4486  df-pw 4562  df-sn 4589  df-pr 4591  df-op 4839  df-uni 4871  df-int 4911  df-iun 4956  df-br 5107  df-opab 5171  df-mpt 5190  df-tr 5216  df-id 5550  df-eprel 5555  df-po 5563  df-so 5564  df-fr 5608  df-we 5610  df-xp 5661  df-rel 5662  df-cnv 5663  df-co 5664  df-dm 5665  df-rn 5666  df-res 5667  df-ima 5668  df-pred 6319  df-ord 6380  df-on 6381  df-lim 6382  df-suc 6383  df-iota 6509  df-fun 6557  df-fn 6558  df-f 6559  df-f1 6560  df-fo 6561  df-f1o 6562  df-fv 6563  df-riota 7397  df-ov 7443  df-oprab 7444  df-mpo 7445  df-om 7899  df-1st 8022  df-2nd 8023  df-frecs 8324  df-wrecs 8355  df-recs 8404  df-rdg 8443  df-1o 8501  df-oadd 8505  df-er 8742  df-map 8874  df-en 8999  df-dom 9000  df-sdom 9001  df-fin 9002  df-dju 10006  df-card 10044  df-pnf 11369  df-mnf 11370  df-xr 11371  df-ltxr 11372  df-le 11373  df-sub 11567  df-neg 11568  df-nn 12360  df-2 12429  df-n0 12631  df-xnn0 12704  df-z 12718  df-uz 12990  df-fz 13664  df-hash 14499  df-sets 17368  df-slot 17386  df-ndx 17398  df-base 17414  df-plusg 17467  df-0g 17638  df-mgm 18842  df-mgmhm 18907  df-sgrp 18934  df-mnd 18950  df-mhm 19004  df-grp 19173  df-minusg 19174  df-ghm 19454  df-cmn 20023  df-abl 20024  df-mgp 20388  df-rng 20402  df-ur 20435  df-ring 20488  df-rnghm 20693  df-nzr 20790
This theorem is used by:  zrinitorngc  20921
  Copyright terms: Public domain W3C validator