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 47440
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 486 . . . . . 6 ((𝜑𝑋 = ∅) → 𝐴:𝑋⟶ℝ)
4 feq2 6691 . . . . . . 7 (𝑋 = ∅ → (𝐴:𝑋⟶ℝ ↔ 𝐴:∅⟶ℝ))
54adantl 487 . . . . . 6 ((𝜑𝑋 = ∅) → (𝐴:𝑋⟶ℝ ↔ 𝐴:∅⟶ℝ))
63, 5mpbid 235 . . . . 5 ((𝜑𝑋 = ∅) → 𝐴:∅⟶ℝ)
7 vonicc.b . . . . . . 7 (𝜑𝐵:𝑋⟶ℝ)
87adantr 486 . . . . . 6 ((𝜑𝑋 = ∅) → 𝐵:𝑋⟶ℝ)
9 feq2 6691 . . . . . . 7 (𝑋 = ∅ → (𝐵:𝑋⟶ℝ ↔ 𝐵:∅⟶ℝ))
109adantl 487 . . . . . 6 ((𝜑𝑋 = ∅) → (𝐵:𝑋⟶ℝ ↔ 𝐵:∅⟶ℝ))
118, 10mpbid 235 . . . . 5 ((𝜑𝑋 = ∅) → 𝐵:∅⟶ℝ)
121, 6, 11hoidmv0val 47338 . . . 4 ((𝜑𝑋 = ∅) → (𝐴(𝐿‘∅)𝐵) = 0)
1312eqcomd 2772 . . 3 ((𝜑𝑋 = ∅) → 0 = (𝐴(𝐿‘∅)𝐵))
14 fveq2 6888 . . . . . 6 (𝑋 = ∅ → (voln‘𝑋) = (voln‘∅))
15 vonicc.i . . . . . . . 8 𝐼 = X𝑘𝑋 ((𝐴𝑘)[,](𝐵𝑘))
1615a1i 11 . . . . . . 7 (𝑋 = ∅ → 𝐼 = X𝑘𝑋 ((𝐴𝑘)[,](𝐵𝑘)))
17 ixpeq1 8915 . . . . . . 7 (𝑋 = ∅ → X𝑘𝑋 ((𝐴𝑘)[,](𝐵𝑘)) = X𝑘 ∈ ∅ ((𝐴𝑘)[,](𝐵𝑘)))
1816, 17eqtrd 2801 . . . . . 6 (𝑋 = ∅ → 𝐼 = X𝑘 ∈ ∅ ((𝐴𝑘)[,](𝐵𝑘)))
1914, 18fveq12d 6895 . . . . 5 (𝑋 = ∅ → ((voln‘𝑋)‘𝐼) = ((voln‘∅)‘X𝑘 ∈ ∅ ((𝐴𝑘)[,](𝐵𝑘))))
2019adantl 487 . . . 4 ((𝜑𝑋 = ∅) → ((voln‘𝑋)‘𝐼) = ((voln‘∅)‘X𝑘 ∈ ∅ ((𝐴𝑘)[,](𝐵𝑘))))
21 0fi 9049 . . . . . . 7 ∅ ∈ Fin
2221a1i 11 . . . . . 6 ((𝜑𝑋 = ∅) → ∅ ∈ Fin)
23 eqid 2766 . . . . . 6 dom (voln‘∅) = dom (voln‘∅)
2422, 23, 6, 11iccvonmbl 47434 . . . . 5 ((𝜑𝑋 = ∅) → X𝑘 ∈ ∅ ((𝐴𝑘)[,](𝐵𝑘)) ∈ dom (voln‘∅))
2524von0val 47426 . . . 4 ((𝜑𝑋 = ∅) → ((voln‘∅)‘X𝑘 ∈ ∅ ((𝐴𝑘)[,](𝐵𝑘))) = 0)
2620, 25eqtrd 2801 . . 3 ((𝜑𝑋 = ∅) → ((voln‘𝑋)‘𝐼) = 0)
27 fveq2 6888 . . . . 5 (𝑋 = ∅ → (𝐿𝑋) = (𝐿‘∅))
2827oveqd 7440 . . . 4 (𝑋 = ∅ → (𝐴(𝐿𝑋)𝐵) = (𝐴(𝐿‘∅)𝐵))
2928adantl 487 . . 3 ((𝜑𝑋 = ∅) → (𝐴(𝐿𝑋)𝐵) = (𝐴(𝐿‘∅)𝐵))
3013, 26, 293eqtr4d 2811 . 2 ((𝜑𝑋 = ∅) → ((voln‘𝑋)‘𝐼) = (𝐴(𝐿𝑋)𝐵))
31 neqne 2969 . . . 4 𝑋 = ∅ → 𝑋 ≠ ∅)
3231adantl 487 . . 3 ((𝜑 ∧ ¬ 𝑋 = ∅) → 𝑋 ≠ ∅)
33 nfv 1947 . . . . . . . . 9 𝑘(𝜑𝑋 ≠ ∅)
34 nfra1 3292 . . . . . . . . 9 𝑘𝑘𝑋 (𝐴𝑘) ≤ (𝐵𝑘)
3533, 34nfan 1932 . . . . . . . 8 𝑘((𝜑𝑋 ≠ ∅) ∧ ∀𝑘𝑋 (𝐴𝑘) ≤ (𝐵𝑘))
362ffvelcdmda 7086 . . . . . . . . . . . 12 ((𝜑𝑘𝑋) → (𝐴𝑘) ∈ ℝ)
377ffvelcdmda 7086 . . . . . . . . . . . 12 ((𝜑𝑘𝑋) → (𝐵𝑘) ∈ ℝ)
38 volico2 47396 . . . . . . . . . . . 12 (((𝐴𝑘) ∈ ℝ ∧ (𝐵𝑘) ∈ ℝ) → (vol‘((𝐴𝑘)[,)(𝐵𝑘))) = if((𝐴𝑘) ≤ (𝐵𝑘), ((𝐵𝑘) − (𝐴𝑘)), 0))
3936, 37, 38syl2anc 596 . . . . . . . . . . 11 ((𝜑𝑘𝑋) → (vol‘((𝐴𝑘)[,)(𝐵𝑘))) = if((𝐴𝑘) ≤ (𝐵𝑘), ((𝐵𝑘) − (𝐴𝑘)), 0))
4039ad4ant14 765 . . . . . . . . . 10 ((((𝜑𝑋 ≠ ∅) ∧ ∀𝑘𝑋 (𝐴𝑘) ≤ (𝐵𝑘)) ∧ 𝑘𝑋) → (vol‘((𝐴𝑘)[,)(𝐵𝑘))) = if((𝐴𝑘) ≤ (𝐵𝑘), ((𝐵𝑘) − (𝐴𝑘)), 0))
41 rspa 3257 . . . . . . . . . . . 12 ((∀𝑘𝑋 (𝐴𝑘) ≤ (𝐵𝑘) ∧ 𝑘𝑋) → (𝐴𝑘) ≤ (𝐵𝑘))
4241iftrued 4500 . . . . . . . . . . 11 ((∀𝑘𝑋 (𝐴𝑘) ≤ (𝐵𝑘) ∧ 𝑘𝑋) → if((𝐴𝑘) ≤ (𝐵𝑘), ((𝐵𝑘) − (𝐴𝑘)), 0) = ((𝐵𝑘) − (𝐴𝑘)))
4342adantll 727 . . . . . . . . . 10 ((((𝜑𝑋 ≠ ∅) ∧ ∀𝑘𝑋 (𝐴𝑘) ≤ (𝐵𝑘)) ∧ 𝑘𝑋) → if((𝐴𝑘) ≤ (𝐵𝑘), ((𝐵𝑘) − (𝐴𝑘)), 0) = ((𝐵𝑘) − (𝐴𝑘)))
4440, 43eqtrd 2801 . . . . . . . . 9 ((((𝜑𝑋 ≠ ∅) ∧ ∀𝑘𝑋 (𝐴𝑘) ≤ (𝐵𝑘)) ∧ 𝑘𝑋) → (vol‘((𝐴𝑘)[,)(𝐵𝑘))) = ((𝐵𝑘) − (𝐴𝑘)))
4544ex 418 . . . . . . . 8 (((𝜑𝑋 ≠ ∅) ∧ ∀𝑘𝑋 (𝐴𝑘) ≤ (𝐵𝑘)) → (𝑘𝑋 → (vol‘((𝐴𝑘)[,)(𝐵𝑘))) = ((𝐵𝑘) − (𝐴𝑘))))
4635, 45ralrimi 3266 . . . . . . 7 (((𝜑𝑋 ≠ ∅) ∧ ∀𝑘𝑋 (𝐴𝑘) ≤ (𝐵𝑘)) → ∀𝑘𝑋 (vol‘((𝐴𝑘)[,)(𝐵𝑘))) = ((𝐵𝑘) − (𝐴𝑘)))
4746prodeq2d 16001 . . . . . 6 (((𝜑𝑋 ≠ ∅) ∧ ∀𝑘𝑋 (𝐴𝑘) ≤ (𝐵𝑘)) → ∏𝑘𝑋 (vol‘((𝐴𝑘)[,)(𝐵𝑘))) = ∏𝑘𝑋 ((𝐵𝑘) − (𝐴𝑘)))
4847eqcomd 2772 . . . . 5 (((𝜑𝑋 ≠ ∅) ∧ ∀𝑘𝑋 (𝐴𝑘) ≤ (𝐵𝑘)) → ∏𝑘𝑋 ((𝐵𝑘) − (𝐴𝑘)) = ∏𝑘𝑋 (vol‘((𝐴𝑘)[,)(𝐵𝑘))))
49 fveq2 6888 . . . . . . . . 9 (𝑘 = 𝑗 → (𝐴𝑘) = (𝐴𝑗))
50 fveq2 6888 . . . . . . . . 9 (𝑘 = 𝑗 → (𝐵𝑘) = (𝐵𝑗))
5149, 50breq12d 5127 . . . . . . . 8 (𝑘 = 𝑗 → ((𝐴𝑘) ≤ (𝐵𝑘) ↔ (𝐴𝑗) ≤ (𝐵𝑗)))
5251cbvralvw 3246 . . . . . . 7 (∀𝑘𝑋 (𝐴𝑘) ≤ (𝐵𝑘) ↔ ∀𝑗𝑋 (𝐴𝑗) ≤ (𝐵𝑗))
5352bilani 510 . . . . . 6 (((𝜑𝑋 ≠ ∅) ∧ ∀𝑘𝑋 (𝐴𝑘) ≤ (𝐵𝑘)) → ∀𝑗𝑋 (𝐴𝑗) ≤ (𝐵𝑗))
54 vonicc.x . . . . . . . . 9 (𝜑𝑋 ∈ Fin)
5554adantr 486 . . . . . . . 8 ((𝜑𝑋 ≠ ∅) → 𝑋 ∈ Fin)
5655adantr 486 . . . . . . 7 (((𝜑𝑋 ≠ ∅) ∧ ∀𝑗𝑋 (𝐴𝑗) ≤ (𝐵𝑗)) → 𝑋 ∈ Fin)
572adantr 486 . . . . . . . 8 ((𝜑𝑋 ≠ ∅) → 𝐴:𝑋⟶ℝ)
5857adantr 486 . . . . . . 7 (((𝜑𝑋 ≠ ∅) ∧ ∀𝑗𝑋 (𝐴𝑗) ≤ (𝐵𝑗)) → 𝐴:𝑋⟶ℝ)
597adantr 486 . . . . . . . 8 ((𝜑𝑋 ≠ ∅) → 𝐵:𝑋⟶ℝ)
6059adantr 486 . . . . . . 7 (((𝜑𝑋 ≠ ∅) ∧ ∀𝑗𝑋 (𝐴𝑗) ≤ (𝐵𝑗)) → 𝐵:𝑋⟶ℝ)
61 simpr 490 . . . . . . . 8 ((𝜑𝑋 ≠ ∅) → 𝑋 ≠ ∅)
6261adantr 486 . . . . . . 7 (((𝜑𝑋 ≠ ∅) ∧ ∀𝑗𝑋 (𝐴𝑗) ≤ (𝐵𝑗)) → 𝑋 ≠ ∅)
6352, 41sylanbr 594 . . . . . . . 8 ((∀𝑗𝑋 (𝐴𝑗) ≤ (𝐵𝑗) ∧ 𝑘𝑋) → (𝐴𝑘) ≤ (𝐵𝑘))
6463adantll 727 . . . . . . 7 ((((𝜑𝑋 ≠ ∅) ∧ ∀𝑗𝑋 (𝐴𝑗) ≤ (𝐵𝑗)) ∧ 𝑘𝑋) → (𝐴𝑘) ≤ (𝐵𝑘))
65 fveq2 6888 . . . . . . . . . . 11 (𝑗 = 𝑘 → (𝐵𝑗) = (𝐵𝑘))
6665oveq1d 7438 . . . . . . . . . 10 (𝑗 = 𝑘 → ((𝐵𝑗) + (1 / 𝑚)) = ((𝐵𝑘) + (1 / 𝑚)))
6766cbvmptv 5220 . . . . . . . . 9 (𝑗𝑋 ↦ ((𝐵𝑗) + (1 / 𝑚))) = (𝑘𝑋 ↦ ((𝐵𝑘) + (1 / 𝑚)))
6867mpteq2i 5212 . . . . . . . 8 (𝑚 ∈ ℕ ↦ (𝑗𝑋 ↦ ((𝐵𝑗) + (1 / 𝑚)))) = (𝑚 ∈ ℕ ↦ (𝑘𝑋 ↦ ((𝐵𝑘) + (1 / 𝑚))))
69 oveq2 7431 . . . . . . . . . . 11 (𝑚 = 𝑛 → (1 / 𝑚) = (1 / 𝑛))
7069oveq2d 7439 . . . . . . . . . 10 (𝑚 = 𝑛 → ((𝐵𝑘) + (1 / 𝑚)) = ((𝐵𝑘) + (1 / 𝑛)))
7170mpteq2dv 5210 . . . . . . . . 9 (𝑚 = 𝑛 → (𝑘𝑋 ↦ ((𝐵𝑘) + (1 / 𝑚))) = (𝑘𝑋 ↦ ((𝐵𝑘) + (1 / 𝑛))))
7271cbvmptv 5220 . . . . . . . 8 (𝑚 ∈ ℕ ↦ (𝑘𝑋 ↦ ((𝐵𝑘) + (1 / 𝑚)))) = (𝑛 ∈ ℕ ↦ (𝑘𝑋 ↦ ((𝐵𝑘) + (1 / 𝑛))))
7368, 72eqtri 2789 . . . . . . 7 (𝑚 ∈ ℕ ↦ (𝑗𝑋 ↦ ((𝐵𝑗) + (1 / 𝑚)))) = (𝑛 ∈ ℕ ↦ (𝑘𝑋 ↦ ((𝐵𝑘) + (1 / 𝑛))))
74 fveq2 6888 . . . . . . . . . . 11 (𝑖 = 𝑛 → ((𝑚 ∈ ℕ ↦ (𝑗𝑋 ↦ ((𝐵𝑗) + (1 / 𝑚))))‘𝑖) = ((𝑚 ∈ ℕ ↦ (𝑗𝑋 ↦ ((𝐵𝑗) + (1 / 𝑚))))‘𝑛))
7574fveq1d 6890 . . . . . . . . . 10 (𝑖 = 𝑛 → (((𝑚 ∈ ℕ ↦ (𝑗𝑋 ↦ ((𝐵𝑗) + (1 / 𝑚))))‘𝑖)‘𝑘) = (((𝑚 ∈ ℕ ↦ (𝑗𝑋 ↦ ((𝐵𝑗) + (1 / 𝑚))))‘𝑛)‘𝑘))
7675oveq2d 7439 . . . . . . . . 9 (𝑖 = 𝑛 → ((𝐴𝑘)[,)(((𝑚 ∈ ℕ ↦ (𝑗𝑋 ↦ ((𝐵𝑗) + (1 / 𝑚))))‘𝑖)‘𝑘)) = ((𝐴𝑘)[,)(((𝑚 ∈ ℕ ↦ (𝑗𝑋 ↦ ((𝐵𝑗) + (1 / 𝑚))))‘𝑛)‘𝑘)))
7776ixpeq2dv 8920 . . . . . . . 8 (𝑖 = 𝑛X𝑘𝑋 ((𝐴𝑘)[,)(((𝑚 ∈ ℕ ↦ (𝑗𝑋 ↦ ((𝐵𝑗) + (1 / 𝑚))))‘𝑖)‘𝑘)) = X𝑘𝑋 ((𝐴𝑘)[,)(((𝑚 ∈ ℕ ↦ (𝑗𝑋 ↦ ((𝐵𝑗) + (1 / 𝑚))))‘𝑛)‘𝑘)))
7877cbvmptv 5220 . . . . . . 7 (𝑖 ∈ ℕ ↦ X𝑘𝑋 ((𝐴𝑘)[,)(((𝑚 ∈ ℕ ↦ (𝑗𝑋 ↦ ((𝐵𝑗) + (1 / 𝑚))))‘𝑖)‘𝑘))) = (𝑛 ∈ ℕ ↦ X𝑘𝑋 ((𝐴𝑘)[,)(((𝑚 ∈ ℕ ↦ (𝑗𝑋 ↦ ((𝐵𝑗) + (1 / 𝑚))))‘𝑛)‘𝑘)))
7956, 58, 60, 62, 64, 15, 73, 78vonicclem2 47439 . . . . . 6 (((𝜑𝑋 ≠ ∅) ∧ ∀𝑗𝑋 (𝐴𝑗) ≤ (𝐵𝑗)) → ((voln‘𝑋)‘𝐼) = ∏𝑘𝑋 ((𝐵𝑘) − (𝐴𝑘)))
8053, 79syldan 603 . . . . 5 (((𝜑𝑋 ≠ ∅) ∧ ∀𝑘𝑋 (𝐴𝑘) ≤ (𝐵𝑘)) → ((voln‘𝑋)‘𝐼) = ∏𝑘𝑋 ((𝐵𝑘) − (𝐴𝑘)))
811, 55, 61, 57, 59hoidmvn0val 47339 . . . . . 6 ((𝜑𝑋 ≠ ∅) → (𝐴(𝐿𝑋)𝐵) = ∏𝑘𝑋 (vol‘((𝐴𝑘)[,)(𝐵𝑘))))
8281adantr 486 . . . . 5 (((𝜑𝑋 ≠ ∅) ∧ ∀𝑘𝑋 (𝐴𝑘) ≤ (𝐵𝑘)) → (𝐴(𝐿𝑋)𝐵) = ∏𝑘𝑋 (vol‘((𝐴𝑘)[,)(𝐵𝑘))))
8348, 80, 823eqtr4d 2811 . . . 4 (((𝜑𝑋 ≠ ∅) ∧ ∀𝑘𝑋 (𝐴𝑘) ≤ (𝐵𝑘)) → ((voln‘𝑋)‘𝐼) = (𝐴(𝐿𝑋)𝐵))
84 rexnal 3120 . . . . . . . 8 (∃𝑘𝑋 ¬ (𝐴𝑘) ≤ (𝐵𝑘) ↔ ¬ ∀𝑘𝑋 (𝐴𝑘) ≤ (𝐵𝑘))
8584bilanri 512 . . . . . . 7 ((𝜑 ∧ ¬ ∀𝑘𝑋 (𝐴𝑘) ≤ (𝐵𝑘)) → ∃𝑘𝑋 ¬ (𝐴𝑘) ≤ (𝐵𝑘))
86 simpr 490 . . . . . . . . . . 11 (((𝜑𝑘𝑋) ∧ ¬ (𝐴𝑘) ≤ (𝐵𝑘)) → ¬ (𝐴𝑘) ≤ (𝐵𝑘))
8737adantr 486 . . . . . . . . . . . 12 (((𝜑𝑘𝑋) ∧ ¬ (𝐴𝑘) ≤ (𝐵𝑘)) → (𝐵𝑘) ∈ ℝ)
8836adantr 486 . . . . . . . . . . . 12 (((𝜑𝑘𝑋) ∧ ¬ (𝐴𝑘) ≤ (𝐵𝑘)) → (𝐴𝑘) ∈ ℝ)
8987, 88ltnled 11375 . . . . . . . . . . 11 (((𝜑𝑘𝑋) ∧ ¬ (𝐴𝑘) ≤ (𝐵𝑘)) → ((𝐵𝑘) < (𝐴𝑘) ↔ ¬ (𝐴𝑘) ≤ (𝐵𝑘)))
9086, 89mpbird 260 . . . . . . . . . 10 (((𝜑𝑘𝑋) ∧ ¬ (𝐴𝑘) ≤ (𝐵𝑘)) → (𝐵𝑘) < (𝐴𝑘))
9190ex 418 . . . . . . . . 9 ((𝜑𝑘𝑋) → (¬ (𝐴𝑘) ≤ (𝐵𝑘) → (𝐵𝑘) < (𝐴𝑘)))
9291reximdva 3181 . . . . . . . 8 (𝜑 → (∃𝑘𝑋 ¬ (𝐴𝑘) ≤ (𝐵𝑘) → ∃𝑘𝑋 (𝐵𝑘) < (𝐴𝑘)))
9392adantr 486 . . . . . . 7 ((𝜑 ∧ ¬ ∀𝑘𝑋 (𝐴𝑘) ≤ (𝐵𝑘)) → (∃𝑘𝑋 ¬ (𝐴𝑘) ≤ (𝐵𝑘) → ∃𝑘𝑋 (𝐵𝑘) < (𝐴𝑘)))
9485, 93mpd 16 . . . . . 6 ((𝜑 ∧ ¬ ∀𝑘𝑋 (𝐴𝑘) ≤ (𝐵𝑘)) → ∃𝑘𝑋 (𝐵𝑘) < (𝐴𝑘))
9594adantlr 728 . . . . 5 (((𝜑𝑋 ≠ ∅) ∧ ¬ ∀𝑘𝑋 (𝐴𝑘) ≤ (𝐵𝑘)) → ∃𝑘𝑋 (𝐵𝑘) < (𝐴𝑘))
96 nfcv 2928 . . . . . . . . 9 𝑘(voln‘𝑋)
97 nfixp1 8925 . . . . . . . . . 10 𝑘X𝑘𝑋 ((𝐴𝑘)[,](𝐵𝑘))
9815, 97nfcxfr 2926 . . . . . . . . 9 𝑘𝐼
9996, 98nffv 6898 . . . . . . . 8 𝑘((voln‘𝑋)‘𝐼)
100 nfcv 2928 . . . . . . . . 9 𝑘𝐴
101 nfcv 2928 . . . . . . . . . . . 12 𝑘Fin
102 nfcv 2928 . . . . . . . . . . . . 13 𝑘(ℝ ↑m 𝑥)
103 nfv 1947 . . . . . . . . . . . . . 14 𝑘 𝑥 = ∅
104 nfcv 2928 . . . . . . . . . . . . . 14 𝑘0
105 nfcv 2928 . . . . . . . . . . . . . . 15 𝑘𝑥
106105nfcprod1 15988 . . . . . . . . . . . . . 14 𝑘𝑘𝑥 (vol‘((𝑎𝑘)[,)(𝑏𝑘)))
107103, 104, 106nfif 4523 . . . . . . . . . . . . 13 𝑘if(𝑥 = ∅, 0, ∏𝑘𝑥 (vol‘((𝑎𝑘)[,)(𝑏𝑘))))
108102, 102, 107nfmpo 7505 . . . . . . . . . . . 12 𝑘(𝑎 ∈ (ℝ ↑m 𝑥), 𝑏 ∈ (ℝ ↑m 𝑥) ↦ if(𝑥 = ∅, 0, ∏𝑘𝑥 (vol‘((𝑎𝑘)[,)(𝑏𝑘)))))
109101, 108nfmpt 5214 . . . . . . . . . . 11 𝑘(𝑥 ∈ Fin ↦ (𝑎 ∈ (ℝ ↑m 𝑥), 𝑏 ∈ (ℝ ↑m 𝑥) ↦ if(𝑥 = ∅, 0, ∏𝑘𝑥 (vol‘((𝑎𝑘)[,)(𝑏𝑘))))))
1101, 109nfcxfr 2926 . . . . . . . . . 10 𝑘𝐿
111 nfcv 2928 . . . . . . . . . 10 𝑘𝑋
112110, 111nffv 6898 . . . . . . . . 9 𝑘(𝐿𝑋)
113 nfcv 2928 . . . . . . . . 9 𝑘𝐵
114100, 112, 113nfov 7453 . . . . . . . 8 𝑘(𝐴(𝐿𝑋)𝐵)
11599, 114nfeq 2941 . . . . . . 7 𝑘((voln‘𝑋)‘𝐼) = (𝐴(𝐿𝑋)𝐵)
11654vonmea 47329 . . . . . . . . . . . 12 (𝜑 → (voln‘𝑋) ∈ Meas)
117116mea0 47209 . . . . . . . . . . 11 (𝜑 → ((voln‘𝑋)‘∅) = 0)
1181173ad2ant1 1151 . . . . . . . . . 10 ((𝜑𝑘𝑋 ∧ (𝐵𝑘) < (𝐴𝑘)) → ((voln‘𝑋)‘∅) = 0)
11915a1i 11 . . . . . . . . . . . 12 ((𝜑𝑘𝑋 ∧ (𝐵𝑘) < (𝐴𝑘)) → 𝐼 = X𝑘𝑋 ((𝐴𝑘)[,](𝐵𝑘)))
120 simp2 1155 . . . . . . . . . . . . . 14 ((𝜑𝑘𝑋 ∧ (𝐵𝑘) < (𝐴𝑘)) → 𝑘𝑋)
121 simp3 1156 . . . . . . . . . . . . . . 15 ((𝜑𝑘𝑋 ∧ (𝐵𝑘) < (𝐴𝑘)) → (𝐵𝑘) < (𝐴𝑘))
122 ressxr 11271 . . . . . . . . . . . . . . . . . 18 ℝ ⊆ ℝ*
123122, 36sselid 3938 . . . . . . . . . . . . . . . . 17 ((𝜑𝑘𝑋) → (𝐴𝑘) ∈ ℝ*)
124122, 37sselid 3938 . . . . . . . . . . . . . . . . 17 ((𝜑𝑘𝑋) → (𝐵𝑘) ∈ ℝ*)
125 icc0 13438 . . . . . . . . . . . . . . . . 17 (((𝐴𝑘) ∈ ℝ* ∧ (𝐵𝑘) ∈ ℝ*) → (((𝐴𝑘)[,](𝐵𝑘)) = ∅ ↔ (𝐵𝑘) < (𝐴𝑘)))
126123, 124, 125syl2anc 596 . . . . . . . . . . . . . . . 16 ((𝜑𝑘𝑋) → (((𝐴𝑘)[,](𝐵𝑘)) = ∅ ↔ (𝐵𝑘) < (𝐴𝑘)))
1271263adant3 1150 . . . . . . . . . . . . . . 15 ((𝜑𝑘𝑋 ∧ (𝐵𝑘) < (𝐴𝑘)) → (((𝐴𝑘)[,](𝐵𝑘)) = ∅ ↔ (𝐵𝑘) < (𝐴𝑘)))
128121, 127mpbird 260 . . . . . . . . . . . . . 14 ((𝜑𝑘𝑋 ∧ (𝐵𝑘) < (𝐴𝑘)) → ((𝐴𝑘)[,](𝐵𝑘)) = ∅)
129 rspe 3258 . . . . . . . . . . . . . 14 ((𝑘𝑋 ∧ ((𝐴𝑘)[,](𝐵𝑘)) = ∅) → ∃𝑘𝑋 ((𝐴𝑘)[,](𝐵𝑘)) = ∅)
130120, 128, 129syl2anc 596 . . . . . . . . . . . . 13 ((𝜑𝑘𝑋 ∧ (𝐵𝑘) < (𝐴𝑘)) → ∃𝑘𝑋 ((𝐴𝑘)[,](𝐵𝑘)) = ∅)
131 ixp0 8938 . . . . . . . . . . . . 13 (∃𝑘𝑋 ((𝐴𝑘)[,](𝐵𝑘)) = ∅ → X𝑘𝑋 ((𝐴𝑘)[,](𝐵𝑘)) = ∅)
132130, 131syl 18 . . . . . . . . . . . 12 ((𝜑𝑘𝑋 ∧ (𝐵𝑘) < (𝐴𝑘)) → X𝑘𝑋 ((𝐴𝑘)[,](𝐵𝑘)) = ∅)
133119, 132eqtrd 2801 . . . . . . . . . . 11 ((𝜑𝑘𝑋 ∧ (𝐵𝑘) < (𝐴𝑘)) → 𝐼 = ∅)
134133fveq2d 6892 . . . . . . . . . 10 ((𝜑𝑘𝑋 ∧ (𝐵𝑘) < (𝐴𝑘)) → ((voln‘𝑋)‘𝐼) = ((voln‘𝑋)‘∅))
135 ne0i 4297 . . . . . . . . . . . . . 14 (𝑘𝑋𝑋 ≠ ∅)
136135adantl 487 . . . . . . . . . . . . 13 ((𝜑𝑘𝑋) → 𝑋 ≠ ∅)
137136, 81syldan 603 . . . . . . . . . . . 12 ((𝜑𝑘𝑋) → (𝐴(𝐿𝑋)𝐵) = ∏𝑘𝑋 (vol‘((𝐴𝑘)[,)(𝐵𝑘))))
1381373adant3 1150 . . . . . . . . . . 11 ((𝜑𝑘𝑋 ∧ (𝐵𝑘) < (𝐴𝑘)) → (𝐴(𝐿𝑋)𝐵) = ∏𝑘𝑋 (vol‘((𝐴𝑘)[,)(𝐵𝑘))))
139 eleq1w 2849 . . . . . . . . . . . . . 14 (𝑗 = 𝑘 → (𝑗𝑋𝑘𝑋))
140 fveq2 6888 . . . . . . . . . . . . . . 15 (𝑗 = 𝑘 → (𝐴𝑗) = (𝐴𝑘))
14165, 140breq12d 5127 . . . . . . . . . . . . . 14 (𝑗 = 𝑘 → ((𝐵𝑗) < (𝐴𝑗) ↔ (𝐵𝑘) < (𝐴𝑘)))
142139, 1413anbi23d 1467 . . . . . . . . . . . . 13 (𝑗 = 𝑘 → ((𝜑𝑗𝑋 ∧ (𝐵𝑗) < (𝐴𝑗)) ↔ (𝜑𝑘𝑋 ∧ (𝐵𝑘) < (𝐴𝑘))))
143142imbi1d 344 . . . . . . . . . . . 12 (𝑗 = 𝑘 → (((𝜑𝑗𝑋 ∧ (𝐵𝑗) < (𝐴𝑗)) → ∏𝑘𝑋 (vol‘((𝐴𝑘)[,)(𝐵𝑘))) = 0) ↔ ((𝜑𝑘𝑋 ∧ (𝐵𝑘) < (𝐴𝑘)) → ∏𝑘𝑋 (vol‘((𝐴𝑘)[,)(𝐵𝑘))) = 0)))
144 nfv 1947 . . . . . . . . . . . . 13 𝑘(𝜑𝑗𝑋 ∧ (𝐵𝑗) < (𝐴𝑗))
145543ad2ant1 1151 . . . . . . . . . . . . 13 ((𝜑𝑗𝑋 ∧ (𝐵𝑗) < (𝐴𝑗)) → 𝑋 ∈ Fin)
146 volicore 47336 . . . . . . . . . . . . . . . 16 (((𝐴𝑘) ∈ ℝ ∧ (𝐵𝑘) ∈ ℝ) → (vol‘((𝐴𝑘)[,)(𝐵𝑘))) ∈ ℝ)
14736, 37, 146syl2anc 596 . . . . . . . . . . . . . . 15 ((𝜑𝑘𝑋) → (vol‘((𝐴𝑘)[,)(𝐵𝑘))) ∈ ℝ)
148147recnd 11255 . . . . . . . . . . . . . 14 ((𝜑𝑘𝑋) → (vol‘((𝐴𝑘)[,)(𝐵𝑘))) ∈ ℂ)
1491483ad2antl1 1204 . . . . . . . . . . . . 13 (((𝜑𝑗𝑋 ∧ (𝐵𝑗) < (𝐴𝑗)) ∧ 𝑘𝑋) → (vol‘((𝐴𝑘)[,)(𝐵𝑘))) ∈ ℂ)
150 simp2 1155 . . . . . . . . . . . . 13 ((𝜑𝑗𝑋 ∧ (𝐵𝑗) < (𝐴𝑗)) → 𝑗𝑋)
15149, 50oveq12d 7441 . . . . . . . . . . . . . . . 16 (𝑘 = 𝑗 → ((𝐴𝑘)[,)(𝐵𝑘)) = ((𝐴𝑗)[,)(𝐵𝑗)))
152151fveq2d 6892 . . . . . . . . . . . . . . 15 (𝑘 = 𝑗 → (vol‘((𝐴𝑘)[,)(𝐵𝑘))) = (vol‘((𝐴𝑗)[,)(𝐵𝑗))))
153152adantl 487 . . . . . . . . . . . . . 14 (((𝜑𝑗𝑋 ∧ (𝐵𝑗) < (𝐴𝑗)) ∧ 𝑘 = 𝑗) → (vol‘((𝐴𝑘)[,)(𝐵𝑘))) = (vol‘((𝐴𝑗)[,)(𝐵𝑗))))
1542ffvelcdmda 7086 . . . . . . . . . . . . . . . . . 18 ((𝜑𝑗𝑋) → (𝐴𝑗) ∈ ℝ)
1557ffvelcdmda 7086 . . . . . . . . . . . . . . . . . 18 ((𝜑𝑗𝑋) → (𝐵𝑗) ∈ ℝ)
156 volico2 47396 . . . . . . . . . . . . . . . . . 18 (((𝐴𝑗) ∈ ℝ ∧ (𝐵𝑗) ∈ ℝ) → (vol‘((𝐴𝑗)[,)(𝐵𝑗))) = if((𝐴𝑗) ≤ (𝐵𝑗), ((𝐵𝑗) − (𝐴𝑗)), 0))
157154, 155, 156syl2anc 596 . . . . . . . . . . . . . . . . 17 ((𝜑𝑗𝑋) → (vol‘((𝐴𝑗)[,)(𝐵𝑗))) = if((𝐴𝑗) ≤ (𝐵𝑗), ((𝐵𝑗) − (𝐴𝑗)), 0))
1581573adant3 1150 . . . . . . . . . . . . . . . 16 ((𝜑𝑗𝑋 ∧ (𝐵𝑗) < (𝐴𝑗)) → (vol‘((𝐴𝑗)[,)(𝐵𝑗))) = if((𝐴𝑗) ≤ (𝐵𝑗), ((𝐵𝑗) − (𝐴𝑗)), 0))
159 simp3 1156 . . . . . . . . . . . . . . . . . 18 ((𝜑𝑗𝑋 ∧ (𝐵𝑗) < (𝐴𝑗)) → (𝐵𝑗) < (𝐴𝑗))
160155, 154ltnled 11375 . . . . . . . . . . . . . . . . . . 19 ((𝜑𝑗𝑋) → ((𝐵𝑗) < (𝐴𝑗) ↔ ¬ (𝐴𝑗) ≤ (𝐵𝑗)))
1611603adant3 1150 . . . . . . . . . . . . . . . . . 18 ((𝜑𝑗𝑋 ∧ (𝐵𝑗) < (𝐴𝑗)) → ((𝐵𝑗) < (𝐴𝑗) ↔ ¬ (𝐴𝑗) ≤ (𝐵𝑗)))
162159, 161mpbid 235 . . . . . . . . . . . . . . . . 17 ((𝜑𝑗𝑋 ∧ (𝐵𝑗) < (𝐴𝑗)) → ¬ (𝐴𝑗) ≤ (𝐵𝑗))
163162iffalsed 4503 . . . . . . . . . . . . . . . 16 ((𝜑𝑗𝑋 ∧ (𝐵𝑗) < (𝐴𝑗)) → if((𝐴𝑗) ≤ (𝐵𝑗), ((𝐵𝑗) − (𝐴𝑗)), 0) = 0)
164158, 163eqtrd 2801 . . . . . . . . . . . . . . 15 ((𝜑𝑗𝑋 ∧ (𝐵𝑗) < (𝐴𝑗)) → (vol‘((𝐴𝑗)[,)(𝐵𝑗))) = 0)
165164adantr 486 . . . . . . . . . . . . . 14 (((𝜑𝑗𝑋 ∧ (𝐵𝑗) < (𝐴𝑗)) ∧ 𝑘 = 𝑗) → (vol‘((𝐴𝑗)[,)(𝐵𝑗))) = 0)
166153, 165eqtrd 2801 . . . . . . . . . . . . 13 (((𝜑𝑗𝑋 ∧ (𝐵𝑗) < (𝐴𝑗)) ∧ 𝑘 = 𝑗) → (vol‘((𝐴𝑘)[,)(𝐵𝑘))) = 0)
167144, 145, 149, 150, 166fprodeq0g 16074 . . . . . . . . . . . 12 ((𝜑𝑗𝑋 ∧ (𝐵𝑗) < (𝐴𝑗)) → ∏𝑘𝑋 (vol‘((𝐴𝑘)[,)(𝐵𝑘))) = 0)
168143, 167chvarvv 2022 . . . . . . . . . . 11 ((𝜑𝑘𝑋 ∧ (𝐵𝑘) < (𝐴𝑘)) → ∏𝑘𝑋 (vol‘((𝐴𝑘)[,)(𝐵𝑘))) = 0)
169138, 168eqtrd 2801 . . . . . . . . . 10 ((𝜑𝑘𝑋 ∧ (𝐵𝑘) < (𝐴𝑘)) → (𝐴(𝐿𝑋)𝐵) = 0)
170118, 134, 1693eqtr4d 2811 . . . . . . . . 9 ((𝜑𝑘𝑋 ∧ (𝐵𝑘) < (𝐴𝑘)) → ((voln‘𝑋)‘𝐼) = (𝐴(𝐿𝑋)𝐵))
1711703exp 1137 . . . . . . . 8 (𝜑 → (𝑘𝑋 → ((𝐵𝑘) < (𝐴𝑘) → ((voln‘𝑋)‘𝐼) = (𝐴(𝐿𝑋)𝐵))))
172171adantr 486 . . . . . . 7 ((𝜑𝑋 ≠ ∅) → (𝑘𝑋 → ((𝐵𝑘) < (𝐴𝑘) → ((voln‘𝑋)‘𝐼) = (𝐴(𝐿𝑋)𝐵))))
17333, 115, 172rexlimd 3275 . . . . . 6 ((𝜑𝑋 ≠ ∅) → (∃𝑘𝑋 (𝐵𝑘) < (𝐴𝑘) → ((voln‘𝑋)‘𝐼) = (𝐴(𝐿𝑋)𝐵)))
174173imp 412 . . . . 5 (((𝜑𝑋 ≠ ∅) ∧ ∃𝑘𝑋 (𝐵𝑘) < (𝐴𝑘)) → ((voln‘𝑋)‘𝐼) = (𝐴(𝐿𝑋)𝐵))
17595, 174syldan 603 . . . 4 (((𝜑𝑋 ≠ ∅) ∧ ¬ ∀𝑘𝑋 (𝐴𝑘) ≤ (𝐵𝑘)) → ((voln‘𝑋)‘𝐼) = (𝐴(𝐿𝑋)𝐵))
17683, 175pm2.61dan 825 . . 3 ((𝜑𝑋 ≠ ∅) → ((voln‘𝑋)‘𝐼) = (𝐴(𝐿𝑋)𝐵))
17732, 176syldan 603 . 2 ((𝜑 ∧ ¬ 𝑋 = ∅) → ((voln‘𝑋)‘𝐼) = (𝐴(𝐿𝑋)𝐵))
17830, 177pm2.61dan 825 1 (𝜑 → ((voln‘𝑋)‘𝐼) = (𝐴(𝐿𝑋)𝐵))
Colors of variables:    wff setvar class
This proof depends on syntax axioms:  ¬ wn 3  wi 4  wb 209  wa 401  w3a 1103   = wceq 1570  wcel 2146  wne 2961  wral 3082  wrex 3092  c0 4289  ifcif 4492   class class class wbr 5114  cmpt 5197  dom cdm 5666  wf 6539  cfv 6543  (class class class)co 7423  cmpo 7425  m cmap 8833  Xcixp 8904  Fincfn 8952  cc 11116  cr 11117  0cc0 11118  1c1 11119   + caddc 11121  *cxr 11260   < clt 11261  cle 11262  cmin 11459   / cdiv 11889  cn 12251  [,)cico 13392  [,]cicc 13393  cprod 15983  volcvol 25659  volncvoln 47293
This proof depends on axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1828  ax-4 1842  ax-5 1943  ax-6 2000  ax-7 2041  ax-8 2148  ax-9 2156  ax-10 2179  ax-11 2195  ax-12 2216  ax-ext 2738  ax-rep 5243  ax-sep 5262  ax-nul 5274  ax-pow 5341  ax-pr 5409  ax-un 7745  ax-inf2 9620  ax-cc 10437  ax-ac2 10465  ax-cnex 11174  ax-resscn 11175  ax-1cn 11176  ax-icn 11177  ax-addcl 11178  ax-addrcl 11179  ax-mulcl 11180  ax-mulrcl 11181  ax-mulcom 11182  ax-addass 11183  ax-mulass 11184  ax-distr 11185  ax-i2m1 11186  ax-1ne0 11187  ax-1rid 11188  ax-rnegex 11189  ax-rrecex 11190  ax-cnre 11191  ax-pre-lttri 11192  ax-pre-lttrn 11193  ax-pre-ltadd 11194  ax-pre-mulgt0 11195  ax-pre-sup 11196  ax-addf 11197  ax-mulf 11198
This proof depends on definitions:  df-bi 210  df-an 402  df-or 862  df-3or 1104  df-3an 1105  df-tru 1573  df-fal 1583  df-ex 1813  df-nf 1817  df-sb 2100  df-mo 2570  df-eu 2600  df-clab 2745  df-cleq 2758  df-clel 2841  df-nfc 2915  df-ne 2962  df-nel 3068  df-ral 3083  df-rex 3093  df-rmo 3372  df-reu 3373  df-rab 3420  df-v 3460  df-sbc 3748  df-csb 3857  df-dif 3911  df-un 3913  df-in 3915  df-ss 3925  df-pss 3928  df-nul 4290  df-if 4493  df-pw 4569  df-sn 4595  df-pr 4597  df-tp 4599  df-op 4601  df-uni 4878  df-int 4918  df-iun 4963  df-iin 4964  df-disj 5082  df-br 5115  df-opab 5179  df-mpt 5198  df-tr 5224  df-id 5561  df-eprel 5566  df-po 5574  df-so 5575  df-fr 5619  df-se 5620  df-we 5621  df-xp 5672  df-rel 5673  df-cnv 5674  df-co 5675  df-dm 5676  df-rn 5677  df-res 5678  df-ima 5679  df-pred 6309  df-ord 6370  df-on 6371  df-lim 6372  df-suc 6373  df-iota 6499  df-fun 6545  df-fn 6546  df-f 6547  df-f1 6548  df-fo 6549  df-f1o 6550  df-fv 6551  df-isom 6552  df-riota 7380  df-ov 7426  df-oprab 7427  df-mpo 7428  df-of 7687  df-om 7872  df-1st 7995  df-2nd 7996  df-supp 8166  df-tpos 8231  df-frecs 8287  df-wrecs 8318  df-recs 8367  df-rdg 8406  df-1o 8462  df-2o 8463  df-oadd 8466  df-omul 8467  df-er 8703  df-map 8835  df-pm 8836  df-ixp 8905  df-en 8953  df-dom 8954  df-sdom 8955  df-fin 8956  df-fsupp 9332  df-fi 9381  df-sup 9412  df-inf 9413  df-oi 9482  df-dju 9906  df-card 9944  df-acn 9947  df-ac 10119  df-pnf 11263  df-mnf 11264  df-xr 11265  df-ltxr 11266  df-le 11267  df-sub 11461  df-neg 11462  df-div 11890  df-nn 12252  df-2 12321  df-3 12322  df-4 12323  df-5 12324  df-6 12325  df-7 12326  df-8 12327  df-9 12328  df-n0 12523  df-z 12610  df-dec 12730  df-uz 12881  df-q 12991  df-rp 13035  df-xneg 13155  df-xadd 13156  df-xmul 13157  df-ioo 13394  df-ico 13396  df-icc 13397  df-fz 13554  df-fzo 13702  df-fl 13845  df-seq 14058  df-exp 14118  df-hash 14387  df-cj 15176  df-re 15177  df-im 15178  df-sqrt 15312  df-abs 15313  df-clim 15565  df-rlim 15566  df-sum 15764  df-prod 15984  df-struct 17232  df-sets 17249  df-slot 17267  df-ndx 17279  df-base 17295  df-ress 17316  df-plusg 17348  df-mulr 17349  df-starv 17350  df-sca 17351  df-vsca 17352  df-ip 17353  df-tset 17354  df-ple 17355  df-ds 17357  df-unif 17358  df-hom 17359  df-cco 17360  df-rest 17500  df-topn 17501  df-0g 17519  df-gsum 17520  df-topgen 17521  df-pt 17522  df-prds 17525  df-pws 17527  df-xrs 17581  df-qtop 17586  df-imas 17587  df-xps 17589  df-mre 17663  df-mrc 17664  df-acs 17666  df-mgm 18723  df-sgrp 18806  df-mnd 18822  df-mhm 18872  df-submnd 18873  df-grp 19034  df-minusg 19035  df-sbg 19036  df-mulg 19165  df-subg 19220  df-ghm 19315  df-cntz 19418  df-cmn 19883  df-abl 19884  df-mgp 20248  df-rng 20262  df-ur 20295  df-ring 20348  df-cring 20349  df-oppr 20452  df-dvdsr 20472  df-unit 20473  df-invr 20503  df-dvr 20516  df-rhm 20587  df-subrng 20682  df-subrg 20706  df-drng 20866  df-field 20867  df-abv 20949  df-staf 20979  df-srng 20980  df-lmod 21020  df-lss 21090  df-lmhm 21180  df-lvec 21261  df-sra 21331  df-rgmod 21332  df-psmet 21551  df-xmet 21552  df-met 21553  df-bl 21554  df-mopn 21555  df-cnfld 21560  df-refld 21792  df-phl 21813  df-dsmm 21919  df-frlm 21934  df-top 23088  df-topon 23105  df-topsp 23127  df-bases 23140  df-cn 23421  df-cnp 23422  df-cmp 23581  df-tx 23756  df-hmeo 23949  df-xms 24514  df-ms 24515  df-tms 24516  df-nm 24776  df-ngp 24777  df-tng 24778  df-nrg 24779  df-nlm 24780  df-cncf 25074  df-clm 25259  df-cph 25364  df-tcph 25365  df-rrx 25581  df-ovol 25660  df-vol 25661  df-salg 47064  df-sumge0 47118  df-mea 47205  df-ome 47245  df-caragen 47247  df-ovoln 47292  df-voln 47294
This theorem is used by:  vonn0icc  47443
  Copyright terms: Public domain W3C validator