ILE Home Intuitionistic Logic Explorer < Previous   Next >
Nearby theorems
Mirrors  >  Home  >  ILE Home  >  Th. List  >  dvcj GIF version

Theorem dvcj 15029
Description: The derivative of the conjugate of a function. For the (more general) relation version, see dvcjbr 15028. (Contributed by Mario Carneiro, 1-Sep-2014.) (Revised by Mario Carneiro, 10-Feb-2015.)
Assertion
Ref Expression
dvcj ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → (ℝ D (∗ ∘ 𝐹)) = (∗ ∘ (ℝ D 𝐹)))

Proof of Theorem dvcj
Dummy variables 𝑥 𝑦 are mutually distinct and distinct from all other variables.
StepHypRef Expression
1 simpll 527 . . . . 5 (((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) ∧ 𝑥 ∈ dom (ℝ D 𝐹)) → 𝐹:𝑋⟶ℂ)
2 simplr 528 . . . . 5 (((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) ∧ 𝑥 ∈ dom (ℝ D 𝐹)) → 𝑋 ⊆ ℝ)
3 simpr 110 . . . . 5 (((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) ∧ 𝑥 ∈ dom (ℝ D 𝐹)) → 𝑥 ∈ dom (ℝ D 𝐹))
41, 2, 3dvcjbr 15028 . . . 4 (((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) ∧ 𝑥 ∈ dom (ℝ D 𝐹)) → 𝑥(ℝ D (∗ ∘ 𝐹))(∗‘((ℝ D 𝐹)‘𝑥)))
5 cjf 11029 . . . . . . . . . . . 12 ∗:ℂ⟶ℂ
6 fco 5426 . . . . . . . . . . . 12 ((∗:ℂ⟶ℂ ∧ 𝐹:𝑋⟶ℂ) → (∗ ∘ 𝐹):𝑋⟶ℂ)
75, 6mpan 424 . . . . . . . . . . 11 (𝐹:𝑋⟶ℂ → (∗ ∘ 𝐹):𝑋⟶ℂ)
87adantr 276 . . . . . . . . . 10 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → (∗ ∘ 𝐹):𝑋⟶ℂ)
97fdmd 5417 . . . . . . . . . . . 12 (𝐹:𝑋⟶ℂ → dom (∗ ∘ 𝐹) = 𝑋)
109adantr 276 . . . . . . . . . . 11 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → dom (∗ ∘ 𝐹) = 𝑋)
1110feq2d 5398 . . . . . . . . . 10 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → ((∗ ∘ 𝐹):dom (∗ ∘ 𝐹)⟶ℂ ↔ (∗ ∘ 𝐹):𝑋⟶ℂ))
128, 11mpbird 167 . . . . . . . . 9 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → (∗ ∘ 𝐹):dom (∗ ∘ 𝐹)⟶ℂ)
13 simpr 110 . . . . . . . . . 10 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → 𝑋 ⊆ ℝ)
1410, 13eqsstrd 3220 . . . . . . . . 9 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → dom (∗ ∘ 𝐹) ⊆ ℝ)
15 cnex 8020 . . . . . . . . . 10 ℂ ∈ V
16 reex 8030 . . . . . . . . . 10 ℝ ∈ V
1715, 16elpm2 6748 . . . . . . . . 9 ((∗ ∘ 𝐹) ∈ (ℂ ↑pm ℝ) ↔ ((∗ ∘ 𝐹):dom (∗ ∘ 𝐹)⟶ℂ ∧ dom (∗ ∘ 𝐹) ⊆ ℝ))
1812, 14, 17sylanbrc 417 . . . . . . . 8 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → (∗ ∘ 𝐹) ∈ (ℂ ↑pm ℝ))
19 dvfpm 15009 . . . . . . . 8 ((∗ ∘ 𝐹) ∈ (ℂ ↑pm ℝ) → (ℝ D (∗ ∘ 𝐹)):dom (ℝ D (∗ ∘ 𝐹))⟶ℂ)
2018, 19syl 14 . . . . . . 7 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → (ℝ D (∗ ∘ 𝐹)):dom (ℝ D (∗ ∘ 𝐹))⟶ℂ)
2120ffund 5414 . . . . . 6 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → Fun (ℝ D (∗ ∘ 𝐹)))
22 funbrfv 5602 . . . . . 6 (Fun (ℝ D (∗ ∘ 𝐹)) → (𝑥(ℝ D (∗ ∘ 𝐹))(∗‘((ℝ D 𝐹)‘𝑥)) → ((ℝ D (∗ ∘ 𝐹))‘𝑥) = (∗‘((ℝ D 𝐹)‘𝑥))))
2321, 22syl 14 . . . . 5 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → (𝑥(ℝ D (∗ ∘ 𝐹))(∗‘((ℝ D 𝐹)‘𝑥)) → ((ℝ D (∗ ∘ 𝐹))‘𝑥) = (∗‘((ℝ D 𝐹)‘𝑥))))
2423adantr 276 . . . 4 (((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) ∧ 𝑥 ∈ dom (ℝ D 𝐹)) → (𝑥(ℝ D (∗ ∘ 𝐹))(∗‘((ℝ D 𝐹)‘𝑥)) → ((ℝ D (∗ ∘ 𝐹))‘𝑥) = (∗‘((ℝ D 𝐹)‘𝑥))))
254, 24mpd 13 . . 3 (((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) ∧ 𝑥 ∈ dom (ℝ D 𝐹)) → ((ℝ D (∗ ∘ 𝐹))‘𝑥) = (∗‘((ℝ D 𝐹)‘𝑥)))
2625mpteq2dva 4124 . 2 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → (𝑥 ∈ dom (ℝ D 𝐹) ↦ ((ℝ D (∗ ∘ 𝐹))‘𝑥)) = (𝑥 ∈ dom (ℝ D 𝐹) ↦ (∗‘((ℝ D 𝐹)‘𝑥))))
27 vex 2766 . . . . . . . . . 10 𝑥 ∈ V
2820ffvelcdmda 5700 . . . . . . . . . . 11 (((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) ∧ 𝑥 ∈ dom (ℝ D (∗ ∘ 𝐹))) → ((ℝ D (∗ ∘ 𝐹))‘𝑥) ∈ ℂ)
2928cjcld 11122 . . . . . . . . . 10 (((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) ∧ 𝑥 ∈ dom (ℝ D (∗ ∘ 𝐹))) → (∗‘((ℝ D (∗ ∘ 𝐹))‘𝑥)) ∈ ℂ)
307ad2antrr 488 . . . . . . . . . . 11 (((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) ∧ 𝑥 ∈ dom (ℝ D (∗ ∘ 𝐹))) → (∗ ∘ 𝐹):𝑋⟶ℂ)
31 simplr 528 . . . . . . . . . . 11 (((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) ∧ 𝑥 ∈ dom (ℝ D (∗ ∘ 𝐹))) → 𝑋 ⊆ ℝ)
32 simpr 110 . . . . . . . . . . 11 (((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) ∧ 𝑥 ∈ dom (ℝ D (∗ ∘ 𝐹))) → 𝑥 ∈ dom (ℝ D (∗ ∘ 𝐹)))
3330, 31, 32dvcjbr 15028 . . . . . . . . . 10 (((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) ∧ 𝑥 ∈ dom (ℝ D (∗ ∘ 𝐹))) → 𝑥(ℝ D (∗ ∘ (∗ ∘ 𝐹)))(∗‘((ℝ D (∗ ∘ 𝐹))‘𝑥)))
34 breldmg 4873 . . . . . . . . . 10 ((𝑥 ∈ V ∧ (∗‘((ℝ D (∗ ∘ 𝐹))‘𝑥)) ∈ ℂ ∧ 𝑥(ℝ D (∗ ∘ (∗ ∘ 𝐹)))(∗‘((ℝ D (∗ ∘ 𝐹))‘𝑥))) → 𝑥 ∈ dom (ℝ D (∗ ∘ (∗ ∘ 𝐹))))
3527, 29, 33, 34mp3an2i 1353 . . . . . . . . 9 (((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) ∧ 𝑥 ∈ dom (ℝ D (∗ ∘ 𝐹))) → 𝑥 ∈ dom (ℝ D (∗ ∘ (∗ ∘ 𝐹))))
3635ex 115 . . . . . . . 8 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → (𝑥 ∈ dom (ℝ D (∗ ∘ 𝐹)) → 𝑥 ∈ dom (ℝ D (∗ ∘ (∗ ∘ 𝐹)))))
3736ssrdv 3190 . . . . . . 7 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → dom (ℝ D (∗ ∘ 𝐹)) ⊆ dom (ℝ D (∗ ∘ (∗ ∘ 𝐹))))
38 ffvelcdm 5698 . . . . . . . . . . . . 13 ((𝐹:𝑋⟶ℂ ∧ 𝑥𝑋) → (𝐹𝑥) ∈ ℂ)
3938adantlr 477 . . . . . . . . . . . 12 (((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) ∧ 𝑥𝑋) → (𝐹𝑥) ∈ ℂ)
4039cjcjd 11125 . . . . . . . . . . 11 (((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) ∧ 𝑥𝑋) → (∗‘(∗‘(𝐹𝑥))) = (𝐹𝑥))
4140mpteq2dva 4124 . . . . . . . . . 10 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → (𝑥𝑋 ↦ (∗‘(∗‘(𝐹𝑥)))) = (𝑥𝑋 ↦ (𝐹𝑥)))
4239cjcld 11122 . . . . . . . . . . 11 (((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) ∧ 𝑥𝑋) → (∗‘(𝐹𝑥)) ∈ ℂ)
43 simpl 109 . . . . . . . . . . . . 13 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → 𝐹:𝑋⟶ℂ)
4443feqmptd 5617 . . . . . . . . . . . 12 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → 𝐹 = (𝑥𝑋 ↦ (𝐹𝑥)))
455a1i 9 . . . . . . . . . . . . 13 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → ∗:ℂ⟶ℂ)
4645feqmptd 5617 . . . . . . . . . . . 12 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → ∗ = (𝑦 ∈ ℂ ↦ (∗‘𝑦)))
47 fveq2 5561 . . . . . . . . . . . 12 (𝑦 = (𝐹𝑥) → (∗‘𝑦) = (∗‘(𝐹𝑥)))
4839, 44, 46, 47fmptco 5731 . . . . . . . . . . 11 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → (∗ ∘ 𝐹) = (𝑥𝑋 ↦ (∗‘(𝐹𝑥))))
49 fveq2 5561 . . . . . . . . . . 11 (𝑦 = (∗‘(𝐹𝑥)) → (∗‘𝑦) = (∗‘(∗‘(𝐹𝑥))))
5042, 48, 46, 49fmptco 5731 . . . . . . . . . 10 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → (∗ ∘ (∗ ∘ 𝐹)) = (𝑥𝑋 ↦ (∗‘(∗‘(𝐹𝑥)))))
5141, 50, 443eqtr4d 2239 . . . . . . . . 9 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → (∗ ∘ (∗ ∘ 𝐹)) = 𝐹)
5251oveq2d 5941 . . . . . . . 8 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → (ℝ D (∗ ∘ (∗ ∘ 𝐹))) = (ℝ D 𝐹))
5352dmeqd 4869 . . . . . . 7 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → dom (ℝ D (∗ ∘ (∗ ∘ 𝐹))) = dom (ℝ D 𝐹))
5437, 53sseqtrd 3222 . . . . . 6 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → dom (ℝ D (∗ ∘ 𝐹)) ⊆ dom (ℝ D 𝐹))
55 ffdm 5431 . . . . . . . . . . . . 13 (𝐹:𝑋⟶ℂ → (𝐹:dom 𝐹⟶ℂ ∧ dom 𝐹𝑋))
5655simpld 112 . . . . . . . . . . . 12 (𝐹:𝑋⟶ℂ → 𝐹:dom 𝐹⟶ℂ)
5756adantr 276 . . . . . . . . . . 11 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → 𝐹:dom 𝐹⟶ℂ)
58 fdm 5416 . . . . . . . . . . . . 13 (𝐹:𝑋⟶ℂ → dom 𝐹 = 𝑋)
5958adantr 276 . . . . . . . . . . . 12 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → dom 𝐹 = 𝑋)
6059, 13eqsstrd 3220 . . . . . . . . . . 11 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → dom 𝐹 ⊆ ℝ)
6115, 16elpm2 6748 . . . . . . . . . . 11 (𝐹 ∈ (ℂ ↑pm ℝ) ↔ (𝐹:dom 𝐹⟶ℂ ∧ dom 𝐹 ⊆ ℝ))
6257, 60, 61sylanbrc 417 . . . . . . . . . 10 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → 𝐹 ∈ (ℂ ↑pm ℝ))
63 dvfpm 15009 . . . . . . . . . 10 (𝐹 ∈ (ℂ ↑pm ℝ) → (ℝ D 𝐹):dom (ℝ D 𝐹)⟶ℂ)
6462, 63syl 14 . . . . . . . . 9 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → (ℝ D 𝐹):dom (ℝ D 𝐹)⟶ℂ)
6564ffvelcdmda 5700 . . . . . . . 8 (((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) ∧ 𝑥 ∈ dom (ℝ D 𝐹)) → ((ℝ D 𝐹)‘𝑥) ∈ ℂ)
6665cjcld 11122 . . . . . . 7 (((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) ∧ 𝑥 ∈ dom (ℝ D 𝐹)) → (∗‘((ℝ D 𝐹)‘𝑥)) ∈ ℂ)
67 breldmg 4873 . . . . . . 7 ((𝑥 ∈ V ∧ (∗‘((ℝ D 𝐹)‘𝑥)) ∈ ℂ ∧ 𝑥(ℝ D (∗ ∘ 𝐹))(∗‘((ℝ D 𝐹)‘𝑥))) → 𝑥 ∈ dom (ℝ D (∗ ∘ 𝐹)))
6827, 66, 4, 67mp3an2i 1353 . . . . . 6 (((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) ∧ 𝑥 ∈ dom (ℝ D 𝐹)) → 𝑥 ∈ dom (ℝ D (∗ ∘ 𝐹)))
6954, 68eqelssd 3203 . . . . 5 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → dom (ℝ D (∗ ∘ 𝐹)) = dom (ℝ D 𝐹))
7069feq2d 5398 . . . 4 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → ((ℝ D (∗ ∘ 𝐹)):dom (ℝ D (∗ ∘ 𝐹))⟶ℂ ↔ (ℝ D (∗ ∘ 𝐹)):dom (ℝ D 𝐹)⟶ℂ))
7120, 70mpbid 147 . . 3 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → (ℝ D (∗ ∘ 𝐹)):dom (ℝ D 𝐹)⟶ℂ)
7271feqmptd 5617 . 2 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → (ℝ D (∗ ∘ 𝐹)) = (𝑥 ∈ dom (ℝ D 𝐹) ↦ ((ℝ D (∗ ∘ 𝐹))‘𝑥)))
7364feqmptd 5617 . . 3 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → (ℝ D 𝐹) = (𝑥 ∈ dom (ℝ D 𝐹) ↦ ((ℝ D 𝐹)‘𝑥)))
74 fveq2 5561 . . 3 (𝑦 = ((ℝ D 𝐹)‘𝑥) → (∗‘𝑦) = (∗‘((ℝ D 𝐹)‘𝑥)))
7565, 73, 46, 74fmptco 5731 . 2 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → (∗ ∘ (ℝ D 𝐹)) = (𝑥 ∈ dom (ℝ D 𝐹) ↦ (∗‘((ℝ D 𝐹)‘𝑥))))
7626, 72, 753eqtr4d 2239 1 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → (ℝ D (∗ ∘ 𝐹)) = (∗ ∘ (ℝ D 𝐹)))
Colors of variables: wff set class
Syntax hints:  wi 4  wa 104   = wceq 1364  wcel 2167  Vcvv 2763  wss 3157   class class class wbr 4034  cmpt 4095  dom cdm 4664  ccom 4668  Fun wfun 5253  wf 5255  cfv 5259  (class class class)co 5925  pm cpm 6717  cc 7894  cr 7895  ccj 11021   D cdv 14975
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-ia1 106  ax-ia2 107  ax-ia3 108  ax-in1 615  ax-in2 616  ax-io 710  ax-5 1461  ax-7 1462  ax-gen 1463  ax-ie1 1507  ax-ie2 1508  ax-8 1518  ax-10 1519  ax-11 1520  ax-i12 1521  ax-bndl 1523  ax-4 1524  ax-17 1540  ax-i9 1544  ax-ial 1548  ax-i5r 1549  ax-13 2169  ax-14 2170  ax-ext 2178  ax-coll 4149  ax-sep 4152  ax-nul 4160  ax-pow 4208  ax-pr 4243  ax-un 4469  ax-setind 4574  ax-iinf 4625  ax-cnex 7987  ax-resscn 7988  ax-1cn 7989  ax-1re 7990  ax-icn 7991  ax-addcl 7992  ax-addrcl 7993  ax-mulcl 7994  ax-mulrcl 7995  ax-addcom 7996  ax-mulcom 7997  ax-addass 7998  ax-mulass 7999  ax-distr 8000  ax-i2m1 8001  ax-0lt1 8002  ax-1rid 8003  ax-0id 8004  ax-rnegex 8005  ax-precex 8006  ax-cnre 8007  ax-pre-ltirr 8008  ax-pre-ltwlin 8009  ax-pre-lttrn 8010  ax-pre-apti 8011  ax-pre-ltadd 8012  ax-pre-mulgt0 8013  ax-pre-mulext 8014  ax-arch 8015  ax-caucvg 8016
This theorem depends on definitions:  df-bi 117  df-stab 832  df-dc 836  df-3or 981  df-3an 982  df-tru 1367  df-fal 1370  df-nf 1475  df-sb 1777  df-eu 2048  df-mo 2049  df-clab 2183  df-cleq 2189  df-clel 2192  df-nfc 2328  df-ne 2368  df-nel 2463  df-ral 2480  df-rex 2481  df-reu 2482  df-rmo 2483  df-rab 2484  df-v 2765  df-sbc 2990  df-csb 3085  df-dif 3159  df-un 3161  df-in 3163  df-ss 3170  df-nul 3452  df-if 3563  df-pw 3608  df-sn 3629  df-pr 3630  df-op 3632  df-uni 3841  df-int 3876  df-iun 3919  df-br 4035  df-opab 4096  df-mpt 4097  df-tr 4133  df-id 4329  df-po 4332  df-iso 4333  df-iord 4402  df-on 4404  df-ilim 4405  df-suc 4407  df-iom 4628  df-xp 4670  df-rel 4671  df-cnv 4672  df-co 4673  df-dm 4674  df-rn 4675  df-res 4676  df-ima 4677  df-iota 5220  df-fun 5261  df-fn 5262  df-f 5263  df-f1 5264  df-fo 5265  df-f1o 5266  df-fv 5267  df-isom 5268  df-riota 5880  df-ov 5928  df-oprab 5929  df-mpo 5930  df-1st 6207  df-2nd 6208  df-recs 6372  df-frec 6458  df-map 6718  df-pm 6719  df-sup 7059  df-inf 7060  df-pnf 8080  df-mnf 8081  df-xr 8082  df-ltxr 8083  df-le 8084  df-sub 8216  df-neg 8217  df-reap 8619  df-ap 8626  df-div 8717  df-inn 9008  df-2 9066  df-3 9067  df-4 9068  df-n0 9267  df-z 9344  df-uz 9619  df-q 9711  df-rp 9746  df-xneg 9864  df-xadd 9865  df-ioo 9984  df-seqfrec 10557  df-exp 10648  df-cj 11024  df-re 11025  df-im 11026  df-rsqrt 11180  df-abs 11181  df-rest 12943  df-topgen 12962  df-psmet 14175  df-xmet 14176  df-met 14177  df-bl 14178  df-mopn 14179  df-top 14318  df-topon 14331  df-bases 14363  df-ntr 14416  df-cn 14508  df-cnp 14509  df-cncf 14891  df-limced 14976  df-dvap 14977
This theorem is referenced by:  dvfre  15030  dvmptcjx  15044
  Copyright terms: Public domain W3C validator