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 39272
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 4835 . . . . 5 {𝐴} ∈ V
21a1i 11 . . . 4 ((𝜑 ∧ (𝐹𝐴) = +∞) → {𝐴} ∈ V)
3 sge0sn.2 . . . . 5 (𝜑𝐹:{𝐴}⟶(0[,]+∞))
43adantr 480 . . . 4 ((𝜑 ∧ (𝐹𝐴) = +∞) → 𝐹:{𝐴}⟶(0[,]+∞))
5 id 22 . . . . . . 7 ((𝐹𝐴) = +∞ → (𝐹𝐴) = +∞)
65eqcomd 2616 . . . . . 6 ((𝐹𝐴) = +∞ → +∞ = (𝐹𝐴))
76adantl 481 . . . . 5 ((𝜑 ∧ (𝐹𝐴) = +∞) → +∞ = (𝐹𝐴))
8 ffun 5961 . . . . . . . 8 (𝐹:{𝐴}⟶(0[,]+∞) → Fun 𝐹)
93, 8syl 17 . . . . . . 7 (𝜑 → Fun 𝐹)
109adantr 480 . . . . . 6 ((𝜑 ∧ (𝐹𝐴) = +∞) → Fun 𝐹)
11 sge0sn.1 . . . . . . . . 9 (𝜑𝐴𝑉)
12 snidg 4153 . . . . . . . . 9 (𝐴𝑉𝐴 ∈ {𝐴})
1311, 12syl 17 . . . . . . . 8 (𝜑𝐴 ∈ {𝐴})
14 fdm 5964 . . . . . . . . . 10 (𝐹:{𝐴}⟶(0[,]+∞) → dom 𝐹 = {𝐴})
153, 14syl 17 . . . . . . . . 9 (𝜑 → dom 𝐹 = {𝐴})
1615eqcomd 2616 . . . . . . . 8 (𝜑 → {𝐴} = dom 𝐹)
1713, 16eleqtrd 2690 . . . . . . 7 (𝜑𝐴 ∈ dom 𝐹)
1817adantr 480 . . . . . 6 ((𝜑 ∧ (𝐹𝐴) = +∞) → 𝐴 ∈ dom 𝐹)
19 fvelrn 6260 . . . . . 6 ((Fun 𝐹𝐴 ∈ dom 𝐹) → (𝐹𝐴) ∈ ran 𝐹)
2010, 18, 19syl2anc 691 . . . . 5 ((𝜑 ∧ (𝐹𝐴) = +∞) → (𝐹𝐴) ∈ ran 𝐹)
217, 20eqeltrd 2688 . . . 4 ((𝜑 ∧ (𝐹𝐴) = +∞) → +∞ ∈ ran 𝐹)
222, 4, 21sge0pnfval 39266 . . 3 ((𝜑 ∧ (𝐹𝐴) = +∞) → (Σ^𝐹) = +∞)
23 simpr 476 . . 3 ((𝜑 ∧ (𝐹𝐴) = +∞) → (𝐹𝐴) = +∞)
2422, 23eqtr4d 2647 . 2 ((𝜑 ∧ (𝐹𝐴) = +∞) → (Σ^𝐹) = (𝐹𝐴))
251a1i 11 . . . 4 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → {𝐴} ∈ V)
263adantr 480 . . . . 5 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → 𝐹:{𝐴}⟶(0[,]+∞))
27 elsni 4142 . . . . . . . . 9 (+∞ ∈ {(𝐹𝐴)} → +∞ = (𝐹𝐴))
2827eqcomd 2616 . . . . . . . 8 (+∞ ∈ {(𝐹𝐴)} → (𝐹𝐴) = +∞)
2928con3i 149 . . . . . . 7 (¬ (𝐹𝐴) = +∞ → ¬ +∞ ∈ {(𝐹𝐴)})
3029adantl 481 . . . . . 6 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → ¬ +∞ ∈ {(𝐹𝐴)})
3111, 3rnsnf 38365 . . . . . . . 8 (𝜑 → ran 𝐹 = {(𝐹𝐴)})
3231eqcomd 2616 . . . . . . 7 (𝜑 → {(𝐹𝐴)} = ran 𝐹)
3332adantr 480 . . . . . 6 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → {(𝐹𝐴)} = ran 𝐹)
3430, 33neleqtrd 2709 . . . . 5 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → ¬ +∞ ∈ ran 𝐹)
3526, 34fge0iccico 39263 . . . 4 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → 𝐹:{𝐴}⟶(0[,)+∞))
3625, 35sge0reval 39265 . . 3 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → (Σ^𝐹) = sup(ran (𝑥 ∈ (𝒫 {𝐴} ∩ Fin) ↦ Σ𝑦𝑥 (𝐹𝑦)), ℝ*, < ))
37 sum0 14299 . . . . . . . 8 Σ𝑦 ∈ ∅ (𝐹𝑦) = 0
3837eqcomi 2619 . . . . . . 7 0 = Σ𝑦 ∈ ∅ (𝐹𝑦)
3938a1i 11 . . . . . 6 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → 0 = Σ𝑦 ∈ ∅ (𝐹𝑦))
40 nfcvd 2752 . . . . . . . 8 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → 𝑦(𝐹𝐴))
41 nfv 1830 . . . . . . . 8 𝑦(𝜑 ∧ ¬ (𝐹𝐴) = +∞)
42 fveq2 6103 . . . . . . . . 9 (𝑦 = 𝐴 → (𝐹𝑦) = (𝐹𝐴))
4342adantl 481 . . . . . . . 8 (((𝜑 ∧ ¬ (𝐹𝐴) = +∞) ∧ 𝑦 = 𝐴) → (𝐹𝑦) = (𝐹𝐴))
4411adantr 480 . . . . . . . 8 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → 𝐴𝑉)
45 rge0ssre 12151 . . . . . . . . . 10 (0[,)+∞) ⊆ ℝ
46 ax-resscn 9872 . . . . . . . . . 10 ℝ ⊆ ℂ
4745, 46sstri 3577 . . . . . . . . 9 (0[,)+∞) ⊆ ℂ
4844, 12syl 17 . . . . . . . . . 10 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → 𝐴 ∈ {𝐴})
4935, 48ffvelrnd 6268 . . . . . . . . 9 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → (𝐹𝐴) ∈ (0[,)+∞))
5047, 49sseldi 3566 . . . . . . . 8 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → (𝐹𝐴) ∈ ℂ)
5140, 41, 43, 44, 50sumsnd 38208 . . . . . . 7 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → Σ𝑦 ∈ {𝐴} (𝐹𝑦) = (𝐹𝐴))
5251eqcomd 2616 . . . . . 6 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → (𝐹𝐴) = Σ𝑦 ∈ {𝐴} (𝐹𝑦))
5339, 52preq12d 4220 . . . . 5 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → {0, (𝐹𝐴)} = {Σ𝑦 ∈ ∅ (𝐹𝑦), Σ𝑦 ∈ {𝐴} (𝐹𝑦)})
5453supeq1d 8235 . . . 4 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → sup({0, (𝐹𝐴)}, ℝ*, < ) = sup({Σ𝑦 ∈ ∅ (𝐹𝑦), Σ𝑦 ∈ {𝐴} (𝐹𝑦)}, ℝ*, < ))
55 xrltso 11850 . . . . . . . 8 < Or ℝ*
5655a1i 11 . . . . . . 7 (𝜑 → < Or ℝ*)
57 0xr 9965 . . . . . . . 8 0 ∈ ℝ*
5857a1i 11 . . . . . . 7 (𝜑 → 0 ∈ ℝ*)
59 iccssxr 12127 . . . . . . . 8 (0[,]+∞) ⊆ ℝ*
603, 13ffvelrnd 6268 . . . . . . . 8 (𝜑 → (𝐹𝐴) ∈ (0[,]+∞))
6159, 60sseldi 3566 . . . . . . 7 (𝜑 → (𝐹𝐴) ∈ ℝ*)
62 suppr 8260 . . . . . . 7 (( < Or ℝ* ∧ 0 ∈ ℝ* ∧ (𝐹𝐴) ∈ ℝ*) → sup({0, (𝐹𝐴)}, ℝ*, < ) = if((𝐹𝐴) < 0, 0, (𝐹𝐴)))
6356, 58, 61, 62syl3anc 1318 . . . . . 6 (𝜑 → sup({0, (𝐹𝐴)}, ℝ*, < ) = if((𝐹𝐴) < 0, 0, (𝐹𝐴)))
64 pnfxr 9971 . . . . . . . . . . 11 +∞ ∈ ℝ*
6564a1i 11 . . . . . . . . . 10 (𝜑 → +∞ ∈ ℝ*)
6658, 65, 603jca 1235 . . . . . . . . 9 (𝜑 → (0 ∈ ℝ* ∧ +∞ ∈ ℝ* ∧ (𝐹𝐴) ∈ (0[,]+∞)))
67 iccgelb 12101 . . . . . . . . 9 ((0 ∈ ℝ* ∧ +∞ ∈ ℝ* ∧ (𝐹𝐴) ∈ (0[,]+∞)) → 0 ≤ (𝐹𝐴))
6866, 67syl 17 . . . . . . . 8 (𝜑 → 0 ≤ (𝐹𝐴))
6958, 61xrlenltd 9983 . . . . . . . 8 (𝜑 → (0 ≤ (𝐹𝐴) ↔ ¬ (𝐹𝐴) < 0))
7068, 69mpbid 221 . . . . . . 7 (𝜑 → ¬ (𝐹𝐴) < 0)
7170iffalsed 4047 . . . . . 6 (𝜑 → if((𝐹𝐴) < 0, 0, (𝐹𝐴)) = (𝐹𝐴))
7263, 71eqtr2d 2645 . . . . 5 (𝜑 → (𝐹𝐴) = sup({0, (𝐹𝐴)}, ℝ*, < ))
7372adantr 480 . . . 4 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → (𝐹𝐴) = sup({0, (𝐹𝐴)}, ℝ*, < ))
74 pwsn 4366 . . . . . . . . . . . 12 𝒫 {𝐴} = {∅, {𝐴}}
7574ineq1i 3772 . . . . . . . . . . 11 (𝒫 {𝐴} ∩ Fin) = ({∅, {𝐴}} ∩ Fin)
76 0fin 8073 . . . . . . . . . . . . 13 ∅ ∈ Fin
77 snfi 7923 . . . . . . . . . . . . 13 {𝐴} ∈ Fin
78 prssi 4293 . . . . . . . . . . . . 13 ((∅ ∈ Fin ∧ {𝐴} ∈ Fin) → {∅, {𝐴}} ⊆ Fin)
7976, 77, 78mp2an 704 . . . . . . . . . . . 12 {∅, {𝐴}} ⊆ Fin
80 df-ss 3554 . . . . . . . . . . . . 13 ({∅, {𝐴}} ⊆ Fin ↔ ({∅, {𝐴}} ∩ Fin) = {∅, {𝐴}})
8180biimpi 205 . . . . . . . . . . . 12 ({∅, {𝐴}} ⊆ Fin → ({∅, {𝐴}} ∩ Fin) = {∅, {𝐴}})
8279, 81ax-mp 5 . . . . . . . . . . 11 ({∅, {𝐴}} ∩ Fin) = {∅, {𝐴}}
8375, 82eqtri 2632 . . . . . . . . . 10 (𝒫 {𝐴} ∩ Fin) = {∅, {𝐴}}
84 mpteq1 4665 . . . . . . . . . 10 ((𝒫 {𝐴} ∩ Fin) = {∅, {𝐴}} → (𝑥 ∈ (𝒫 {𝐴} ∩ Fin) ↦ Σ𝑦𝑥 (𝐹𝑦)) = (𝑥 ∈ {∅, {𝐴}} ↦ Σ𝑦𝑥 (𝐹𝑦)))
8583, 84ax-mp 5 . . . . . . . . 9 (𝑥 ∈ (𝒫 {𝐴} ∩ Fin) ↦ Σ𝑦𝑥 (𝐹𝑦)) = (𝑥 ∈ {∅, {𝐴}} ↦ Σ𝑦𝑥 (𝐹𝑦))
86 0ex 4718 . . . . . . . . . . . . 13 ∅ ∈ V
8786a1i 11 . . . . . . . . . . . 12 (⊤ → ∅ ∈ V)
881a1i 11 . . . . . . . . . . . 12 (⊤ → {𝐴} ∈ V)
89 sumex 14266 . . . . . . . . . . . . 13 Σ𝑦 ∈ ∅ (𝐹𝑦) ∈ V
9089a1i 11 . . . . . . . . . . . 12 (⊤ → Σ𝑦 ∈ ∅ (𝐹𝑦) ∈ V)
91 sumex 14266 . . . . . . . . . . . . 13 Σ𝑦 ∈ {𝐴} (𝐹𝑦) ∈ V
9291a1i 11 . . . . . . . . . . . 12 (⊤ → Σ𝑦 ∈ {𝐴} (𝐹𝑦) ∈ V)
93 sumeq1 14267 . . . . . . . . . . . . 13 (𝑥 = ∅ → Σ𝑦𝑥 (𝐹𝑦) = Σ𝑦 ∈ ∅ (𝐹𝑦))
9493adantl 481 . . . . . . . . . . . 12 ((⊤ ∧ 𝑥 = ∅) → Σ𝑦𝑥 (𝐹𝑦) = Σ𝑦 ∈ ∅ (𝐹𝑦))
95 sumeq1 14267 . . . . . . . . . . . . 13 (𝑥 = {𝐴} → Σ𝑦𝑥 (𝐹𝑦) = Σ𝑦 ∈ {𝐴} (𝐹𝑦))
9695adantl 481 . . . . . . . . . . . 12 ((⊤ ∧ 𝑥 = {𝐴}) → Σ𝑦𝑥 (𝐹𝑦) = Σ𝑦 ∈ {𝐴} (𝐹𝑦))
9787, 88, 90, 92, 94, 96fmptpr 6343 . . . . . . . . . . 11 (⊤ → {⟨∅, Σ𝑦 ∈ ∅ (𝐹𝑦)⟩, ⟨{𝐴}, Σ𝑦 ∈ {𝐴} (𝐹𝑦)⟩} = (𝑥 ∈ {∅, {𝐴}} ↦ Σ𝑦𝑥 (𝐹𝑦)))
9897trud 1484 . . . . . . . . . 10 {⟨∅, Σ𝑦 ∈ ∅ (𝐹𝑦)⟩, ⟨{𝐴}, Σ𝑦 ∈ {𝐴} (𝐹𝑦)⟩} = (𝑥 ∈ {∅, {𝐴}} ↦ Σ𝑦𝑥 (𝐹𝑦))
9998eqcomi 2619 . . . . . . . . 9 (𝑥 ∈ {∅, {𝐴}} ↦ Σ𝑦𝑥 (𝐹𝑦)) = {⟨∅, Σ𝑦 ∈ ∅ (𝐹𝑦)⟩, ⟨{𝐴}, Σ𝑦 ∈ {𝐴} (𝐹𝑦)⟩}
10085, 99eqtri 2632 . . . . . . . 8 (𝑥 ∈ (𝒫 {𝐴} ∩ Fin) ↦ Σ𝑦𝑥 (𝐹𝑦)) = {⟨∅, Σ𝑦 ∈ ∅ (𝐹𝑦)⟩, ⟨{𝐴}, Σ𝑦 ∈ {𝐴} (𝐹𝑦)⟩}
101100rneqi 5273 . . . . . . 7 ran (𝑥 ∈ (𝒫 {𝐴} ∩ Fin) ↦ Σ𝑦𝑥 (𝐹𝑦)) = ran {⟨∅, Σ𝑦 ∈ ∅ (𝐹𝑦)⟩, ⟨{𝐴}, Σ𝑦 ∈ {𝐴} (𝐹𝑦)⟩}
102 rnpropg 5533 . . . . . . . 8 ((∅ ∈ V ∧ {𝐴} ∈ V) → ran {⟨∅, Σ𝑦 ∈ ∅ (𝐹𝑦)⟩, ⟨{𝐴}, Σ𝑦 ∈ {𝐴} (𝐹𝑦)⟩} = {Σ𝑦 ∈ ∅ (𝐹𝑦), Σ𝑦 ∈ {𝐴} (𝐹𝑦)})
10386, 1, 102mp2an 704 . . . . . . 7 ran {⟨∅, Σ𝑦 ∈ ∅ (𝐹𝑦)⟩, ⟨{𝐴}, Σ𝑦 ∈ {𝐴} (𝐹𝑦)⟩} = {Σ𝑦 ∈ ∅ (𝐹𝑦), Σ𝑦 ∈ {𝐴} (𝐹𝑦)}
104101, 103eqtri 2632 . . . . . 6 ran (𝑥 ∈ (𝒫 {𝐴} ∩ Fin) ↦ Σ𝑦𝑥 (𝐹𝑦)) = {Σ𝑦 ∈ ∅ (𝐹𝑦), Σ𝑦 ∈ {𝐴} (𝐹𝑦)}
105104supeq1i 8236 . . . . 5 sup(ran (𝑥 ∈ (𝒫 {𝐴} ∩ Fin) ↦ Σ𝑦𝑥 (𝐹𝑦)), ℝ*, < ) = sup({Σ𝑦 ∈ ∅ (𝐹𝑦), Σ𝑦 ∈ {𝐴} (𝐹𝑦)}, ℝ*, < )
106105a1i 11 . . . 4 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → sup(ran (𝑥 ∈ (𝒫 {𝐴} ∩ Fin) ↦ Σ𝑦𝑥 (𝐹𝑦)), ℝ*, < ) = sup({Σ𝑦 ∈ ∅ (𝐹𝑦), Σ𝑦 ∈ {𝐴} (𝐹𝑦)}, ℝ*, < ))
10754, 73, 1063eqtr4d 2654 . . 3 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → (𝐹𝐴) = sup(ran (𝑥 ∈ (𝒫 {𝐴} ∩ Fin) ↦ Σ𝑦𝑥 (𝐹𝑦)), ℝ*, < ))
10836, 107eqtr4d 2647 . 2 ((𝜑 ∧ ¬ (𝐹𝐴) = +∞) → (Σ^𝐹) = (𝐹𝐴))
10924, 108pm2.61dan 828 1 (𝜑 → (Σ^𝐹) = (𝐹𝐴))
Colors of variables: wff setvar class
Syntax hints:  ¬ wn 3  wi 4  wa 383  w3a 1031   = wceq 1475  wtru 1476  wcel 1977  Vcvv 3173  cin 3539  wss 3540  c0 3874  ifcif 4036  𝒫 cpw 4108  {csn 4125  {cpr 4127  cop 4131   class class class wbr 4583  cmpt 4643   Or wor 4958  dom cdm 5038  ran crn 5039  Fun wfun 5798  wf 5800  cfv 5804  (class class class)co 6549  Fincfn 7841  supcsup 8229  cc 9813  cr 9814  0cc0 9815  +∞cpnf 9950  *cxr 9952   < clt 9953  cle 9954  [,)cico 12048  [,]cicc 12049  Σcsu 14264  Σ^csumge0 39255
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1713  ax-4 1728  ax-5 1827  ax-6 1875  ax-7 1922  ax-8 1979  ax-9 1986  ax-10 2006  ax-11 2021  ax-12 2034  ax-13 2234  ax-ext 2590  ax-rep 4699  ax-sep 4709  ax-nul 4717  ax-pow 4769  ax-pr 4833  ax-un 6847  ax-inf2 8421  ax-cnex 9871  ax-resscn 9872  ax-1cn 9873  ax-icn 9874  ax-addcl 9875  ax-addrcl 9876  ax-mulcl 9877  ax-mulrcl 9878  ax-mulcom 9879  ax-addass 9880  ax-mulass 9881  ax-distr 9882  ax-i2m1 9883  ax-1ne0 9884  ax-1rid 9885  ax-rnegex 9886  ax-rrecex 9887  ax-cnre 9888  ax-pre-lttri 9889  ax-pre-lttrn 9890  ax-pre-ltadd 9891  ax-pre-mulgt0 9892  ax-pre-sup 9893
This theorem depends on definitions:  df-bi 196  df-or 384  df-an 385  df-3or 1032  df-3an 1033  df-tru 1478  df-fal 1481  df-ex 1696  df-nf 1701  df-sb 1868  df-eu 2462  df-mo 2463  df-clab 2597  df-cleq 2603  df-clel 2606  df-nfc 2740  df-ne 2782  df-nel 2783  df-ral 2901  df-rex 2902  df-reu 2903  df-rmo 2904  df-rab 2905  df-v 3175  df-sbc 3403  df-csb 3500  df-dif 3543  df-un 3545  df-in 3547  df-ss 3554  df-pss 3556  df-nul 3875  df-if 4037  df-pw 4110  df-sn 4126  df-pr 4128  df-tp 4130  df-op 4132  df-uni 4373  df-int 4411  df-iun 4457  df-br 4584  df-opab 4644  df-mpt 4645  df-tr 4681  df-eprel 4949  df-id 4953  df-po 4959  df-so 4960  df-fr 4997  df-se 4998  df-we 4999  df-xp 5044  df-rel 5045  df-cnv 5046  df-co 5047  df-dm 5048  df-rn 5049  df-res 5050  df-ima 5051  df-pred 5597  df-ord 5643  df-on 5644  df-lim 5645  df-suc 5646  df-iota 5768  df-fun 5806  df-fn 5807  df-f 5808  df-f1 5809  df-fo 5810  df-f1o 5811  df-fv 5812  df-isom 5813  df-riota 6511  df-ov 6552  df-oprab 6553  df-mpt2 6554  df-om 6958  df-1st 7059  df-2nd 7060  df-wrecs 7294  df-recs 7355  df-rdg 7393  df-1o 7447  df-oadd 7451  df-er 7629  df-en 7842  df-dom 7843  df-sdom 7844  df-fin 7845  df-sup 8231  df-oi 8298  df-card 8648  df-pnf 9955  df-mnf 9956  df-xr 9957  df-ltxr 9958  df-le 9959  df-sub 10147  df-neg 10148  df-div 10564  df-nn 10898  df-2 10956  df-3 10957  df-n0 11170  df-z 11255  df-uz 11564  df-rp 11709  df-ico 12052  df-icc 12053  df-fz 12198  df-fzo 12335  df-seq 12664  df-exp 12723  df-hash 12980  df-cj 13687  df-re 13688  df-im 13689  df-sqrt 13823  df-abs 13824  df-clim 14067  df-sum 14265  df-sumge0 39256
This theorem is referenced by:  sge0snmpt  39276  sge0sup  39284  sge0snmptf  39330  caratheodorylem1  39416
  Copyright terms: Public domain W3C validator