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 40596
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 4908 . . . . 5 {𝐴} ∈ V
21a1i 11 . . . 4 ((𝜑 ∧ (𝐹𝐴) = +∞) → {𝐴} ∈ V)
3 sge0sn.2 . . . . 5 (𝜑𝐹:{𝐴}⟶(0[,]+∞))
43adantr 481 . . . 4 ((𝜑 ∧ (𝐹𝐴) = +∞) → 𝐹:{𝐴}⟶(0[,]+∞))
5 id 22 . . . . . . 7 ((𝐹𝐴) = +∞ → (𝐹𝐴) = +∞)
65eqcomd 2628 . . . . . 6 ((𝐹𝐴) = +∞ → +∞ = (𝐹𝐴))
76adantl 482 . . . . 5 ((𝜑 ∧ (𝐹𝐴) = +∞) → +∞ = (𝐹𝐴))
8 ffun 6048 . . . . . . . 8 (𝐹:{𝐴}⟶(0[,]+∞) → Fun 𝐹)
93, 8syl 17 . . . . . . 7 (𝜑 → Fun 𝐹)
109adantr 481 . . . . . 6 ((𝜑 ∧ (𝐹𝐴) = +∞) → Fun 𝐹)
11 sge0sn.1 . . . . . . . . 9 (𝜑𝐴𝑉)
12 snidg 4206 . . . . . . . . 9 (𝐴𝑉𝐴 ∈ {𝐴})
1311, 12syl 17 . . . . . . . 8 (𝜑𝐴 ∈ {𝐴})
14 fdm 6051 . . . . . . . . . 10 (𝐹:{𝐴}⟶(0[,]+∞) → dom 𝐹 = {𝐴})
153, 14syl 17 . . . . . . . . 9 (𝜑 → dom 𝐹 = {𝐴})
1615eqcomd 2628 . . . . . . . 8 (𝜑 → {𝐴} = dom 𝐹)
1713, 16eleqtrd 2703 . . . . . . 7 (𝜑𝐴 ∈ dom 𝐹)
1817adantr 481 . . . . . 6 ((𝜑 ∧ (𝐹𝐴) = +∞) → 𝐴 ∈ dom 𝐹)
19 fvelrn 6352 . . . . . 6 ((Fun 𝐹𝐴 ∈ dom 𝐹) → (𝐹𝐴) ∈ ran 𝐹)
2010, 18, 19syl2anc 693 . . . . 5 ((𝜑 ∧ (𝐹𝐴) = +∞) → (𝐹𝐴) ∈ ran 𝐹)
217, 20eqeltrd 2701 . . . 4 ((𝜑 ∧ (𝐹𝐴) = +∞) → +∞ ∈ ran 𝐹)
222, 4, 21sge0pnfval 40590 . . 3 ((𝜑 ∧ (𝐹𝐴) = +∞) → (Σ^𝐹) = +∞)
23 simpr 477 . . 3 ((𝜑 ∧ (𝐹𝐴) = +∞) → (𝐹𝐴) = +∞)
2422, 23eqtr4d 2659 . 2 ((𝜑 ∧ (𝐹𝐴) = +∞) → (Σ^𝐹) = (𝐹𝐴))
251a1i 11 . . . 4 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → {𝐴} ∈ V)
263adantr 481 . . . . 5 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → 𝐹:{𝐴}⟶(0[,]+∞))
27 elsni 4194 . . . . . . . . 9 (+∞ ∈ {(𝐹𝐴)} → +∞ = (𝐹𝐴))
2827eqcomd 2628 . . . . . . . 8 (+∞ ∈ {(𝐹𝐴)} → (𝐹𝐴) = +∞)
2928con3i 150 . . . . . . 7 (¬ (𝐹𝐴) = +∞ → ¬ +∞ ∈ {(𝐹𝐴)})
3029adantl 482 . . . . . 6 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → ¬ +∞ ∈ {(𝐹𝐴)})
3111, 3rnsnf 39370 . . . . . . . 8 (𝜑 → ran 𝐹 = {(𝐹𝐴)})
3231eqcomd 2628 . . . . . . 7 (𝜑 → {(𝐹𝐴)} = ran 𝐹)
3332adantr 481 . . . . . 6 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → {(𝐹𝐴)} = ran 𝐹)
3430, 33neleqtrd 2722 . . . . 5 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → ¬ +∞ ∈ ran 𝐹)
3526, 34fge0iccico 40587 . . . 4 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → 𝐹:{𝐴}⟶(0[,)+∞))
3625, 35sge0reval 40589 . . 3 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → (Σ^𝐹) = sup(ran (𝑥 ∈ (𝒫 {𝐴} ∩ Fin) ↦ Σ𝑦𝑥 (𝐹𝑦)), ℝ*, < ))
37 sum0 14452 . . . . . . . 8 Σ𝑦 ∈ ∅ (𝐹𝑦) = 0
3837eqcomi 2631 . . . . . . 7 0 = Σ𝑦 ∈ ∅ (𝐹𝑦)
3938a1i 11 . . . . . 6 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → 0 = Σ𝑦 ∈ ∅ (𝐹𝑦))
40 nfcvd 2765 . . . . . . . 8 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → 𝑦(𝐹𝐴))
41 nfv 1843 . . . . . . . 8 𝑦(𝜑 ∧ ¬ (𝐹𝐴) = +∞)
42 fveq2 6191 . . . . . . . . 9 (𝑦 = 𝐴 → (𝐹𝑦) = (𝐹𝐴))
4342adantl 482 . . . . . . . 8 (((𝜑 ∧ ¬ (𝐹𝐴) = +∞) ∧ 𝑦 = 𝐴) → (𝐹𝑦) = (𝐹𝐴))
4411adantr 481 . . . . . . . 8 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → 𝐴𝑉)
45 rge0ssre 12280 . . . . . . . . . 10 (0[,)+∞) ⊆ ℝ
46 ax-resscn 9993 . . . . . . . . . 10 ℝ ⊆ ℂ
4745, 46sstri 3612 . . . . . . . . 9 (0[,)+∞) ⊆ ℂ
4844, 12syl 17 . . . . . . . . . 10 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → 𝐴 ∈ {𝐴})
4935, 48ffvelrnd 6360 . . . . . . . . 9 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → (𝐹𝐴) ∈ (0[,)+∞))
5047, 49sseldi 3601 . . . . . . . 8 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → (𝐹𝐴) ∈ ℂ)
5140, 41, 43, 44, 50sumsnd 39185 . . . . . . 7 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → Σ𝑦 ∈ {𝐴} (𝐹𝑦) = (𝐹𝐴))
5251eqcomd 2628 . . . . . 6 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → (𝐹𝐴) = Σ𝑦 ∈ {𝐴} (𝐹𝑦))
5339, 52preq12d 4276 . . . . 5 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → {0, (𝐹𝐴)} = {Σ𝑦 ∈ ∅ (𝐹𝑦), Σ𝑦 ∈ {𝐴} (𝐹𝑦)})
5453supeq1d 8352 . . . 4 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → sup({0, (𝐹𝐴)}, ℝ*, < ) = sup({Σ𝑦 ∈ ∅ (𝐹𝑦), Σ𝑦 ∈ {𝐴} (𝐹𝑦)}, ℝ*, < ))
55 xrltso 11974 . . . . . . . 8 < Or ℝ*
5655a1i 11 . . . . . . 7 (𝜑 → < Or ℝ*)
57 0xr 10086 . . . . . . . 8 0 ∈ ℝ*
5857a1i 11 . . . . . . 7 (𝜑 → 0 ∈ ℝ*)
59 iccssxr 12256 . . . . . . . 8 (0[,]+∞) ⊆ ℝ*
603, 13ffvelrnd 6360 . . . . . . . 8 (𝜑 → (𝐹𝐴) ∈ (0[,]+∞))
6159, 60sseldi 3601 . . . . . . 7 (𝜑 → (𝐹𝐴) ∈ ℝ*)
62 suppr 8377 . . . . . . 7 (( < Or ℝ* ∧ 0 ∈ ℝ* ∧ (𝐹𝐴) ∈ ℝ*) → sup({0, (𝐹𝐴)}, ℝ*, < ) = if((𝐹𝐴) < 0, 0, (𝐹𝐴)))
6356, 58, 61, 62syl3anc 1326 . . . . . 6 (𝜑 → sup({0, (𝐹𝐴)}, ℝ*, < ) = if((𝐹𝐴) < 0, 0, (𝐹𝐴)))
64 pnfxr 10092 . . . . . . . . . . 11 +∞ ∈ ℝ*
6564a1i 11 . . . . . . . . . 10 (𝜑 → +∞ ∈ ℝ*)
6658, 65, 603jca 1242 . . . . . . . . 9 (𝜑 → (0 ∈ ℝ* ∧ +∞ ∈ ℝ* ∧ (𝐹𝐴) ∈ (0[,]+∞)))
67 iccgelb 12230 . . . . . . . . 9 ((0 ∈ ℝ* ∧ +∞ ∈ ℝ* ∧ (𝐹𝐴) ∈ (0[,]+∞)) → 0 ≤ (𝐹𝐴))
6866, 67syl 17 . . . . . . . 8 (𝜑 → 0 ≤ (𝐹𝐴))
6958, 61xrlenltd 10104 . . . . . . . 8 (𝜑 → (0 ≤ (𝐹𝐴) ↔ ¬ (𝐹𝐴) < 0))
7068, 69mpbid 222 . . . . . . 7 (𝜑 → ¬ (𝐹𝐴) < 0)
7170iffalsed 4097 . . . . . 6 (𝜑 → if((𝐹𝐴) < 0, 0, (𝐹𝐴)) = (𝐹𝐴))
7263, 71eqtr2d 2657 . . . . 5 (𝜑 → (𝐹𝐴) = sup({0, (𝐹𝐴)}, ℝ*, < ))
7372adantr 481 . . . 4 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → (𝐹𝐴) = sup({0, (𝐹𝐴)}, ℝ*, < ))
74 pwsn 4428 . . . . . . . . . . . 12 𝒫 {𝐴} = {∅, {𝐴}}
7574ineq1i 3810 . . . . . . . . . . 11 (𝒫 {𝐴} ∩ Fin) = ({∅, {𝐴}} ∩ Fin)
76 0fin 8188 . . . . . . . . . . . . 13 ∅ ∈ Fin
77 snfi 8038 . . . . . . . . . . . . 13 {𝐴} ∈ Fin
78 prssi 4353 . . . . . . . . . . . . 13 ((∅ ∈ Fin ∧ {𝐴} ∈ Fin) → {∅, {𝐴}} ⊆ Fin)
7976, 77, 78mp2an 708 . . . . . . . . . . . 12 {∅, {𝐴}} ⊆ Fin
80 df-ss 3588 . . . . . . . . . . . . 13 ({∅, {𝐴}} ⊆ Fin ↔ ({∅, {𝐴}} ∩ Fin) = {∅, {𝐴}})
8180biimpi 206 . . . . . . . . . . . 12 ({∅, {𝐴}} ⊆ Fin → ({∅, {𝐴}} ∩ Fin) = {∅, {𝐴}})
8279, 81ax-mp 5 . . . . . . . . . . 11 ({∅, {𝐴}} ∩ Fin) = {∅, {𝐴}}
8375, 82eqtri 2644 . . . . . . . . . 10 (𝒫 {𝐴} ∩ Fin) = {∅, {𝐴}}
84 mpteq1 4737 . . . . . . . . . 10 ((𝒫 {𝐴} ∩ Fin) = {∅, {𝐴}} → (𝑥 ∈ (𝒫 {𝐴} ∩ Fin) ↦ Σ𝑦𝑥 (𝐹𝑦)) = (𝑥 ∈ {∅, {𝐴}} ↦ Σ𝑦𝑥 (𝐹𝑦)))
8583, 84ax-mp 5 . . . . . . . . 9 (𝑥 ∈ (𝒫 {𝐴} ∩ Fin) ↦ Σ𝑦𝑥 (𝐹𝑦)) = (𝑥 ∈ {∅, {𝐴}} ↦ Σ𝑦𝑥 (𝐹𝑦))
86 0ex 4790 . . . . . . . . . . . . 13 ∅ ∈ V
8786a1i 11 . . . . . . . . . . . 12 (⊤ → ∅ ∈ V)
881a1i 11 . . . . . . . . . . . 12 (⊤ → {𝐴} ∈ V)
89 sumex 14418 . . . . . . . . . . . . 13 Σ𝑦 ∈ ∅ (𝐹𝑦) ∈ V
9089a1i 11 . . . . . . . . . . . 12 (⊤ → Σ𝑦 ∈ ∅ (𝐹𝑦) ∈ V)
91 sumex 14418 . . . . . . . . . . . . 13 Σ𝑦 ∈ {𝐴} (𝐹𝑦) ∈ V
9291a1i 11 . . . . . . . . . . . 12 (⊤ → Σ𝑦 ∈ {𝐴} (𝐹𝑦) ∈ V)
93 sumeq1 14419 . . . . . . . . . . . . 13 (𝑥 = ∅ → Σ𝑦𝑥 (𝐹𝑦) = Σ𝑦 ∈ ∅ (𝐹𝑦))
9493adantl 482 . . . . . . . . . . . 12 ((⊤ ∧ 𝑥 = ∅) → Σ𝑦𝑥 (𝐹𝑦) = Σ𝑦 ∈ ∅ (𝐹𝑦))
95 sumeq1 14419 . . . . . . . . . . . . 13 (𝑥 = {𝐴} → Σ𝑦𝑥 (𝐹𝑦) = Σ𝑦 ∈ {𝐴} (𝐹𝑦))
9695adantl 482 . . . . . . . . . . . 12 ((⊤ ∧ 𝑥 = {𝐴}) → Σ𝑦𝑥 (𝐹𝑦) = Σ𝑦 ∈ {𝐴} (𝐹𝑦))
9787, 88, 90, 92, 94, 96fmptpr 6438 . . . . . . . . . . 11 (⊤ → {⟨∅, Σ𝑦 ∈ ∅ (𝐹𝑦)⟩, ⟨{𝐴}, Σ𝑦 ∈ {𝐴} (𝐹𝑦)⟩} = (𝑥 ∈ {∅, {𝐴}} ↦ Σ𝑦𝑥 (𝐹𝑦)))
9897trud 1493 . . . . . . . . . 10 {⟨∅, Σ𝑦 ∈ ∅ (𝐹𝑦)⟩, ⟨{𝐴}, Σ𝑦 ∈ {𝐴} (𝐹𝑦)⟩} = (𝑥 ∈ {∅, {𝐴}} ↦ Σ𝑦𝑥 (𝐹𝑦))
9998eqcomi 2631 . . . . . . . . 9 (𝑥 ∈ {∅, {𝐴}} ↦ Σ𝑦𝑥 (𝐹𝑦)) = {⟨∅, Σ𝑦 ∈ ∅ (𝐹𝑦)⟩, ⟨{𝐴}, Σ𝑦 ∈ {𝐴} (𝐹𝑦)⟩}
10085, 99eqtri 2644 . . . . . . . 8 (𝑥 ∈ (𝒫 {𝐴} ∩ Fin) ↦ Σ𝑦𝑥 (𝐹𝑦)) = {⟨∅, Σ𝑦 ∈ ∅ (𝐹𝑦)⟩, ⟨{𝐴}, Σ𝑦 ∈ {𝐴} (𝐹𝑦)⟩}
101100rneqi 5352 . . . . . . 7 ran (𝑥 ∈ (𝒫 {𝐴} ∩ Fin) ↦ Σ𝑦𝑥 (𝐹𝑦)) = ran {⟨∅, Σ𝑦 ∈ ∅ (𝐹𝑦)⟩, ⟨{𝐴}, Σ𝑦 ∈ {𝐴} (𝐹𝑦)⟩}
102 rnpropg 5615 . . . . . . . 8 ((∅ ∈ V ∧ {𝐴} ∈ V) → ran {⟨∅, Σ𝑦 ∈ ∅ (𝐹𝑦)⟩, ⟨{𝐴}, Σ𝑦 ∈ {𝐴} (𝐹𝑦)⟩} = {Σ𝑦 ∈ ∅ (𝐹𝑦), Σ𝑦 ∈ {𝐴} (𝐹𝑦)})
10386, 1, 102mp2an 708 . . . . . . 7 ran {⟨∅, Σ𝑦 ∈ ∅ (𝐹𝑦)⟩, ⟨{𝐴}, Σ𝑦 ∈ {𝐴} (𝐹𝑦)⟩} = {Σ𝑦 ∈ ∅ (𝐹𝑦), Σ𝑦 ∈ {𝐴} (𝐹𝑦)}
104101, 103eqtri 2644 . . . . . 6 ran (𝑥 ∈ (𝒫 {𝐴} ∩ Fin) ↦ Σ𝑦𝑥 (𝐹𝑦)) = {Σ𝑦 ∈ ∅ (𝐹𝑦), Σ𝑦 ∈ {𝐴} (𝐹𝑦)}
105104supeq1i 8353 . . . . 5 sup(ran (𝑥 ∈ (𝒫 {𝐴} ∩ Fin) ↦ Σ𝑦𝑥 (𝐹𝑦)), ℝ*, < ) = sup({Σ𝑦 ∈ ∅ (𝐹𝑦), Σ𝑦 ∈ {𝐴} (𝐹𝑦)}, ℝ*, < )
106105a1i 11 . . . 4 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → sup(ran (𝑥 ∈ (𝒫 {𝐴} ∩ Fin) ↦ Σ𝑦𝑥 (𝐹𝑦)), ℝ*, < ) = sup({Σ𝑦 ∈ ∅ (𝐹𝑦), Σ𝑦 ∈ {𝐴} (𝐹𝑦)}, ℝ*, < ))
10754, 73, 1063eqtr4d 2666 . . 3 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → (𝐹𝐴) = sup(ran (𝑥 ∈ (𝒫 {𝐴} ∩ Fin) ↦ Σ𝑦𝑥 (𝐹𝑦)), ℝ*, < ))
10836, 107eqtr4d 2659 . 2 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → (Σ^𝐹) = (𝐹𝐴))
10924, 108pm2.61dan 832 1 (𝜑 → (Σ^𝐹) = (𝐹𝐴))
Colors of variables: wff setvar class
Syntax hints:  ¬ wn 3  wi 4  wa 384  w3a 1037   = wceq 1483  wtru 1484  wcel 1990  Vcvv 3200  cin 3573  wss 3574  c0 3915  ifcif 4086  𝒫 cpw 4158  {csn 4177  {cpr 4179  cop 4183   class class class wbr 4653  cmpt 4729   Or wor 5034  dom cdm 5114  ran crn 5115  Fun wfun 5882  wf 5884  cfv 5888  (class class class)co 6650  Fincfn 7955  supcsup 8346  cc 9934  cr 9935  0cc0 9936  +∞cpnf 10071  *cxr 10073   < clt 10074  cle 10075  [,)cico 12177  [,]cicc 12178  Σcsu 14416  Σ^csumge0 40579
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1722  ax-4 1737  ax-5 1839  ax-6 1888  ax-7 1935  ax-8 1992  ax-9 1999  ax-10 2019  ax-11 2034  ax-12 2047  ax-13 2246  ax-ext 2602  ax-rep 4771  ax-sep 4781  ax-nul 4789  ax-pow 4843  ax-pr 4906  ax-un 6949  ax-inf2 8538  ax-cnex 9992  ax-resscn 9993  ax-1cn 9994  ax-icn 9995  ax-addcl 9996  ax-addrcl 9997  ax-mulcl 9998  ax-mulrcl 9999  ax-mulcom 10000  ax-addass 10001  ax-mulass 10002  ax-distr 10003  ax-i2m1 10004  ax-1ne0 10005  ax-1rid 10006  ax-rnegex 10007  ax-rrecex 10008  ax-cnre 10009  ax-pre-lttri 10010  ax-pre-lttrn 10011  ax-pre-ltadd 10012  ax-pre-mulgt0 10013  ax-pre-sup 10014
This theorem depends on definitions:  df-bi 197  df-or 385  df-an 386  df-3or 1038  df-3an 1039  df-tru 1486  df-fal 1489  df-ex 1705  df-nf 1710  df-sb 1881  df-eu 2474  df-mo 2475  df-clab 2609  df-cleq 2615  df-clel 2618  df-nfc 2753  df-ne 2795  df-nel 2898  df-ral 2917  df-rex 2918  df-reu 2919  df-rmo 2920  df-rab 2921  df-v 3202  df-sbc 3436  df-csb 3534  df-dif 3577  df-un 3579  df-in 3581  df-ss 3588  df-pss 3590  df-nul 3916  df-if 4087  df-pw 4160  df-sn 4178  df-pr 4180  df-tp 4182  df-op 4184  df-uni 4437  df-int 4476  df-iun 4522  df-br 4654  df-opab 4713  df-mpt 4730  df-tr 4753  df-id 5024  df-eprel 5029  df-po 5035  df-so 5036  df-fr 5073  df-se 5074  df-we 5075  df-xp 5120  df-rel 5121  df-cnv 5122  df-co 5123  df-dm 5124  df-rn 5125  df-res 5126  df-ima 5127  df-pred 5680  df-ord 5726  df-on 5727  df-lim 5728  df-suc 5729  df-iota 5851  df-fun 5890  df-fn 5891  df-f 5892  df-f1 5893  df-fo 5894  df-f1o 5895  df-fv 5896  df-isom 5897  df-riota 6611  df-ov 6653  df-oprab 6654  df-mpt2 6655  df-om 7066  df-1st 7168  df-2nd 7169  df-wrecs 7407  df-recs 7468  df-rdg 7506  df-1o 7560  df-oadd 7564  df-er 7742  df-en 7956  df-dom 7957  df-sdom 7958  df-fin 7959  df-sup 8348  df-oi 8415  df-card 8765  df-pnf 10076  df-mnf 10077  df-xr 10078  df-ltxr 10079  df-le 10080  df-sub 10268  df-neg 10269  df-div 10685  df-nn 11021  df-2 11079  df-3 11080  df-n0 11293  df-z 11378  df-uz 11688  df-rp 11833  df-ico 12181  df-icc 12182  df-fz 12327  df-fzo 12466  df-seq 12802  df-exp 12861  df-hash 13118  df-cj 13839  df-re 13840  df-im 13841  df-sqrt 13975  df-abs 13976  df-clim 14219  df-sum 14417  df-sumge0 40580
This theorem is referenced by:  sge0snmpt  40600  sge0sup  40608  sge0snmptf  40654  caratheodorylem1  40740
  Copyright terms: Public domain W3C validator