Users' Mathboxes Mathbox for Glauco Siliprandi < Previous   Next >
Nearby theorems
Mirrors  >  Home  >  MPE Home  >  Th. List  >   Mathboxes  >  sge0sn Structured version   Visualization version   GIF version

Theorem sge0sn 39924
Description: A sum of a nonnegative extended real is the term. (Contributed by Glauco Siliprandi, 17-Aug-2020.)
Hypotheses
Ref Expression
sge0sn.1 (𝜑𝐴𝑉)
sge0sn.2 (𝜑𝐹:{𝐴}⟶(0[,]+∞))
Assertion
Ref Expression
sge0sn (𝜑 → (Σ^𝐹) = (𝐹𝐴))

Proof of Theorem sge0sn
Dummy variables 𝑥 𝑦 are mutually distinct and distinct from all other variables.
StepHypRef Expression
1 snex 4874 . . . . 5 {𝐴} ∈ V
21a1i 11 . . . 4 ((𝜑 ∧ (𝐹𝐴) = +∞) → {𝐴} ∈ V)
3 sge0sn.2 . . . . 5 (𝜑𝐹:{𝐴}⟶(0[,]+∞))
43adantr 481 . . . 4 ((𝜑 ∧ (𝐹𝐴) = +∞) → 𝐹:{𝐴}⟶(0[,]+∞))
5 id 22 . . . . . . 7 ((𝐹𝐴) = +∞ → (𝐹𝐴) = +∞)
65eqcomd 2627 . . . . . 6 ((𝐹𝐴) = +∞ → +∞ = (𝐹𝐴))
76adantl 482 . . . . 5 ((𝜑 ∧ (𝐹𝐴) = +∞) → +∞ = (𝐹𝐴))
8 ffun 6010 . . . . . . . 8 (𝐹:{𝐴}⟶(0[,]+∞) → Fun 𝐹)
93, 8syl 17 . . . . . . 7 (𝜑 → Fun 𝐹)
109adantr 481 . . . . . 6 ((𝜑 ∧ (𝐹𝐴) = +∞) → Fun 𝐹)
11 sge0sn.1 . . . . . . . . 9 (𝜑𝐴𝑉)
12 snidg 4182 . . . . . . . . 9 (𝐴𝑉𝐴 ∈ {𝐴})
1311, 12syl 17 . . . . . . . 8 (𝜑𝐴 ∈ {𝐴})
14 fdm 6013 . . . . . . . . . 10 (𝐹:{𝐴}⟶(0[,]+∞) → dom 𝐹 = {𝐴})
153, 14syl 17 . . . . . . . . 9 (𝜑 → dom 𝐹 = {𝐴})
1615eqcomd 2627 . . . . . . . 8 (𝜑 → {𝐴} = dom 𝐹)
1713, 16eleqtrd 2700 . . . . . . 7 (𝜑𝐴 ∈ dom 𝐹)
1817adantr 481 . . . . . 6 ((𝜑 ∧ (𝐹𝐴) = +∞) → 𝐴 ∈ dom 𝐹)
19 fvelrn 6313 . . . . . 6 ((Fun 𝐹𝐴 ∈ dom 𝐹) → (𝐹𝐴) ∈ ran 𝐹)
2010, 18, 19syl2anc 692 . . . . 5 ((𝜑 ∧ (𝐹𝐴) = +∞) → (𝐹𝐴) ∈ ran 𝐹)
217, 20eqeltrd 2698 . . . 4 ((𝜑 ∧ (𝐹𝐴) = +∞) → +∞ ∈ ran 𝐹)
222, 4, 21sge0pnfval 39918 . . 3 ((𝜑 ∧ (𝐹𝐴) = +∞) → (Σ^𝐹) = +∞)
23 simpr 477 . . 3 ((𝜑 ∧ (𝐹𝐴) = +∞) → (𝐹𝐴) = +∞)
2422, 23eqtr4d 2658 . 2 ((𝜑 ∧ (𝐹𝐴) = +∞) → (Σ^𝐹) = (𝐹𝐴))
251a1i 11 . . . 4 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → {𝐴} ∈ V)
263adantr 481 . . . . 5 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → 𝐹:{𝐴}⟶(0[,]+∞))
27 elsni 4170 . . . . . . . . 9 (+∞ ∈ {(𝐹𝐴)} → +∞ = (𝐹𝐴))
2827eqcomd 2627 . . . . . . . 8 (+∞ ∈ {(𝐹𝐴)} → (𝐹𝐴) = +∞)
2928con3i 150 . . . . . . 7 (¬ (𝐹𝐴) = +∞ → ¬ +∞ ∈ {(𝐹𝐴)})
3029adantl 482 . . . . . 6 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → ¬ +∞ ∈ {(𝐹𝐴)})
3111, 3rnsnf 38867 . . . . . . . 8 (𝜑 → ran 𝐹 = {(𝐹𝐴)})
3231eqcomd 2627 . . . . . . 7 (𝜑 → {(𝐹𝐴)} = ran 𝐹)
3332adantr 481 . . . . . 6 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → {(𝐹𝐴)} = ran 𝐹)
3430, 33neleqtrd 2719 . . . . 5 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → ¬ +∞ ∈ ran 𝐹)
3526, 34fge0iccico 39915 . . . 4 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → 𝐹:{𝐴}⟶(0[,)+∞))
3625, 35sge0reval 39917 . . 3 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → (Σ^𝐹) = sup(ran (𝑥 ∈ (𝒫 {𝐴} ∩ Fin) ↦ Σ𝑦𝑥 (𝐹𝑦)), ℝ*, < ))
37 sum0 14392 . . . . . . . 8 Σ𝑦 ∈ ∅ (𝐹𝑦) = 0
3837eqcomi 2630 . . . . . . 7 0 = Σ𝑦 ∈ ∅ (𝐹𝑦)
3938a1i 11 . . . . . 6 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → 0 = Σ𝑦 ∈ ∅ (𝐹𝑦))
40 nfcvd 2762 . . . . . . . 8 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → 𝑦(𝐹𝐴))
41 nfv 1840 . . . . . . . 8 𝑦(𝜑 ∧ ¬ (𝐹𝐴) = +∞)
42 fveq2 6153 . . . . . . . . 9 (𝑦 = 𝐴 → (𝐹𝑦) = (𝐹𝐴))
4342adantl 482 . . . . . . . 8 (((𝜑 ∧ ¬ (𝐹𝐴) = +∞) ∧ 𝑦 = 𝐴) → (𝐹𝑦) = (𝐹𝐴))
4411adantr 481 . . . . . . . 8 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → 𝐴𝑉)
45 rge0ssre 12229 . . . . . . . . . 10 (0[,)+∞) ⊆ ℝ
46 ax-resscn 9944 . . . . . . . . . 10 ℝ ⊆ ℂ
4745, 46sstri 3596 . . . . . . . . 9 (0[,)+∞) ⊆ ℂ
4844, 12syl 17 . . . . . . . . . 10 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → 𝐴 ∈ {𝐴})
4935, 48ffvelrnd 6321 . . . . . . . . 9 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → (𝐹𝐴) ∈ (0[,)+∞))
5047, 49sseldi 3585 . . . . . . . 8 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → (𝐹𝐴) ∈ ℂ)
5140, 41, 43, 44, 50sumsnd 38695 . . . . . . 7 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → Σ𝑦 ∈ {𝐴} (𝐹𝑦) = (𝐹𝐴))
5251eqcomd 2627 . . . . . 6 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → (𝐹𝐴) = Σ𝑦 ∈ {𝐴} (𝐹𝑦))
5339, 52preq12d 4251 . . . . 5 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → {0, (𝐹𝐴)} = {Σ𝑦 ∈ ∅ (𝐹𝑦), Σ𝑦 ∈ {𝐴} (𝐹𝑦)})
5453supeq1d 8303 . . . 4 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → sup({0, (𝐹𝐴)}, ℝ*, < ) = sup({Σ𝑦 ∈ ∅ (𝐹𝑦), Σ𝑦 ∈ {𝐴} (𝐹𝑦)}, ℝ*, < ))
55 xrltso 11925 . . . . . . . 8 < Or ℝ*
5655a1i 11 . . . . . . 7 (𝜑 → < Or ℝ*)
57 0xr 10037 . . . . . . . 8 0 ∈ ℝ*
5857a1i 11 . . . . . . 7 (𝜑 → 0 ∈ ℝ*)
59 iccssxr 12205 . . . . . . . 8 (0[,]+∞) ⊆ ℝ*
603, 13ffvelrnd 6321 . . . . . . . 8 (𝜑 → (𝐹𝐴) ∈ (0[,]+∞))
6159, 60sseldi 3585 . . . . . . 7 (𝜑 → (𝐹𝐴) ∈ ℝ*)
62 suppr 8328 . . . . . . 7 (( < Or ℝ* ∧ 0 ∈ ℝ* ∧ (𝐹𝐴) ∈ ℝ*) → sup({0, (𝐹𝐴)}, ℝ*, < ) = if((𝐹𝐴) < 0, 0, (𝐹𝐴)))
6356, 58, 61, 62syl3anc 1323 . . . . . 6 (𝜑 → sup({0, (𝐹𝐴)}, ℝ*, < ) = if((𝐹𝐴) < 0, 0, (𝐹𝐴)))
64 pnfxr 10043 . . . . . . . . . . 11 +∞ ∈ ℝ*
6564a1i 11 . . . . . . . . . 10 (𝜑 → +∞ ∈ ℝ*)
6658, 65, 603jca 1240 . . . . . . . . 9 (𝜑 → (0 ∈ ℝ* ∧ +∞ ∈ ℝ* ∧ (𝐹𝐴) ∈ (0[,]+∞)))
67 iccgelb 12179 . . . . . . . . 9 ((0 ∈ ℝ* ∧ +∞ ∈ ℝ* ∧ (𝐹𝐴) ∈ (0[,]+∞)) → 0 ≤ (𝐹𝐴))
6866, 67syl 17 . . . . . . . 8 (𝜑 → 0 ≤ (𝐹𝐴))
6958, 61xrlenltd 10055 . . . . . . . 8 (𝜑 → (0 ≤ (𝐹𝐴) ↔ ¬ (𝐹𝐴) < 0))
7068, 69mpbid 222 . . . . . . 7 (𝜑 → ¬ (𝐹𝐴) < 0)
7170iffalsed 4074 . . . . . 6 (𝜑 → if((𝐹𝐴) < 0, 0, (𝐹𝐴)) = (𝐹𝐴))
7263, 71eqtr2d 2656 . . . . 5 (𝜑 → (𝐹𝐴) = sup({0, (𝐹𝐴)}, ℝ*, < ))
7372adantr 481 . . . 4 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → (𝐹𝐴) = sup({0, (𝐹𝐴)}, ℝ*, < ))
74 pwsn 4401 . . . . . . . . . . . 12 𝒫 {𝐴} = {∅, {𝐴}}
7574ineq1i 3793 . . . . . . . . . . 11 (𝒫 {𝐴} ∩ Fin) = ({∅, {𝐴}} ∩ Fin)
76 0fin 8139 . . . . . . . . . . . . 13 ∅ ∈ Fin
77 snfi 7989 . . . . . . . . . . . . 13 {𝐴} ∈ Fin
78 prssi 4326 . . . . . . . . . . . . 13 ((∅ ∈ Fin ∧ {𝐴} ∈ Fin) → {∅, {𝐴}} ⊆ Fin)
7976, 77, 78mp2an 707 . . . . . . . . . . . 12 {∅, {𝐴}} ⊆ Fin
80 df-ss 3573 . . . . . . . . . . . . 13 ({∅, {𝐴}} ⊆ Fin ↔ ({∅, {𝐴}} ∩ Fin) = {∅, {𝐴}})
8180biimpi 206 . . . . . . . . . . . 12 ({∅, {𝐴}} ⊆ Fin → ({∅, {𝐴}} ∩ Fin) = {∅, {𝐴}})
8279, 81ax-mp 5 . . . . . . . . . . 11 ({∅, {𝐴}} ∩ Fin) = {∅, {𝐴}}
8375, 82eqtri 2643 . . . . . . . . . 10 (𝒫 {𝐴} ∩ Fin) = {∅, {𝐴}}
84 mpteq1 4702 . . . . . . . . . 10 ((𝒫 {𝐴} ∩ Fin) = {∅, {𝐴}} → (𝑥 ∈ (𝒫 {𝐴} ∩ Fin) ↦ Σ𝑦𝑥 (𝐹𝑦)) = (𝑥 ∈ {∅, {𝐴}} ↦ Σ𝑦𝑥 (𝐹𝑦)))
8583, 84ax-mp 5 . . . . . . . . 9 (𝑥 ∈ (𝒫 {𝐴} ∩ Fin) ↦ Σ𝑦𝑥 (𝐹𝑦)) = (𝑥 ∈ {∅, {𝐴}} ↦ Σ𝑦𝑥 (𝐹𝑦))
86 0ex 4755 . . . . . . . . . . . . 13 ∅ ∈ V
8786a1i 11 . . . . . . . . . . . 12 (⊤ → ∅ ∈ V)
881a1i 11 . . . . . . . . . . . 12 (⊤ → {𝐴} ∈ V)
89 sumex 14359 . . . . . . . . . . . . 13 Σ𝑦 ∈ ∅ (𝐹𝑦) ∈ V
9089a1i 11 . . . . . . . . . . . 12 (⊤ → Σ𝑦 ∈ ∅ (𝐹𝑦) ∈ V)
91 sumex 14359 . . . . . . . . . . . . 13 Σ𝑦 ∈ {𝐴} (𝐹𝑦) ∈ V
9291a1i 11 . . . . . . . . . . . 12 (⊤ → Σ𝑦 ∈ {𝐴} (𝐹𝑦) ∈ V)
93 sumeq1 14360 . . . . . . . . . . . . 13 (𝑥 = ∅ → Σ𝑦𝑥 (𝐹𝑦) = Σ𝑦 ∈ ∅ (𝐹𝑦))
9493adantl 482 . . . . . . . . . . . 12 ((⊤ ∧ 𝑥 = ∅) → Σ𝑦𝑥 (𝐹𝑦) = Σ𝑦 ∈ ∅ (𝐹𝑦))
95 sumeq1 14360 . . . . . . . . . . . . 13 (𝑥 = {𝐴} → Σ𝑦𝑥 (𝐹𝑦) = Σ𝑦 ∈ {𝐴} (𝐹𝑦))
9695adantl 482 . . . . . . . . . . . 12 ((⊤ ∧ 𝑥 = {𝐴}) → Σ𝑦𝑥 (𝐹𝑦) = Σ𝑦 ∈ {𝐴} (𝐹𝑦))
9787, 88, 90, 92, 94, 96fmptpr 6398 . . . . . . . . . . 11 (⊤ → {⟨∅, Σ𝑦 ∈ ∅ (𝐹𝑦)⟩, ⟨{𝐴}, Σ𝑦 ∈ {𝐴} (𝐹𝑦)⟩} = (𝑥 ∈ {∅, {𝐴}} ↦ Σ𝑦𝑥 (𝐹𝑦)))
9897trud 1490 . . . . . . . . . 10 {⟨∅, Σ𝑦 ∈ ∅ (𝐹𝑦)⟩, ⟨{𝐴}, Σ𝑦 ∈ {𝐴} (𝐹𝑦)⟩} = (𝑥 ∈ {∅, {𝐴}} ↦ Σ𝑦𝑥 (𝐹𝑦))
9998eqcomi 2630 . . . . . . . . 9 (𝑥 ∈ {∅, {𝐴}} ↦ Σ𝑦𝑥 (𝐹𝑦)) = {⟨∅, Σ𝑦 ∈ ∅ (𝐹𝑦)⟩, ⟨{𝐴}, Σ𝑦 ∈ {𝐴} (𝐹𝑦)⟩}
10085, 99eqtri 2643 . . . . . . . 8 (𝑥 ∈ (𝒫 {𝐴} ∩ Fin) ↦ Σ𝑦𝑥 (𝐹𝑦)) = {⟨∅, Σ𝑦 ∈ ∅ (𝐹𝑦)⟩, ⟨{𝐴}, Σ𝑦 ∈ {𝐴} (𝐹𝑦)⟩}
101100rneqi 5317 . . . . . . 7 ran (𝑥 ∈ (𝒫 {𝐴} ∩ Fin) ↦ Σ𝑦𝑥 (𝐹𝑦)) = ran {⟨∅, Σ𝑦 ∈ ∅ (𝐹𝑦)⟩, ⟨{𝐴}, Σ𝑦 ∈ {𝐴} (𝐹𝑦)⟩}
102 rnpropg 5579 . . . . . . . 8 ((∅ ∈ V ∧ {𝐴} ∈ V) → ran {⟨∅, Σ𝑦 ∈ ∅ (𝐹𝑦)⟩, ⟨{𝐴}, Σ𝑦 ∈ {𝐴} (𝐹𝑦)⟩} = {Σ𝑦 ∈ ∅ (𝐹𝑦), Σ𝑦 ∈ {𝐴} (𝐹𝑦)})
10386, 1, 102mp2an 707 . . . . . . 7 ran {⟨∅, Σ𝑦 ∈ ∅ (𝐹𝑦)⟩, ⟨{𝐴}, Σ𝑦 ∈ {𝐴} (𝐹𝑦)⟩} = {Σ𝑦 ∈ ∅ (𝐹𝑦), Σ𝑦 ∈ {𝐴} (𝐹𝑦)}
104101, 103eqtri 2643 . . . . . 6 ran (𝑥 ∈ (𝒫 {𝐴} ∩ Fin) ↦ Σ𝑦𝑥 (𝐹𝑦)) = {Σ𝑦 ∈ ∅ (𝐹𝑦), Σ𝑦 ∈ {𝐴} (𝐹𝑦)}
105104supeq1i 8304 . . . . 5 sup(ran (𝑥 ∈ (𝒫 {𝐴} ∩ Fin) ↦ Σ𝑦𝑥 (𝐹𝑦)), ℝ*, < ) = sup({Σ𝑦 ∈ ∅ (𝐹𝑦), Σ𝑦 ∈ {𝐴} (𝐹𝑦)}, ℝ*, < )
106105a1i 11 . . . 4 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → sup(ran (𝑥 ∈ (𝒫 {𝐴} ∩ Fin) ↦ Σ𝑦𝑥 (𝐹𝑦)), ℝ*, < ) = sup({Σ𝑦 ∈ ∅ (𝐹𝑦), Σ𝑦 ∈ {𝐴} (𝐹𝑦)}, ℝ*, < ))
10754, 73, 1063eqtr4d 2665 . . 3 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → (𝐹𝐴) = sup(ran (𝑥 ∈ (𝒫 {𝐴} ∩ Fin) ↦ Σ𝑦𝑥 (𝐹𝑦)), ℝ*, < ))
10836, 107eqtr4d 2658 . 2 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → (Σ^𝐹) = (𝐹𝐴))
10924, 108pm2.61dan 831 1 (𝜑 → (Σ^𝐹) = (𝐹𝐴))
Colors of variables: wff setvar class
Syntax hints:  ¬ wn 3  wi 4  wa 384  w3a 1036   = wceq 1480  wtru 1481  wcel 1987  Vcvv 3189  cin 3558  wss 3559  c0 3896  ifcif 4063  𝒫 cpw 4135  {csn 4153  {cpr 4155  cop 4159   class class class wbr 4618  cmpt 4678   Or wor 4999  dom cdm 5079  ran crn 5080  Fun wfun 5846  wf 5848  cfv 5852  (class class class)co 6610  Fincfn 7906  supcsup 8297  cc 9885  cr 9886  0cc0 9887  +∞cpnf 10022  *cxr 10024   < clt 10025  cle 10026  [,)cico 12126  [,]cicc 12127  Σcsu 14357  Σ^csumge0 39907
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1719  ax-4 1734  ax-5 1836  ax-6 1885  ax-7 1932  ax-8 1989  ax-9 1996  ax-10 2016  ax-11 2031  ax-12 2044  ax-13 2245  ax-ext 2601  ax-rep 4736  ax-sep 4746  ax-nul 4754  ax-pow 4808  ax-pr 4872  ax-un 6909  ax-inf2 8489  ax-cnex 9943  ax-resscn 9944  ax-1cn 9945  ax-icn 9946  ax-addcl 9947  ax-addrcl 9948  ax-mulcl 9949  ax-mulrcl 9950  ax-mulcom 9951  ax-addass 9952  ax-mulass 9953  ax-distr 9954  ax-i2m1 9955  ax-1ne0 9956  ax-1rid 9957  ax-rnegex 9958  ax-rrecex 9959  ax-cnre 9960  ax-pre-lttri 9961  ax-pre-lttrn 9962  ax-pre-ltadd 9963  ax-pre-mulgt0 9964  ax-pre-sup 9965
This theorem depends on definitions:  df-bi 197  df-or 385  df-an 386  df-3or 1037  df-3an 1038  df-tru 1483  df-fal 1486  df-ex 1702  df-nf 1707  df-sb 1878  df-eu 2473  df-mo 2474  df-clab 2608  df-cleq 2614  df-clel 2617  df-nfc 2750  df-ne 2791  df-nel 2894  df-ral 2912  df-rex 2913  df-reu 2914  df-rmo 2915  df-rab 2916  df-v 3191  df-sbc 3422  df-csb 3519  df-dif 3562  df-un 3564  df-in 3566  df-ss 3573  df-pss 3575  df-nul 3897  df-if 4064  df-pw 4137  df-sn 4154  df-pr 4156  df-tp 4158  df-op 4160  df-uni 4408  df-int 4446  df-iun 4492  df-br 4619  df-opab 4679  df-mpt 4680  df-tr 4718  df-eprel 4990  df-id 4994  df-po 5000  df-so 5001  df-fr 5038  df-se 5039  df-we 5040  df-xp 5085  df-rel 5086  df-cnv 5087  df-co 5088  df-dm 5089  df-rn 5090  df-res 5091  df-ima 5092  df-pred 5644  df-ord 5690  df-on 5691  df-lim 5692  df-suc 5693  df-iota 5815  df-fun 5854  df-fn 5855  df-f 5856  df-f1 5857  df-fo 5858  df-f1o 5859  df-fv 5860  df-isom 5861  df-riota 6571  df-ov 6613  df-oprab 6614  df-mpt2 6615  df-om 7020  df-1st 7120  df-2nd 7121  df-wrecs 7359  df-recs 7420  df-rdg 7458  df-1o 7512  df-oadd 7516  df-er 7694  df-en 7907  df-dom 7908  df-sdom 7909  df-fin 7910  df-sup 8299  df-oi 8366  df-card 8716  df-pnf 10027  df-mnf 10028  df-xr 10029  df-ltxr 10030  df-le 10031  df-sub 10219  df-neg 10220  df-div 10636  df-nn 10972  df-2 11030  df-3 11031  df-n0 11244  df-z 11329  df-uz 11639  df-rp 11784  df-ico 12130  df-icc 12131  df-fz 12276  df-fzo 12414  df-seq 12749  df-exp 12808  df-hash 13065  df-cj 13780  df-re 13781  df-im 13782  df-sqrt 13916  df-abs 13917  df-clim 14160  df-sum 14358  df-sumge0 39908
This theorem is referenced by:  sge0snmpt  39928  sge0sup  39936  sge0snmptf  39982  caratheodorylem1  40068
  Copyright terms: Public domain W3C validator