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

Theorem mbfadd 23827
Description: The sum of two measurable functions is measurable. (Contributed by Mario Carneiro, 15-Aug-2014.)
Hypotheses
Ref Expression
mbfadd.1 (𝜑𝐹 ∈ MblFn)
mbfadd.2 (𝜑𝐺 ∈ MblFn)
Assertion
Ref Expression
mbfadd (𝜑 → (𝐹𝑓 + 𝐺) ∈ MblFn)

Proof of Theorem mbfadd
Dummy variable 𝑥 is distinct from all other variables.
StepHypRef Expression
1 mbfadd.1 . . . . 5 (𝜑𝐹 ∈ MblFn)
2 mbff 23791 . . . . 5 (𝐹 ∈ MblFn → 𝐹:dom 𝐹⟶ℂ)
31, 2syl 17 . . . 4 (𝜑𝐹:dom 𝐹⟶ℂ)
43ffnd 6279 . . 3 (𝜑𝐹 Fn dom 𝐹)
5 mbfadd.2 . . . . 5 (𝜑𝐺 ∈ MblFn)
6 mbff 23791 . . . . 5 (𝐺 ∈ MblFn → 𝐺:dom 𝐺⟶ℂ)
75, 6syl 17 . . . 4 (𝜑𝐺:dom 𝐺⟶ℂ)
87ffnd 6279 . . 3 (𝜑𝐺 Fn dom 𝐺)
9 mbfdm 23792 . . . 4 (𝐹 ∈ MblFn → dom 𝐹 ∈ dom vol)
101, 9syl 17 . . 3 (𝜑 → dom 𝐹 ∈ dom vol)
11 mbfdm 23792 . . . 4 (𝐺 ∈ MblFn → dom 𝐺 ∈ dom vol)
125, 11syl 17 . . 3 (𝜑 → dom 𝐺 ∈ dom vol)
13 eqid 2825 . . 3 (dom 𝐹 ∩ dom 𝐺) = (dom 𝐹 ∩ dom 𝐺)
14 eqidd 2826 . . 3 ((𝜑𝑥 ∈ dom 𝐹) → (𝐹𝑥) = (𝐹𝑥))
15 eqidd 2826 . . 3 ((𝜑𝑥 ∈ dom 𝐺) → (𝐺𝑥) = (𝐺𝑥))
164, 8, 10, 12, 13, 14, 15offval 7164 . 2 (𝜑 → (𝐹𝑓 + 𝐺) = (𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ ((𝐹𝑥) + (𝐺𝑥))))
17 elin 4023 . . . . . . . . 9 (𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↔ (𝑥 ∈ dom 𝐹𝑥 ∈ dom 𝐺))
1817simplbi 493 . . . . . . . 8 (𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) → 𝑥 ∈ dom 𝐹)
19 ffvelrn 6606 . . . . . . . 8 ((𝐹:dom 𝐹⟶ℂ ∧ 𝑥 ∈ dom 𝐹) → (𝐹𝑥) ∈ ℂ)
203, 18, 19syl2an 591 . . . . . . 7 ((𝜑𝑥 ∈ (dom 𝐹 ∩ dom 𝐺)) → (𝐹𝑥) ∈ ℂ)
2117simprbi 492 . . . . . . . 8 (𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) → 𝑥 ∈ dom 𝐺)
22 ffvelrn 6606 . . . . . . . 8 ((𝐺:dom 𝐺⟶ℂ ∧ 𝑥 ∈ dom 𝐺) → (𝐺𝑥) ∈ ℂ)
237, 21, 22syl2an 591 . . . . . . 7 ((𝜑𝑥 ∈ (dom 𝐹 ∩ dom 𝐺)) → (𝐺𝑥) ∈ ℂ)
2420, 23readdd 14331 . . . . . 6 ((𝜑𝑥 ∈ (dom 𝐹 ∩ dom 𝐺)) → (ℜ‘((𝐹𝑥) + (𝐺𝑥))) = ((ℜ‘(𝐹𝑥)) + (ℜ‘(𝐺𝑥))))
2524mpteq2dva 4967 . . . . 5 (𝜑 → (𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ (ℜ‘((𝐹𝑥) + (𝐺𝑥)))) = (𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ ((ℜ‘(𝐹𝑥)) + (ℜ‘(𝐺𝑥)))))
26 inmbl 23708 . . . . . . 7 ((dom 𝐹 ∈ dom vol ∧ dom 𝐺 ∈ dom vol) → (dom 𝐹 ∩ dom 𝐺) ∈ dom vol)
2710, 12, 26syl2anc 581 . . . . . 6 (𝜑 → (dom 𝐹 ∩ dom 𝐺) ∈ dom vol)
2820recld 14311 . . . . . 6 ((𝜑𝑥 ∈ (dom 𝐹 ∩ dom 𝐺)) → (ℜ‘(𝐹𝑥)) ∈ ℝ)
2923recld 14311 . . . . . 6 ((𝜑𝑥 ∈ (dom 𝐹 ∩ dom 𝐺)) → (ℜ‘(𝐺𝑥)) ∈ ℝ)
30 eqidd 2826 . . . . . 6 (𝜑 → (𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ (ℜ‘(𝐹𝑥))) = (𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ (ℜ‘(𝐹𝑥))))
31 eqidd 2826 . . . . . 6 (𝜑 → (𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ (ℜ‘(𝐺𝑥))) = (𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ (ℜ‘(𝐺𝑥))))
3227, 28, 29, 30, 31offval2 7174 . . . . 5 (𝜑 → ((𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ (ℜ‘(𝐹𝑥))) ∘𝑓 + (𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ (ℜ‘(𝐺𝑥)))) = (𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ ((ℜ‘(𝐹𝑥)) + (ℜ‘(𝐺𝑥)))))
3325, 32eqtr4d 2864 . . . 4 (𝜑 → (𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ (ℜ‘((𝐹𝑥) + (𝐺𝑥)))) = ((𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ (ℜ‘(𝐹𝑥))) ∘𝑓 + (𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ (ℜ‘(𝐺𝑥)))))
34 inss1 4057 . . . . . . . . 9 (dom 𝐹 ∩ dom 𝐺) ⊆ dom 𝐹
35 resmpt 5686 . . . . . . . . 9 ((dom 𝐹 ∩ dom 𝐺) ⊆ dom 𝐹 → ((𝑥 ∈ dom 𝐹 ↦ (𝐹𝑥)) ↾ (dom 𝐹 ∩ dom 𝐺)) = (𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ (𝐹𝑥)))
3634, 35ax-mp 5 . . . . . . . 8 ((𝑥 ∈ dom 𝐹 ↦ (𝐹𝑥)) ↾ (dom 𝐹 ∩ dom 𝐺)) = (𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ (𝐹𝑥))
373feqmptd 6496 . . . . . . . . . 10 (𝜑𝐹 = (𝑥 ∈ dom 𝐹 ↦ (𝐹𝑥)))
3837, 1eqeltrrd 2907 . . . . . . . . 9 (𝜑 → (𝑥 ∈ dom 𝐹 ↦ (𝐹𝑥)) ∈ MblFn)
39 mbfres 23810 . . . . . . . . 9 (((𝑥 ∈ dom 𝐹 ↦ (𝐹𝑥)) ∈ MblFn ∧ (dom 𝐹 ∩ dom 𝐺) ∈ dom vol) → ((𝑥 ∈ dom 𝐹 ↦ (𝐹𝑥)) ↾ (dom 𝐹 ∩ dom 𝐺)) ∈ MblFn)
4038, 27, 39syl2anc 581 . . . . . . . 8 (𝜑 → ((𝑥 ∈ dom 𝐹 ↦ (𝐹𝑥)) ↾ (dom 𝐹 ∩ dom 𝐺)) ∈ MblFn)
4136, 40syl5eqelr 2911 . . . . . . 7 (𝜑 → (𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ (𝐹𝑥)) ∈ MblFn)
4220ismbfcn2 23804 . . . . . . 7 (𝜑 → ((𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ (𝐹𝑥)) ∈ MblFn ↔ ((𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ (ℜ‘(𝐹𝑥))) ∈ MblFn ∧ (𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ (ℑ‘(𝐹𝑥))) ∈ MblFn)))
4341, 42mpbid 224 . . . . . 6 (𝜑 → ((𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ (ℜ‘(𝐹𝑥))) ∈ MblFn ∧ (𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ (ℑ‘(𝐹𝑥))) ∈ MblFn))
4443simpld 490 . . . . 5 (𝜑 → (𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ (ℜ‘(𝐹𝑥))) ∈ MblFn)
45 inss2 4058 . . . . . . . . 9 (dom 𝐹 ∩ dom 𝐺) ⊆ dom 𝐺
46 resmpt 5686 . . . . . . . . 9 ((dom 𝐹 ∩ dom 𝐺) ⊆ dom 𝐺 → ((𝑥 ∈ dom 𝐺 ↦ (𝐺𝑥)) ↾ (dom 𝐹 ∩ dom 𝐺)) = (𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ (𝐺𝑥)))
4745, 46ax-mp 5 . . . . . . . 8 ((𝑥 ∈ dom 𝐺 ↦ (𝐺𝑥)) ↾ (dom 𝐹 ∩ dom 𝐺)) = (𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ (𝐺𝑥))
487feqmptd 6496 . . . . . . . . . 10 (𝜑𝐺 = (𝑥 ∈ dom 𝐺 ↦ (𝐺𝑥)))
4948, 5eqeltrrd 2907 . . . . . . . . 9 (𝜑 → (𝑥 ∈ dom 𝐺 ↦ (𝐺𝑥)) ∈ MblFn)
50 mbfres 23810 . . . . . . . . 9 (((𝑥 ∈ dom 𝐺 ↦ (𝐺𝑥)) ∈ MblFn ∧ (dom 𝐹 ∩ dom 𝐺) ∈ dom vol) → ((𝑥 ∈ dom 𝐺 ↦ (𝐺𝑥)) ↾ (dom 𝐹 ∩ dom 𝐺)) ∈ MblFn)
5149, 27, 50syl2anc 581 . . . . . . . 8 (𝜑 → ((𝑥 ∈ dom 𝐺 ↦ (𝐺𝑥)) ↾ (dom 𝐹 ∩ dom 𝐺)) ∈ MblFn)
5247, 51syl5eqelr 2911 . . . . . . 7 (𝜑 → (𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ (𝐺𝑥)) ∈ MblFn)
5323ismbfcn2 23804 . . . . . . 7 (𝜑 → ((𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ (𝐺𝑥)) ∈ MblFn ↔ ((𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ (ℜ‘(𝐺𝑥))) ∈ MblFn ∧ (𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ (ℑ‘(𝐺𝑥))) ∈ MblFn)))
5452, 53mpbid 224 . . . . . 6 (𝜑 → ((𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ (ℜ‘(𝐺𝑥))) ∈ MblFn ∧ (𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ (ℑ‘(𝐺𝑥))) ∈ MblFn))
5554simpld 490 . . . . 5 (𝜑 → (𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ (ℜ‘(𝐺𝑥))) ∈ MblFn)
5628fmpttd 6634 . . . . 5 (𝜑 → (𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ (ℜ‘(𝐹𝑥))):(dom 𝐹 ∩ dom 𝐺)⟶ℝ)
5729fmpttd 6634 . . . . 5 (𝜑 → (𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ (ℜ‘(𝐺𝑥))):(dom 𝐹 ∩ dom 𝐺)⟶ℝ)
5844, 55, 56, 57mbfaddlem 23826 . . . 4 (𝜑 → ((𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ (ℜ‘(𝐹𝑥))) ∘𝑓 + (𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ (ℜ‘(𝐺𝑥)))) ∈ MblFn)
5933, 58eqeltrd 2906 . . 3 (𝜑 → (𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ (ℜ‘((𝐹𝑥) + (𝐺𝑥)))) ∈ MblFn)
6020, 23imaddd 14332 . . . . . 6 ((𝜑𝑥 ∈ (dom 𝐹 ∩ dom 𝐺)) → (ℑ‘((𝐹𝑥) + (𝐺𝑥))) = ((ℑ‘(𝐹𝑥)) + (ℑ‘(𝐺𝑥))))
6160mpteq2dva 4967 . . . . 5 (𝜑 → (𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ (ℑ‘((𝐹𝑥) + (𝐺𝑥)))) = (𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ ((ℑ‘(𝐹𝑥)) + (ℑ‘(𝐺𝑥)))))
6220imcld 14312 . . . . . 6 ((𝜑𝑥 ∈ (dom 𝐹 ∩ dom 𝐺)) → (ℑ‘(𝐹𝑥)) ∈ ℝ)
6323imcld 14312 . . . . . 6 ((𝜑𝑥 ∈ (dom 𝐹 ∩ dom 𝐺)) → (ℑ‘(𝐺𝑥)) ∈ ℝ)
64 eqidd 2826 . . . . . 6 (𝜑 → (𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ (ℑ‘(𝐹𝑥))) = (𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ (ℑ‘(𝐹𝑥))))
65 eqidd 2826 . . . . . 6 (𝜑 → (𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ (ℑ‘(𝐺𝑥))) = (𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ (ℑ‘(𝐺𝑥))))
6627, 62, 63, 64, 65offval2 7174 . . . . 5 (𝜑 → ((𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ (ℑ‘(𝐹𝑥))) ∘𝑓 + (𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ (ℑ‘(𝐺𝑥)))) = (𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ ((ℑ‘(𝐹𝑥)) + (ℑ‘(𝐺𝑥)))))
6761, 66eqtr4d 2864 . . . 4 (𝜑 → (𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ (ℑ‘((𝐹𝑥) + (𝐺𝑥)))) = ((𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ (ℑ‘(𝐹𝑥))) ∘𝑓 + (𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ (ℑ‘(𝐺𝑥)))))
6843simprd 491 . . . . 5 (𝜑 → (𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ (ℑ‘(𝐹𝑥))) ∈ MblFn)
6954simprd 491 . . . . 5 (𝜑 → (𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ (ℑ‘(𝐺𝑥))) ∈ MblFn)
7062fmpttd 6634 . . . . 5 (𝜑 → (𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ (ℑ‘(𝐹𝑥))):(dom 𝐹 ∩ dom 𝐺)⟶ℝ)
7163fmpttd 6634 . . . . 5 (𝜑 → (𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ (ℑ‘(𝐺𝑥))):(dom 𝐹 ∩ dom 𝐺)⟶ℝ)
7268, 69, 70, 71mbfaddlem 23826 . . . 4 (𝜑 → ((𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ (ℑ‘(𝐹𝑥))) ∘𝑓 + (𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ (ℑ‘(𝐺𝑥)))) ∈ MblFn)
7367, 72eqeltrd 2906 . . 3 (𝜑 → (𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ (ℑ‘((𝐹𝑥) + (𝐺𝑥)))) ∈ MblFn)
7420, 23addcld 10376 . . . 4 ((𝜑𝑥 ∈ (dom 𝐹 ∩ dom 𝐺)) → ((𝐹𝑥) + (𝐺𝑥)) ∈ ℂ)
7574ismbfcn2 23804 . . 3 (𝜑 → ((𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ ((𝐹𝑥) + (𝐺𝑥))) ∈ MblFn ↔ ((𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ (ℜ‘((𝐹𝑥) + (𝐺𝑥)))) ∈ MblFn ∧ (𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ (ℑ‘((𝐹𝑥) + (𝐺𝑥)))) ∈ MblFn)))
7659, 73, 75mpbir2and 706 . 2 (𝜑 → (𝑥 ∈ (dom 𝐹 ∩ dom 𝐺) ↦ ((𝐹𝑥) + (𝐺𝑥))) ∈ MblFn)
7716, 76eqeltrd 2906 1 (𝜑 → (𝐹𝑓 + 𝐺) ∈ MblFn)
Colors of variables: wff setvar class
Syntax hints:  wi 4  wa 386   = wceq 1658  wcel 2166  cin 3797  wss 3798  cmpt 4952  dom cdm 5342  cres 5344  wf 6119  cfv 6123  (class class class)co 6905  𝑓 cof 7155  cc 10250  cr 10251   + caddc 10255  cre 14214  cim 14215  volcvol 23629  MblFncmbf 23780
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1896  ax-4 1910  ax-5 2011  ax-6 2077  ax-7 2114  ax-8 2168  ax-9 2175  ax-10 2194  ax-11 2209  ax-12 2222  ax-13 2391  ax-ext 2803  ax-rep 4994  ax-sep 5005  ax-nul 5013  ax-pow 5065  ax-pr 5127  ax-un 7209  ax-inf2 8815  ax-cc 9572  ax-cnex 10308  ax-resscn 10309  ax-1cn 10310  ax-icn 10311  ax-addcl 10312  ax-addrcl 10313  ax-mulcl 10314  ax-mulrcl 10315  ax-mulcom 10316  ax-addass 10317  ax-mulass 10318  ax-distr 10319  ax-i2m1 10320  ax-1ne0 10321  ax-1rid 10322  ax-rnegex 10323  ax-rrecex 10324  ax-cnre 10325  ax-pre-lttri 10326  ax-pre-lttrn 10327  ax-pre-ltadd 10328  ax-pre-mulgt0 10329  ax-pre-sup 10330
This theorem depends on definitions:  df-bi 199  df-an 387  df-or 881  df-3or 1114  df-3an 1115  df-tru 1662  df-fal 1672  df-ex 1881  df-nf 1885  df-sb 2070  df-mo 2605  df-eu 2640  df-clab 2812  df-cleq 2818  df-clel 2821  df-nfc 2958  df-ne 3000  df-nel 3103  df-ral 3122  df-rex 3123  df-reu 3124  df-rmo 3125  df-rab 3126  df-v 3416  df-sbc 3663  df-csb 3758  df-dif 3801  df-un 3803  df-in 3805  df-ss 3812  df-pss 3814  df-nul 4145  df-if 4307  df-pw 4380  df-sn 4398  df-pr 4400  df-tp 4402  df-op 4404  df-uni 4659  df-int 4698  df-iun 4742  df-disj 4842  df-br 4874  df-opab 4936  df-mpt 4953  df-tr 4976  df-id 5250  df-eprel 5255  df-po 5263  df-so 5264  df-fr 5301  df-se 5302  df-we 5303  df-xp 5348  df-rel 5349  df-cnv 5350  df-co 5351  df-dm 5352  df-rn 5353  df-res 5354  df-ima 5355  df-pred 5920  df-ord 5966  df-on 5967  df-lim 5968  df-suc 5969  df-iota 6086  df-fun 6125  df-fn 6126  df-f 6127  df-f1 6128  df-fo 6129  df-f1o 6130  df-fv 6131  df-isom 6132  df-riota 6866  df-ov 6908  df-oprab 6909  df-mpt2 6910  df-of 7157  df-om 7327  df-1st 7428  df-2nd 7429  df-wrecs 7672  df-recs 7734  df-rdg 7772  df-1o 7826  df-2o 7827  df-oadd 7830  df-omul 7831  df-er 8009  df-map 8124  df-pm 8125  df-en 8223  df-dom 8224  df-sdom 8225  df-fin 8226  df-sup 8617  df-inf 8618  df-oi 8684  df-card 9078  df-acn 9081  df-cda 9305  df-pnf 10393  df-mnf 10394  df-xr 10395  df-ltxr 10396  df-le 10397  df-sub 10587  df-neg 10588  df-div 11010  df-nn 11351  df-2 11414  df-3 11415  df-n0 11619  df-z 11705  df-uz 11969  df-q 12072  df-rp 12113  df-xadd 12233  df-ioo 12467  df-ioc 12468  df-ico 12469  df-icc 12470  df-fz 12620  df-fzo 12761  df-fl 12888  df-seq 13096  df-exp 13155  df-hash 13411  df-cj 14216  df-re 14217  df-im 14218  df-sqrt 14352  df-abs 14353  df-clim 14596  df-rlim 14597  df-sum 14794  df-xmet 20099  df-met 20100  df-ovol 23630  df-vol 23631  df-mbf 23785
This theorem is referenced by:  mbfsub  23828  mbfmulc2  23829  mbfmul  23892  itg2monolem1  23916  itg2addlem  23924  ibladd  23986
  Copyright terms: Public domain W3C validator