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

Theorem vonicc 47379
Description: The n-dimensional Lebesgue measure of a closed interval. This is the second statement in Proposition 115G (d) of [Fremlin1] p. 32. (Contributed by Glauco Siliprandi, 8-Apr-2021.)
Hypotheses
Ref Expression
vonicc.x (𝜑𝑋 ∈ Fin)
vonicc.a (𝜑𝐴:𝑋⟶ℝ)
vonicc.b (𝜑𝐵:𝑋⟶ℝ)
vonicc.i 𝐼 = X𝑘𝑋 ((𝐴𝑘)[,](𝐵𝑘))
vonicc.l 𝐿 = (𝑥 ∈ Fin ↦ (𝑎 ∈ (ℝ ↑m 𝑥), 𝑏 ∈ (ℝ ↑m 𝑥) ↦ if(𝑥 = ∅, 0, ∏𝑘𝑥 (vol‘((𝑎𝑘)[,)(𝑏𝑘))))))
Assertion
Ref Expression
vonicc (𝜑 → ((voln‘𝑋)‘𝐼) = (𝐴(𝐿𝑋)𝐵))
Distinct variable groups:   𝐴,𝑎,𝑏,𝑘   𝐵,𝑎,𝑏,𝑘   𝑋,𝑎,𝑏,𝑘,𝑥   𝜑,𝑎,𝑏,𝑘,𝑥
Allowed substitution hints:   𝐴(𝑥)   𝐵(𝑥)   𝐼(𝑥,𝑘,𝑎,𝑏)   𝐿(𝑥,𝑘,𝑎,𝑏)

Proof of Theorem vonicc
Dummy variables 𝑖 𝑗 𝑛 𝑚 are mutually distinct and distinct from all other variables.
StepHypRef Expression
1 vonicc.l . . . . 5 𝐿 = (𝑥 ∈ Fin ↦ (𝑎 ∈ (ℝ ↑m 𝑥), 𝑏 ∈ (ℝ ↑m 𝑥) ↦ if(𝑥 = ∅, 0, ∏𝑘𝑥 (vol‘((𝑎𝑘)[,)(𝑏𝑘))))))
2 vonicc.a . . . . . . 7 (𝜑𝐴:𝑋⟶ℝ)
32adantr 485 . . . . . 6 ((𝜑𝑋 = ∅) → 𝐴:𝑋⟶ℝ)
4 feq2 6686 . . . . . . 7 (𝑋 = ∅ → (𝐴:𝑋⟶ℝ ↔ 𝐴:∅⟶ℝ))
54adantl 486 . . . . . 6 ((𝜑𝑋 = ∅) → (𝐴:𝑋⟶ℝ ↔ 𝐴:∅⟶ℝ))
63, 5mpbid 235 . . . . 5 ((𝜑𝑋 = ∅) → 𝐴:∅⟶ℝ)
7 vonicc.b . . . . . . 7 (𝜑𝐵:𝑋⟶ℝ)
87adantr 485 . . . . . 6 ((𝜑𝑋 = ∅) → 𝐵:𝑋⟶ℝ)
9 feq2 6686 . . . . . . 7 (𝑋 = ∅ → (𝐵:𝑋⟶ℝ ↔ 𝐵:∅⟶ℝ))
109adantl 486 . . . . . 6 ((𝜑𝑋 = ∅) → (𝐵:𝑋⟶ℝ ↔ 𝐵:∅⟶ℝ))
118, 10mpbid 235 . . . . 5 ((𝜑𝑋 = ∅) → 𝐵:∅⟶ℝ)
121, 6, 11hoidmv0val 47277 . . . 4 ((𝜑𝑋 = ∅) → (𝐴(𝐿‘∅)𝐵) = 0)
1312eqcomd 2769 . . 3 ((𝜑𝑋 = ∅) → 0 = (𝐴(𝐿‘∅)𝐵))
14 fveq2 6883 . . . . . 6 (𝑋 = ∅ → (voln‘𝑋) = (voln‘∅))
15 vonicc.i . . . . . . . 8 𝐼 = X𝑘𝑋 ((𝐴𝑘)[,](𝐵𝑘))
1615a1i 11 . . . . . . 7 (𝑋 = ∅ → 𝐼 = X𝑘𝑋 ((𝐴𝑘)[,](𝐵𝑘)))
17 ixpeq1 8907 . . . . . . 7 (𝑋 = ∅ → X𝑘𝑋 ((𝐴𝑘)[,](𝐵𝑘)) = X𝑘 ∈ ∅ ((𝐴𝑘)[,](𝐵𝑘)))
1816, 17eqtrd 2798 . . . . . 6 (𝑋 = ∅ → 𝐼 = X𝑘 ∈ ∅ ((𝐴𝑘)[,](𝐵𝑘)))
1914, 18fveq12d 6890 . . . . 5 (𝑋 = ∅ → ((voln‘𝑋)‘𝐼) = ((voln‘∅)‘X𝑘 ∈ ∅ ((𝐴𝑘)[,](𝐵𝑘))))
2019adantl 486 . . . 4 ((𝜑𝑋 = ∅) → ((voln‘𝑋)‘𝐼) = ((voln‘∅)‘X𝑘 ∈ ∅ ((𝐴𝑘)[,](𝐵𝑘))))
21 0fi 9040 . . . . . . 7 ∅ ∈ Fin
2221a1i 11 . . . . . 6 ((𝜑𝑋 = ∅) → ∅ ∈ Fin)
23 eqid 2763 . . . . . 6 dom (voln‘∅) = dom (voln‘∅)
2422, 23, 6, 11iccvonmbl 47373 . . . . 5 ((𝜑𝑋 = ∅) → X𝑘 ∈ ∅ ((𝐴𝑘)[,](𝐵𝑘)) ∈ dom (voln‘∅))
2524von0val 47365 . . . 4 ((𝜑𝑋 = ∅) → ((voln‘∅)‘X𝑘 ∈ ∅ ((𝐴𝑘)[,](𝐵𝑘))) = 0)
2620, 25eqtrd 2798 . . 3 ((𝜑𝑋 = ∅) → ((voln‘𝑋)‘𝐼) = 0)
27 fveq2 6883 . . . . 5 (𝑋 = ∅ → (𝐿𝑋) = (𝐿‘∅))
2827oveqd 7429 . . . 4 (𝑋 = ∅ → (𝐴(𝐿𝑋)𝐵) = (𝐴(𝐿‘∅)𝐵))
2928adantl 486 . . 3 ((𝜑𝑋 = ∅) → (𝐴(𝐿𝑋)𝐵) = (𝐴(𝐿‘∅)𝐵))
3013, 26, 293eqtr4d 2808 . 2 ((𝜑𝑋 = ∅) → ((voln‘𝑋)‘𝐼) = (𝐴(𝐿𝑋)𝐵))
31 neqne 2966 . . . 4 𝑋 = ∅ → 𝑋 ≠ ∅)
3231adantl 486 . . 3 ((𝜑 ∧ ¬ 𝑋 = ∅) → 𝑋 ≠ ∅)
33 nfv 1944 . . . . . . . . 9 𝑘(𝜑𝑋 ≠ ∅)
34 nfra1 3289 . . . . . . . . 9 𝑘𝑘𝑋 (𝐴𝑘) ≤ (𝐵𝑘)
3533, 34nfan 1929 . . . . . . . 8 𝑘((𝜑𝑋 ≠ ∅) ∧ ∀𝑘𝑋 (𝐴𝑘) ≤ (𝐵𝑘))
362ffvelcdmda 7081 . . . . . . . . . . . 12 ((𝜑𝑘𝑋) → (𝐴𝑘) ∈ ℝ)
377ffvelcdmda 7081 . . . . . . . . . . . 12 ((𝜑𝑘𝑋) → (𝐵𝑘) ∈ ℝ)
38 volico2 47335 . . . . . . . . . . . 12 (((𝐴𝑘) ∈ ℝ ∧ (𝐵𝑘) ∈ ℝ) → (vol‘((𝐴𝑘)[,)(𝐵𝑘))) = if((𝐴𝑘) ≤ (𝐵𝑘), ((𝐵𝑘) − (𝐴𝑘)), 0))
3936, 37, 38syl2anc 595 . . . . . . . . . . 11 ((𝜑𝑘𝑋) → (vol‘((𝐴𝑘)[,)(𝐵𝑘))) = if((𝐴𝑘) ≤ (𝐵𝑘), ((𝐵𝑘) − (𝐴𝑘)), 0))
4039ad4ant14 764 . . . . . . . . . 10 ((((𝜑𝑋 ≠ ∅) ∧ ∀𝑘𝑋 (𝐴𝑘) ≤ (𝐵𝑘)) ∧ 𝑘𝑋) → (vol‘((𝐴𝑘)[,)(𝐵𝑘))) = if((𝐴𝑘) ≤ (𝐵𝑘), ((𝐵𝑘) − (𝐴𝑘)), 0))
41 rspa 3254 . . . . . . . . . . . 12 ((∀𝑘𝑋 (𝐴𝑘) ≤ (𝐵𝑘) ∧ 𝑘𝑋) → (𝐴𝑘) ≤ (𝐵𝑘))
4241iftrued 4496 . . . . . . . . . . 11 ((∀𝑘𝑋 (𝐴𝑘) ≤ (𝐵𝑘) ∧ 𝑘𝑋) → if((𝐴𝑘) ≤ (𝐵𝑘), ((𝐵𝑘) − (𝐴𝑘)), 0) = ((𝐵𝑘) − (𝐴𝑘)))
4342adantll 726 . . . . . . . . . 10 ((((𝜑𝑋 ≠ ∅) ∧ ∀𝑘𝑋 (𝐴𝑘) ≤ (𝐵𝑘)) ∧ 𝑘𝑋) → if((𝐴𝑘) ≤ (𝐵𝑘), ((𝐵𝑘) − (𝐴𝑘)), 0) = ((𝐵𝑘) − (𝐴𝑘)))
4440, 43eqtrd 2798 . . . . . . . . 9 ((((𝜑𝑋 ≠ ∅) ∧ ∀𝑘𝑋 (𝐴𝑘) ≤ (𝐵𝑘)) ∧ 𝑘𝑋) → (vol‘((𝐴𝑘)[,)(𝐵𝑘))) = ((𝐵𝑘) − (𝐴𝑘)))
4544ex 417 . . . . . . . 8 (((𝜑𝑋 ≠ ∅) ∧ ∀𝑘𝑋 (𝐴𝑘) ≤ (𝐵𝑘)) → (𝑘𝑋 → (vol‘((𝐴𝑘)[,)(𝐵𝑘))) = ((𝐵𝑘) − (𝐴𝑘))))
4635, 45ralrimi 3263 . . . . . . 7 (((𝜑𝑋 ≠ ∅) ∧ ∀𝑘𝑋 (𝐴𝑘) ≤ (𝐵𝑘)) → ∀𝑘𝑋 (vol‘((𝐴𝑘)[,)(𝐵𝑘))) = ((𝐵𝑘) − (𝐴𝑘)))
4746prodeq2d 15977 . . . . . 6 (((𝜑𝑋 ≠ ∅) ∧ ∀𝑘𝑋 (𝐴𝑘) ≤ (𝐵𝑘)) → ∏𝑘𝑋 (vol‘((𝐴𝑘)[,)(𝐵𝑘))) = ∏𝑘𝑋 ((𝐵𝑘) − (𝐴𝑘)))
4847eqcomd 2769 . . . . 5 (((𝜑𝑋 ≠ ∅) ∧ ∀𝑘𝑋 (𝐴𝑘) ≤ (𝐵𝑘)) → ∏𝑘𝑋 ((𝐵𝑘) − (𝐴𝑘)) = ∏𝑘𝑋 (vol‘((𝐴𝑘)[,)(𝐵𝑘))))
49 fveq2 6883 . . . . . . . . 9 (𝑘 = 𝑗 → (𝐴𝑘) = (𝐴𝑗))
50 fveq2 6883 . . . . . . . . 9 (𝑘 = 𝑗 → (𝐵𝑘) = (𝐵𝑗))
5149, 50breq12d 5123 . . . . . . . 8 (𝑘 = 𝑗 → ((𝐴𝑘) ≤ (𝐵𝑘) ↔ (𝐴𝑗) ≤ (𝐵𝑗)))
5251cbvralvw 3243 . . . . . . 7 (∀𝑘𝑋 (𝐴𝑘) ≤ (𝐵𝑘) ↔ ∀𝑗𝑋 (𝐴𝑗) ≤ (𝐵𝑗))
5352bilani 509 . . . . . 6 (((𝜑𝑋 ≠ ∅) ∧ ∀𝑘𝑋 (𝐴𝑘) ≤ (𝐵𝑘)) → ∀𝑗𝑋 (𝐴𝑗) ≤ (𝐵𝑗))
54 vonicc.x . . . . . . . . 9 (𝜑𝑋 ∈ Fin)
5554adantr 485 . . . . . . . 8 ((𝜑𝑋 ≠ ∅) → 𝑋 ∈ Fin)
5655adantr 485 . . . . . . 7 (((𝜑𝑋 ≠ ∅) ∧ ∀𝑗𝑋 (𝐴𝑗) ≤ (𝐵𝑗)) → 𝑋 ∈ Fin)
572adantr 485 . . . . . . . 8 ((𝜑𝑋 ≠ ∅) → 𝐴:𝑋⟶ℝ)
5857adantr 485 . . . . . . 7 (((𝜑𝑋 ≠ ∅) ∧ ∀𝑗𝑋 (𝐴𝑗) ≤ (𝐵𝑗)) → 𝐴:𝑋⟶ℝ)
597adantr 485 . . . . . . . 8 ((𝜑𝑋 ≠ ∅) → 𝐵:𝑋⟶ℝ)
6059adantr 485 . . . . . . 7 (((𝜑𝑋 ≠ ∅) ∧ ∀𝑗𝑋 (𝐴𝑗) ≤ (𝐵𝑗)) → 𝐵:𝑋⟶ℝ)
61 simpr 489 . . . . . . . 8 ((𝜑𝑋 ≠ ∅) → 𝑋 ≠ ∅)
6261adantr 485 . . . . . . 7 (((𝜑𝑋 ≠ ∅) ∧ ∀𝑗𝑋 (𝐴𝑗) ≤ (𝐵𝑗)) → 𝑋 ≠ ∅)
6352, 41sylanbr 593 . . . . . . . 8 ((∀𝑗𝑋 (𝐴𝑗) ≤ (𝐵𝑗) ∧ 𝑘𝑋) → (𝐴𝑘) ≤ (𝐵𝑘))
6463adantll 726 . . . . . . 7 ((((𝜑𝑋 ≠ ∅) ∧ ∀𝑗𝑋 (𝐴𝑗) ≤ (𝐵𝑗)) ∧ 𝑘𝑋) → (𝐴𝑘) ≤ (𝐵𝑘))
65 fveq2 6883 . . . . . . . . . . 11 (𝑗 = 𝑘 → (𝐵𝑗) = (𝐵𝑘))
6665oveq1d 7427 . . . . . . . . . 10 (𝑗 = 𝑘 → ((𝐵𝑗) + (1 / 𝑚)) = ((𝐵𝑘) + (1 / 𝑚)))
6766cbvmptv 5216 . . . . . . . . 9 (𝑗𝑋 ↦ ((𝐵𝑗) + (1 / 𝑚))) = (𝑘𝑋 ↦ ((𝐵𝑘) + (1 / 𝑚)))
6867mpteq2i 5208 . . . . . . . 8 (𝑚 ∈ ℕ ↦ (𝑗𝑋 ↦ ((𝐵𝑗) + (1 / 𝑚)))) = (𝑚 ∈ ℕ ↦ (𝑘𝑋 ↦ ((𝐵𝑘) + (1 / 𝑚))))
69 oveq2 7420 . . . . . . . . . . 11 (𝑚 = 𝑛 → (1 / 𝑚) = (1 / 𝑛))
7069oveq2d 7428 . . . . . . . . . 10 (𝑚 = 𝑛 → ((𝐵𝑘) + (1 / 𝑚)) = ((𝐵𝑘) + (1 / 𝑛)))
7170mpteq2dv 5206 . . . . . . . . 9 (𝑚 = 𝑛 → (𝑘𝑋 ↦ ((𝐵𝑘) + (1 / 𝑚))) = (𝑘𝑋 ↦ ((𝐵𝑘) + (1 / 𝑛))))
7271cbvmptv 5216 . . . . . . . 8 (𝑚 ∈ ℕ ↦ (𝑘𝑋 ↦ ((𝐵𝑘) + (1 / 𝑚)))) = (𝑛 ∈ ℕ ↦ (𝑘𝑋 ↦ ((𝐵𝑘) + (1 / 𝑛))))
7368, 72eqtri 2786 . . . . . . 7 (𝑚 ∈ ℕ ↦ (𝑗𝑋 ↦ ((𝐵𝑗) + (1 / 𝑚)))) = (𝑛 ∈ ℕ ↦ (𝑘𝑋 ↦ ((𝐵𝑘) + (1 / 𝑛))))
74 fveq2 6883 . . . . . . . . . . 11 (𝑖 = 𝑛 → ((𝑚 ∈ ℕ ↦ (𝑗𝑋 ↦ ((𝐵𝑗) + (1 / 𝑚))))‘𝑖) = ((𝑚 ∈ ℕ ↦ (𝑗𝑋 ↦ ((𝐵𝑗) + (1 / 𝑚))))‘𝑛))
7574fveq1d 6885 . . . . . . . . . 10 (𝑖 = 𝑛 → (((𝑚 ∈ ℕ ↦ (𝑗𝑋 ↦ ((𝐵𝑗) + (1 / 𝑚))))‘𝑖)‘𝑘) = (((𝑚 ∈ ℕ ↦ (𝑗𝑋 ↦ ((𝐵𝑗) + (1 / 𝑚))))‘𝑛)‘𝑘))
7675oveq2d 7428 . . . . . . . . 9 (𝑖 = 𝑛 → ((𝐴𝑘)[,)(((𝑚 ∈ ℕ ↦ (𝑗𝑋 ↦ ((𝐵𝑗) + (1 / 𝑚))))‘𝑖)‘𝑘)) = ((𝐴𝑘)[,)(((𝑚 ∈ ℕ ↦ (𝑗𝑋 ↦ ((𝐵𝑗) + (1 / 𝑚))))‘𝑛)‘𝑘)))
7776ixpeq2dv 8912 . . . . . . . 8 (𝑖 = 𝑛X𝑘𝑋 ((𝐴𝑘)[,)(((𝑚 ∈ ℕ ↦ (𝑗𝑋 ↦ ((𝐵𝑗) + (1 / 𝑚))))‘𝑖)‘𝑘)) = X𝑘𝑋 ((𝐴𝑘)[,)(((𝑚 ∈ ℕ ↦ (𝑗𝑋 ↦ ((𝐵𝑗) + (1 / 𝑚))))‘𝑛)‘𝑘)))
7877cbvmptv 5216 . . . . . . 7 (𝑖 ∈ ℕ ↦ X𝑘𝑋 ((𝐴𝑘)[,)(((𝑚 ∈ ℕ ↦ (𝑗𝑋 ↦ ((𝐵𝑗) + (1 / 𝑚))))‘𝑖)‘𝑘))) = (𝑛 ∈ ℕ ↦ X𝑘𝑋 ((𝐴𝑘)[,)(((𝑚 ∈ ℕ ↦ (𝑗𝑋 ↦ ((𝐵𝑗) + (1 / 𝑚))))‘𝑛)‘𝑘)))
7956, 58, 60, 62, 64, 15, 73, 78vonicclem2 47378 . . . . . 6 (((𝜑𝑋 ≠ ∅) ∧ ∀𝑗𝑋 (𝐴𝑗) ≤ (𝐵𝑗)) → ((voln‘𝑋)‘𝐼) = ∏𝑘𝑋 ((𝐵𝑘) − (𝐴𝑘)))
8053, 79syldan 602 . . . . 5 (((𝜑𝑋 ≠ ∅) ∧ ∀𝑘𝑋 (𝐴𝑘) ≤ (𝐵𝑘)) → ((voln‘𝑋)‘𝐼) = ∏𝑘𝑋 ((𝐵𝑘) − (𝐴𝑘)))
811, 55, 61, 57, 59hoidmvn0val 47278 . . . . . 6 ((𝜑𝑋 ≠ ∅) → (𝐴(𝐿𝑋)𝐵) = ∏𝑘𝑋 (vol‘((𝐴𝑘)[,)(𝐵𝑘))))
8281adantr 485 . . . . 5 (((𝜑𝑋 ≠ ∅) ∧ ∀𝑘𝑋 (𝐴𝑘) ≤ (𝐵𝑘)) → (𝐴(𝐿𝑋)𝐵) = ∏𝑘𝑋 (vol‘((𝐴𝑘)[,)(𝐵𝑘))))
8348, 80, 823eqtr4d 2808 . . . 4 (((𝜑𝑋 ≠ ∅) ∧ ∀𝑘𝑋 (𝐴𝑘) ≤ (𝐵𝑘)) → ((voln‘𝑋)‘𝐼) = (𝐴(𝐿𝑋)𝐵))
84 rexnal 3117 . . . . . . . 8 (∃𝑘𝑋 ¬ (𝐴𝑘) ≤ (𝐵𝑘) ↔ ¬ ∀𝑘𝑋 (𝐴𝑘) ≤ (𝐵𝑘))
8584bilanri 511 . . . . . . 7 ((𝜑 ∧ ¬ ∀𝑘𝑋 (𝐴𝑘) ≤ (𝐵𝑘)) → ∃𝑘𝑋 ¬ (𝐴𝑘) ≤ (𝐵𝑘))
86 simpr 489 . . . . . . . . . . 11 (((𝜑𝑘𝑋) ∧ ¬ (𝐴𝑘) ≤ (𝐵𝑘)) → ¬ (𝐴𝑘) ≤ (𝐵𝑘))
8737adantr 485 . . . . . . . . . . . 12 (((𝜑𝑘𝑋) ∧ ¬ (𝐴𝑘) ≤ (𝐵𝑘)) → (𝐵𝑘) ∈ ℝ)
8836adantr 485 . . . . . . . . . . . 12 (((𝜑𝑘𝑋) ∧ ¬ (𝐴𝑘) ≤ (𝐵𝑘)) → (𝐴𝑘) ∈ ℝ)
8987, 88ltnled 11358 . . . . . . . . . . 11 (((𝜑𝑘𝑋) ∧ ¬ (𝐴𝑘) ≤ (𝐵𝑘)) → ((𝐵𝑘) < (𝐴𝑘) ↔ ¬ (𝐴𝑘) ≤ (𝐵𝑘)))
9086, 89mpbird 260 . . . . . . . . . 10 (((𝜑𝑘𝑋) ∧ ¬ (𝐴𝑘) ≤ (𝐵𝑘)) → (𝐵𝑘) < (𝐴𝑘))
9190ex 417 . . . . . . . . 9 ((𝜑𝑘𝑋) → (¬ (𝐴𝑘) ≤ (𝐵𝑘) → (𝐵𝑘) < (𝐴𝑘)))
9291reximdva 3178 . . . . . . . 8 (𝜑 → (∃𝑘𝑋 ¬ (𝐴𝑘) ≤ (𝐵𝑘) → ∃𝑘𝑋 (𝐵𝑘) < (𝐴𝑘)))
9392adantr 485 . . . . . . 7 ((𝜑 ∧ ¬ ∀𝑘𝑋 (𝐴𝑘) ≤ (𝐵𝑘)) → (∃𝑘𝑋 ¬ (𝐴𝑘) ≤ (𝐵𝑘) → ∃𝑘𝑋 (𝐵𝑘) < (𝐴𝑘)))
9485, 93mpd 16 . . . . . 6 ((𝜑 ∧ ¬ ∀𝑘𝑋 (𝐴𝑘) ≤ (𝐵𝑘)) → ∃𝑘𝑋 (𝐵𝑘) < (𝐴𝑘))
9594adantlr 727 . . . . 5 (((𝜑𝑋 ≠ ∅) ∧ ¬ ∀𝑘𝑋 (𝐴𝑘) ≤ (𝐵𝑘)) → ∃𝑘𝑋 (𝐵𝑘) < (𝐴𝑘))
96 nfcv 2925 . . . . . . . . 9 𝑘(voln‘𝑋)
97 nfixp1 8917 . . . . . . . . . 10 𝑘X𝑘𝑋 ((𝐴𝑘)[,](𝐵𝑘))
9815, 97nfcxfr 2923 . . . . . . . . 9 𝑘𝐼
9996, 98nffv 6893 . . . . . . . 8 𝑘((voln‘𝑋)‘𝐼)
100 nfcv 2925 . . . . . . . . 9 𝑘𝐴
101 nfcv 2925 . . . . . . . . . . . 12 𝑘Fin
102 nfcv 2925 . . . . . . . . . . . . 13 𝑘(ℝ ↑m 𝑥)
103 nfv 1944 . . . . . . . . . . . . . 14 𝑘 𝑥 = ∅
104 nfcv 2925 . . . . . . . . . . . . . 14 𝑘0
105 nfcv 2925 . . . . . . . . . . . . . . 15 𝑘𝑥
106105nfcprod1 15964 . . . . . . . . . . . . . 14 𝑘𝑘𝑥 (vol‘((𝑎𝑘)[,)(𝑏𝑘)))
107103, 104, 106nfif 4519 . . . . . . . . . . . . 13 𝑘if(𝑥 = ∅, 0, ∏𝑘𝑥 (vol‘((𝑎𝑘)[,)(𝑏𝑘))))
108102, 102, 107nfmpo 7494 . . . . . . . . . . . 12 𝑘(𝑎 ∈ (ℝ ↑m 𝑥), 𝑏 ∈ (ℝ ↑m 𝑥) ↦ if(𝑥 = ∅, 0, ∏𝑘𝑥 (vol‘((𝑎𝑘)[,)(𝑏𝑘)))))
109101, 108nfmpt 5210 . . . . . . . . . . 11 𝑘(𝑥 ∈ Fin ↦ (𝑎 ∈ (ℝ ↑m 𝑥), 𝑏 ∈ (ℝ ↑m 𝑥) ↦ if(𝑥 = ∅, 0, ∏𝑘𝑥 (vol‘((𝑎𝑘)[,)(𝑏𝑘))))))
1101, 109nfcxfr 2923 . . . . . . . . . 10 𝑘𝐿
111 nfcv 2925 . . . . . . . . . 10 𝑘𝑋
112110, 111nffv 6893 . . . . . . . . 9 𝑘(𝐿𝑋)
113 nfcv 2925 . . . . . . . . 9 𝑘𝐵
114100, 112, 113nfov 7442 . . . . . . . 8 𝑘(𝐴(𝐿𝑋)𝐵)
11599, 114nfeq 2938 . . . . . . 7 𝑘((voln‘𝑋)‘𝐼) = (𝐴(𝐿𝑋)𝐵)
11654vonmea 47268 . . . . . . . . . . . 12 (𝜑 → (voln‘𝑋) ∈ Meas)
117116mea0 47148 . . . . . . . . . . 11 (𝜑 → ((voln‘𝑋)‘∅) = 0)
1181173ad2ant1 1151 . . . . . . . . . 10 ((𝜑𝑘𝑋 ∧ (𝐵𝑘) < (𝐴𝑘)) → ((voln‘𝑋)‘∅) = 0)
11915a1i 11 . . . . . . . . . . . 12 ((𝜑𝑘𝑋 ∧ (𝐵𝑘) < (𝐴𝑘)) → 𝐼 = X𝑘𝑋 ((𝐴𝑘)[,](𝐵𝑘)))
120 simp2 1155 . . . . . . . . . . . . . 14 ((𝜑𝑘𝑋 ∧ (𝐵𝑘) < (𝐴𝑘)) → 𝑘𝑋)
121 simp3 1156 . . . . . . . . . . . . . . 15 ((𝜑𝑘𝑋 ∧ (𝐵𝑘) < (𝐴𝑘)) → (𝐵𝑘) < (𝐴𝑘))
122 ressxr 11254 . . . . . . . . . . . . . . . . . 18 ℝ ⊆ ℝ*
123122, 36sselid 3936 . . . . . . . . . . . . . . . . 17 ((𝜑𝑘𝑋) → (𝐴𝑘) ∈ ℝ*)
124122, 37sselid 3936 . . . . . . . . . . . . . . . . 17 ((𝜑𝑘𝑋) → (𝐵𝑘) ∈ ℝ*)
125 icc0 13421 . . . . . . . . . . . . . . . . 17 (((𝐴𝑘) ∈ ℝ* ∧ (𝐵𝑘) ∈ ℝ*) → (((𝐴𝑘)[,](𝐵𝑘)) = ∅ ↔ (𝐵𝑘) < (𝐴𝑘)))
126123, 124, 125syl2anc 595 . . . . . . . . . . . . . . . 16 ((𝜑𝑘𝑋) → (((𝐴𝑘)[,](𝐵𝑘)) = ∅ ↔ (𝐵𝑘) < (𝐴𝑘)))
1271263adant3 1150 . . . . . . . . . . . . . . 15 ((𝜑𝑘𝑋 ∧ (𝐵𝑘) < (𝐴𝑘)) → (((𝐴𝑘)[,](𝐵𝑘)) = ∅ ↔ (𝐵𝑘) < (𝐴𝑘)))
128121, 127mpbird 260 . . . . . . . . . . . . . 14 ((𝜑𝑘𝑋 ∧ (𝐵𝑘) < (𝐴𝑘)) → ((𝐴𝑘)[,](𝐵𝑘)) = ∅)
129 rspe 3255 . . . . . . . . . . . . . 14 ((𝑘𝑋 ∧ ((𝐴𝑘)[,](𝐵𝑘)) = ∅) → ∃𝑘𝑋 ((𝐴𝑘)[,](𝐵𝑘)) = ∅)
130120, 128, 129syl2anc 595 . . . . . . . . . . . . 13 ((𝜑𝑘𝑋 ∧ (𝐵𝑘) < (𝐴𝑘)) → ∃𝑘𝑋 ((𝐴𝑘)[,](𝐵𝑘)) = ∅)
131 ixp0 8930 . . . . . . . . . . . . 13 (∃𝑘𝑋 ((𝐴𝑘)[,](𝐵𝑘)) = ∅ → X𝑘𝑋 ((𝐴𝑘)[,](𝐵𝑘)) = ∅)
132130, 131syl 18 . . . . . . . . . . . 12 ((𝜑𝑘𝑋 ∧ (𝐵𝑘) < (𝐴𝑘)) → X𝑘𝑋 ((𝐴𝑘)[,](𝐵𝑘)) = ∅)
133119, 132eqtrd 2798 . . . . . . . . . . 11 ((𝜑𝑘𝑋 ∧ (𝐵𝑘) < (𝐴𝑘)) → 𝐼 = ∅)
134133fveq2d 6887 . . . . . . . . . 10 ((𝜑𝑘𝑋 ∧ (𝐵𝑘) < (𝐴𝑘)) → ((voln‘𝑋)‘𝐼) = ((voln‘𝑋)‘∅))
135 ne0i 4295 . . . . . . . . . . . . . 14 (𝑘𝑋𝑋 ≠ ∅)
136135adantl 486 . . . . . . . . . . . . 13 ((𝜑𝑘𝑋) → 𝑋 ≠ ∅)
137136, 81syldan 602 . . . . . . . . . . . 12 ((𝜑𝑘𝑋) → (𝐴(𝐿𝑋)𝐵) = ∏𝑘𝑋 (vol‘((𝐴𝑘)[,)(𝐵𝑘))))
1381373adant3 1150 . . . . . . . . . . 11 ((𝜑𝑘𝑋 ∧ (𝐵𝑘) < (𝐴𝑘)) → (𝐴(𝐿𝑋)𝐵) = ∏𝑘𝑋 (vol‘((𝐴𝑘)[,)(𝐵𝑘))))
139 eleq1w 2846 . . . . . . . . . . . . . 14 (𝑗 = 𝑘 → (𝑗𝑋𝑘𝑋))
140 fveq2 6883 . . . . . . . . . . . . . . 15 (𝑗 = 𝑘 → (𝐴𝑗) = (𝐴𝑘))
14165, 140breq12d 5123 . . . . . . . . . . . . . 14 (𝑗 = 𝑘 → ((𝐵𝑗) < (𝐴𝑗) ↔ (𝐵𝑘) < (𝐴𝑘)))
142139, 1413anbi23d 1467 . . . . . . . . . . . . 13 (𝑗 = 𝑘 → ((𝜑𝑗𝑋 ∧ (𝐵𝑗) < (𝐴𝑗)) ↔ (𝜑𝑘𝑋 ∧ (𝐵𝑘) < (𝐴𝑘))))
143142imbi1d 344 . . . . . . . . . . . 12 (𝑗 = 𝑘 → (((𝜑𝑗𝑋 ∧ (𝐵𝑗) < (𝐴𝑗)) → ∏𝑘𝑋 (vol‘((𝐴𝑘)[,)(𝐵𝑘))) = 0) ↔ ((𝜑𝑘𝑋 ∧ (𝐵𝑘) < (𝐴𝑘)) → ∏𝑘𝑋 (vol‘((𝐴𝑘)[,)(𝐵𝑘))) = 0)))
144 nfv 1944 . . . . . . . . . . . . 13 𝑘(𝜑𝑗𝑋 ∧ (𝐵𝑗) < (𝐴𝑗))
145543ad2ant1 1151 . . . . . . . . . . . . 13 ((𝜑𝑗𝑋 ∧ (𝐵𝑗) < (𝐴𝑗)) → 𝑋 ∈ Fin)
146 volicore 47275 . . . . . . . . . . . . . . . 16 (((𝐴𝑘) ∈ ℝ ∧ (𝐵𝑘) ∈ ℝ) → (vol‘((𝐴𝑘)[,)(𝐵𝑘))) ∈ ℝ)
14736, 37, 146syl2anc 595 . . . . . . . . . . . . . . 15 ((𝜑𝑘𝑋) → (vol‘((𝐴𝑘)[,)(𝐵𝑘))) ∈ ℝ)
148147recnd 11238 . . . . . . . . . . . . . 14 ((𝜑𝑘𝑋) → (vol‘((𝐴𝑘)[,)(𝐵𝑘))) ∈ ℂ)
1491483ad2antl1 1204 . . . . . . . . . . . . 13 (((𝜑𝑗𝑋 ∧ (𝐵𝑗) < (𝐴𝑗)) ∧ 𝑘𝑋) → (vol‘((𝐴𝑘)[,)(𝐵𝑘))) ∈ ℂ)
150 simp2 1155 . . . . . . . . . . . . 13 ((𝜑𝑗𝑋 ∧ (𝐵𝑗) < (𝐴𝑗)) → 𝑗𝑋)
15149, 50oveq12d 7430 . . . . . . . . . . . . . . . 16 (𝑘 = 𝑗 → ((𝐴𝑘)[,)(𝐵𝑘)) = ((𝐴𝑗)[,)(𝐵𝑗)))
152151fveq2d 6887 . . . . . . . . . . . . . . 15 (𝑘 = 𝑗 → (vol‘((𝐴𝑘)[,)(𝐵𝑘))) = (vol‘((𝐴𝑗)[,)(𝐵𝑗))))
153152adantl 486 . . . . . . . . . . . . . 14 (((𝜑𝑗𝑋 ∧ (𝐵𝑗) < (𝐴𝑗)) ∧ 𝑘 = 𝑗) → (vol‘((𝐴𝑘)[,)(𝐵𝑘))) = (vol‘((𝐴𝑗)[,)(𝐵𝑗))))
1542ffvelcdmda 7081 . . . . . . . . . . . . . . . . . 18 ((𝜑𝑗𝑋) → (𝐴𝑗) ∈ ℝ)
1557ffvelcdmda 7081 . . . . . . . . . . . . . . . . . 18 ((𝜑𝑗𝑋) → (𝐵𝑗) ∈ ℝ)
156 volico2 47335 . . . . . . . . . . . . . . . . . 18 (((𝐴𝑗) ∈ ℝ ∧ (𝐵𝑗) ∈ ℝ) → (vol‘((𝐴𝑗)[,)(𝐵𝑗))) = if((𝐴𝑗) ≤ (𝐵𝑗), ((𝐵𝑗) − (𝐴𝑗)), 0))
157154, 155, 156syl2anc 595 . . . . . . . . . . . . . . . . 17 ((𝜑𝑗𝑋) → (vol‘((𝐴𝑗)[,)(𝐵𝑗))) = if((𝐴𝑗) ≤ (𝐵𝑗), ((𝐵𝑗) − (𝐴𝑗)), 0))
1581573adant3 1150 . . . . . . . . . . . . . . . 16 ((𝜑𝑗𝑋 ∧ (𝐵𝑗) < (𝐴𝑗)) → (vol‘((𝐴𝑗)[,)(𝐵𝑗))) = if((𝐴𝑗) ≤ (𝐵𝑗), ((𝐵𝑗) − (𝐴𝑗)), 0))
159 simp3 1156 . . . . . . . . . . . . . . . . . 18 ((𝜑𝑗𝑋 ∧ (𝐵𝑗) < (𝐴𝑗)) → (𝐵𝑗) < (𝐴𝑗))
160155, 154ltnled 11358 . . . . . . . . . . . . . . . . . . 19 ((𝜑𝑗𝑋) → ((𝐵𝑗) < (𝐴𝑗) ↔ ¬ (𝐴𝑗) ≤ (𝐵𝑗)))
1611603adant3 1150 . . . . . . . . . . . . . . . . . 18 ((𝜑𝑗𝑋 ∧ (𝐵𝑗) < (𝐴𝑗)) → ((𝐵𝑗) < (𝐴𝑗) ↔ ¬ (𝐴𝑗) ≤ (𝐵𝑗)))
162159, 161mpbid 235 . . . . . . . . . . . . . . . . 17 ((𝜑𝑗𝑋 ∧ (𝐵𝑗) < (𝐴𝑗)) → ¬ (𝐴𝑗) ≤ (𝐵𝑗))
163162iffalsed 4499 . . . . . . . . . . . . . . . 16 ((𝜑𝑗𝑋 ∧ (𝐵𝑗) < (𝐴𝑗)) → if((𝐴𝑗) ≤ (𝐵𝑗), ((𝐵𝑗) − (𝐴𝑗)), 0) = 0)
164158, 163eqtrd 2798 . . . . . . . . . . . . . . 15 ((𝜑𝑗𝑋 ∧ (𝐵𝑗) < (𝐴𝑗)) → (vol‘((𝐴𝑗)[,)(𝐵𝑗))) = 0)
165164adantr 485 . . . . . . . . . . . . . 14 (((𝜑𝑗𝑋 ∧ (𝐵𝑗) < (𝐴𝑗)) ∧ 𝑘 = 𝑗) → (vol‘((𝐴𝑗)[,)(𝐵𝑗))) = 0)
166153, 165eqtrd 2798 . . . . . . . . . . . . 13 (((𝜑𝑗𝑋 ∧ (𝐵𝑗) < (𝐴𝑗)) ∧ 𝑘 = 𝑗) → (vol‘((𝐴𝑘)[,)(𝐵𝑘))) = 0)
167144, 145, 149, 150, 166fprodeq0g 16050 . . . . . . . . . . . 12 ((𝜑𝑗𝑋 ∧ (𝐵𝑗) < (𝐴𝑗)) → ∏𝑘𝑋 (vol‘((𝐴𝑘)[,)(𝐵𝑘))) = 0)
168143, 167chvarvv 2019 . . . . . . . . . . 11 ((𝜑𝑘𝑋 ∧ (𝐵𝑘) < (𝐴𝑘)) → ∏𝑘𝑋 (vol‘((𝐴𝑘)[,)(𝐵𝑘))) = 0)
169138, 168eqtrd 2798 . . . . . . . . . 10 ((𝜑𝑘𝑋 ∧ (𝐵𝑘) < (𝐴𝑘)) → (𝐴(𝐿𝑋)𝐵) = 0)
170118, 134, 1693eqtr4d 2808 . . . . . . . . 9 ((𝜑𝑘𝑋 ∧ (𝐵𝑘) < (𝐴𝑘)) → ((voln‘𝑋)‘𝐼) = (𝐴(𝐿𝑋)𝐵))
1711703exp 1137 . . . . . . . 8 (𝜑 → (𝑘𝑋 → ((𝐵𝑘) < (𝐴𝑘) → ((voln‘𝑋)‘𝐼) = (𝐴(𝐿𝑋)𝐵))))
172171adantr 485 . . . . . . 7 ((𝜑𝑋 ≠ ∅) → (𝑘𝑋 → ((𝐵𝑘) < (𝐴𝑘) → ((voln‘𝑋)‘𝐼) = (𝐴(𝐿𝑋)𝐵))))
17333, 115, 172rexlimd 3272 . . . . . 6 ((𝜑𝑋 ≠ ∅) → (∃𝑘𝑋 (𝐵𝑘) < (𝐴𝑘) → ((voln‘𝑋)‘𝐼) = (𝐴(𝐿𝑋)𝐵)))
174173imp 411 . . . . 5 (((𝜑𝑋 ≠ ∅) ∧ ∃𝑘𝑋 (𝐵𝑘) < (𝐴𝑘)) → ((voln‘𝑋)‘𝐼) = (𝐴(𝐿𝑋)𝐵))
17595, 174syldan 602 . . . 4 (((𝜑𝑋 ≠ ∅) ∧ ¬ ∀𝑘𝑋 (𝐴𝑘) ≤ (𝐵𝑘)) → ((voln‘𝑋)‘𝐼) = (𝐴(𝐿𝑋)𝐵))
17683, 175pm2.61dan 824 . . 3 ((𝜑𝑋 ≠ ∅) → ((voln‘𝑋)‘𝐼) = (𝐴(𝐿𝑋)𝐵))
17732, 176syldan 602 . 2 ((𝜑 ∧ ¬ 𝑋 = ∅) → ((voln‘𝑋)‘𝐼) = (𝐴(𝐿𝑋)𝐵))
17830, 177pm2.61dan 824 1 (𝜑 → ((voln‘𝑋)‘𝐼) = (𝐴(𝐿𝑋)𝐵))
Colors of variables: wff setvar class
Syntax hints:  ¬ wn 3  wi 4  wb 209  wa 400  w3a 1103   = wceq 1570  wcel 2143  wne 2958  wral 3079  wrex 3089  c0 4287  ifcif 4488   class class class wbr 5110  cmpt 5193  dom cdm 5663  wf 6534  cfv 6538  (class class class)co 7412  cmpo 7414  m cmap 8825  Xcixp 8896  Fincfn 8944  cc 11099  cr 11100  0cc0 11101  1c1 11102   + caddc 11104  *cxr 11243   < clt 11244  cle 11245  cmin 11442   / cdiv 11872  cn 12234  [,)cico 13375  [,]cicc 13376  cprod 15959  volcvol 25603  volncvoln 47232
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1825  ax-4 1839  ax-5 1940  ax-6 1997  ax-7 2038  ax-8 2145  ax-9 2153  ax-10 2176  ax-11 2192  ax-12 2213  ax-ext 2735  ax-rep 5239  ax-sep 5258  ax-nul 5270  ax-pow 5338  ax-pr 5406  ax-un 7734  ax-inf2 9611  ax-cc 10420  ax-ac2 10448  ax-cnex 11157  ax-resscn 11158  ax-1cn 11159  ax-icn 11160  ax-addcl 11161  ax-addrcl 11162  ax-mulcl 11163  ax-mulrcl 11164  ax-mulcom 11165  ax-addass 11166  ax-mulass 11167  ax-distr 11168  ax-i2m1 11169  ax-1ne0 11170  ax-1rid 11171  ax-rnegex 11172  ax-rrecex 11173  ax-cnre 11174  ax-pre-lttri 11175  ax-pre-lttrn 11176  ax-pre-ltadd 11177  ax-pre-mulgt0 11178  ax-pre-sup 11179  ax-addf 11180  ax-mulf 11181
This theorem depends on definitions:  df-bi 210  df-an 401  df-or 861  df-3or 1104  df-3an 1105  df-tru 1573  df-fal 1583  df-ex 1810  df-nf 1814  df-sb 2097  df-mo 2567  df-eu 2597  df-clab 2742  df-cleq 2755  df-clel 2838  df-nfc 2912  df-ne 2959  df-nel 3065  df-ral 3080  df-rex 3090  df-rmo 3369  df-reu 3370  df-rab 3417  df-v 3457  df-sbc 3746  df-csb 3855  df-dif 3909  df-un 3911  df-in 3913  df-ss 3923  df-pss 3926  df-nul 4288  df-if 4489  df-pw 4565  df-sn 4591  df-pr 4593  df-tp 4595  df-op 4597  df-uni 4874  df-int 4914  df-iun 4959  df-iin 4960  df-disj 5078  df-br 5111  df-opab 5175  df-mpt 5194  df-tr 5220  df-id 5558  df-eprel 5563  df-po 5571  df-so 5572  df-fr 5616  df-se 5617  df-we 5618  df-xp 5669  df-rel 5670  df-cnv 5671  df-co 5672  df-dm 5673  df-rn 5674  df-res 5675  df-ima 5676  df-pred 6304  df-ord 6365  df-on 6366  df-lim 6367  df-suc 6368  df-iota 6494  df-fun 6540  df-fn 6541  df-f 6542  df-f1 6543  df-fo 6544  df-f1o 6545  df-fv 6546  df-isom 6547  df-riota 7369  df-ov 7415  df-oprab 7416  df-mpo 7417  df-of 7676  df-om 7864  df-1st 7987  df-2nd 7988  df-supp 8158  df-tpos 8223  df-frecs 8279  df-wrecs 8310  df-recs 8359  df-rdg 8398  df-1o 8454  df-2o 8455  df-oadd 8458  df-omul 8459  df-er 8695  df-map 8827  df-pm 8828  df-ixp 8897  df-en 8945  df-dom 8946  df-sdom 8947  df-fin 8948  df-fsupp 9323  df-fi 9372  df-sup 9403  df-inf 9404  df-oi 9473  df-dju 9888  df-card 9926  df-acn 9929  df-ac 10101  df-pnf 11246  df-mnf 11247  df-xr 11248  df-ltxr 11249  df-le 11250  df-sub 11444  df-neg 11445  df-div 11873  df-nn 12235  df-2 12304  df-3 12305  df-4 12306  df-5 12307  df-6 12308  df-7 12309  df-8 12310  df-9 12311  df-n0 12506  df-z 12593  df-dec 12713  df-uz 12864  df-q 12974  df-rp 13018  df-xneg 13138  df-xadd 13139  df-xmul 13140  df-ioo 13377  df-ico 13379  df-icc 13380  df-fz 13537  df-fzo 13685  df-fl 13827  df-seq 14040  df-exp 14100  df-hash 14369  df-cj 15152  df-re 15153  df-im 15154  df-sqrt 15288  df-abs 15289  df-clim 15541  df-rlim 15542  df-sum 15740  df-prod 15960  df-struct 17208  df-sets 17225  df-slot 17243  df-ndx 17255  df-base 17271  df-ress 17292  df-plusg 17324  df-mulr 17325  df-starv 17326  df-sca 17327  df-vsca 17328  df-ip 17329  df-tset 17330  df-ple 17331  df-ds 17333  df-unif 17334  df-hom 17335  df-cco 17336  df-rest 17476  df-topn 17477  df-0g 17495  df-gsum 17496  df-topgen 17497  df-pt 17498  df-prds 17501  df-pws 17503  df-xrs 17557  df-qtop 17562  df-imas 17563  df-xps 17565  df-mre 17639  df-mrc 17640  df-acs 17642  df-mgm 18699  df-sgrp 18778  df-mnd 18794  df-mhm 18842  df-submnd 18843  df-grp 19004  df-minusg 19005  df-sbg 19006  df-mulg 19135  df-subg 19190  df-ghm 19285  df-cntz 19388  df-cmn 19853  df-abl 19854  df-mgp 20218  df-rng 20232  df-ur 20265  df-ring 20318  df-cring 20319  df-oppr 20420  df-dvdsr 20440  df-unit 20441  df-invr 20471  df-dvr 20484  df-rhm 20555  df-subrng 20632  df-subrg 20656  df-drng 20816  df-field 20817  df-abv 20893  df-staf 20923  df-srng 20924  df-lmod 20964  df-lss 21034  df-lmhm 21124  df-lvec 21205  df-sra 21275  df-rgmod 21276  df-psmet 21495  df-xmet 21496  df-met 21497  df-bl 21498  df-mopn 21499  df-cnfld 21504  df-refld 21736  df-phl 21757  df-dsmm 21863  df-frlm 21878  df-top 23032  df-topon 23049  df-topsp 23071  df-bases 23084  df-cn 23365  df-cnp 23366  df-cmp 23525  df-tx 23700  df-hmeo 23893  df-xms 24458  df-ms 24459  df-tms 24460  df-nm 24720  df-ngp 24721  df-tng 24722  df-nrg 24723  df-nlm 24724  df-cncf 25018  df-clm 25203  df-cph 25308  df-tcph 25309  df-rrx 25525  df-ovol 25604  df-vol 25605  df-salg 47003  df-sumge0 47057  df-mea 47144  df-ome 47184  df-caragen 47186  df-ovoln 47231  df-voln 47233
This theorem is referenced by:  vonn0icc  47382
  Copyright terms: Public domain W3C validator