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

Theorem dvcj 15123
Description: The derivative of the conjugate of a function. For the (more general) relation version, see dvcjbr 15122. (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 15122 . . . 4 (((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) ∧ 𝑥 ∈ dom (ℝ D 𝐹)) → 𝑥(ℝ D (∗ ∘ 𝐹))(∗‘((ℝ D 𝐹)‘𝑥)))
5 cjf 11100 . . . . . . . . . . . 12 ∗:ℂ⟶ℂ
6 fco 5440 . . . . . . . . . . . 12 ((∗:ℂ⟶ℂ ∧ 𝐹:𝑋⟶ℂ) → (∗ ∘ 𝐹):𝑋⟶ℂ)
75, 6mpan 424 . . . . . . . . . . 11 (𝐹:𝑋⟶ℂ → (∗ ∘ 𝐹):𝑋⟶ℂ)
87adantr 276 . . . . . . . . . 10 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → (∗ ∘ 𝐹):𝑋⟶ℂ)
97fdmd 5431 . . . . . . . . . . . 12 (𝐹:𝑋⟶ℂ → dom (∗ ∘ 𝐹) = 𝑋)
109adantr 276 . . . . . . . . . . 11 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → dom (∗ ∘ 𝐹) = 𝑋)
1110feq2d 5412 . . . . . . . . . 10 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → ((∗ ∘ 𝐹):dom (∗ ∘ 𝐹)⟶ℂ ↔ (∗ ∘ 𝐹):𝑋⟶ℂ))
128, 11mpbird 167 . . . . . . . . 9 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → (∗ ∘ 𝐹):dom (∗ ∘ 𝐹)⟶ℂ)
13 simpr 110 . . . . . . . . . 10 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → 𝑋 ⊆ ℝ)
1410, 13eqsstrd 3228 . . . . . . . . 9 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → dom (∗ ∘ 𝐹) ⊆ ℝ)
15 cnex 8048 . . . . . . . . . 10 ℂ ∈ V
16 reex 8058 . . . . . . . . . 10 ℝ ∈ V
1715, 16elpm2 6766 . . . . . . . . 9 ((∗ ∘ 𝐹) ∈ (ℂ ↑pm ℝ) ↔ ((∗ ∘ 𝐹):dom (∗ ∘ 𝐹)⟶ℂ ∧ dom (∗ ∘ 𝐹) ⊆ ℝ))
1812, 14, 17sylanbrc 417 . . . . . . . 8 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → (∗ ∘ 𝐹) ∈ (ℂ ↑pm ℝ))
19 dvfpm 15103 . . . . . . . 8 ((∗ ∘ 𝐹) ∈ (ℂ ↑pm ℝ) → (ℝ D (∗ ∘ 𝐹)):dom (ℝ D (∗ ∘ 𝐹))⟶ℂ)
2018, 19syl 14 . . . . . . 7 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → (ℝ D (∗ ∘ 𝐹)):dom (ℝ D (∗ ∘ 𝐹))⟶ℂ)
2120ffund 5428 . . . . . 6 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → Fun (ℝ D (∗ ∘ 𝐹)))
22 funbrfv 5616 . . . . . 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 4133 . 2 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → (𝑥 ∈ dom (ℝ D 𝐹) ↦ ((ℝ D (∗ ∘ 𝐹))‘𝑥)) = (𝑥 ∈ dom (ℝ D 𝐹) ↦ (∗‘((ℝ D 𝐹)‘𝑥))))
27 vex 2774 . . . . . . . . . 10 𝑥 ∈ V
2820ffvelcdmda 5714 . . . . . . . . . . 11 (((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) ∧ 𝑥 ∈ dom (ℝ D (∗ ∘ 𝐹))) → ((ℝ D (∗ ∘ 𝐹))‘𝑥) ∈ ℂ)
2928cjcld 11193 . . . . . . . . . 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 15122 . . . . . . . . . 10 (((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) ∧ 𝑥 ∈ dom (ℝ D (∗ ∘ 𝐹))) → 𝑥(ℝ D (∗ ∘ (∗ ∘ 𝐹)))(∗‘((ℝ D (∗ ∘ 𝐹))‘𝑥)))
34 breldmg 4883 . . . . . . . . . 10 ((𝑥 ∈ V ∧ (∗‘((ℝ D (∗ ∘ 𝐹))‘𝑥)) ∈ ℂ ∧ 𝑥(ℝ D (∗ ∘ (∗ ∘ 𝐹)))(∗‘((ℝ D (∗ ∘ 𝐹))‘𝑥))) → 𝑥 ∈ dom (ℝ D (∗ ∘ (∗ ∘ 𝐹))))
3527, 29, 33, 34mp3an2i 1354 . . . . . . . . 9 (((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) ∧ 𝑥 ∈ dom (ℝ D (∗ ∘ 𝐹))) → 𝑥 ∈ dom (ℝ D (∗ ∘ (∗ ∘ 𝐹))))
3635ex 115 . . . . . . . 8 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → (𝑥 ∈ dom (ℝ D (∗ ∘ 𝐹)) → 𝑥 ∈ dom (ℝ D (∗ ∘ (∗ ∘ 𝐹)))))
3736ssrdv 3198 . . . . . . 7 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → dom (ℝ D (∗ ∘ 𝐹)) ⊆ dom (ℝ D (∗ ∘ (∗ ∘ 𝐹))))
38 ffvelcdm 5712 . . . . . . . . . . . . 13 ((𝐹:𝑋⟶ℂ ∧ 𝑥𝑋) → (𝐹𝑥) ∈ ℂ)
3938adantlr 477 . . . . . . . . . . . 12 (((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) ∧ 𝑥𝑋) → (𝐹𝑥) ∈ ℂ)
4039cjcjd 11196 . . . . . . . . . . 11 (((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) ∧ 𝑥𝑋) → (∗‘(∗‘(𝐹𝑥))) = (𝐹𝑥))
4140mpteq2dva 4133 . . . . . . . . . 10 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → (𝑥𝑋 ↦ (∗‘(∗‘(𝐹𝑥)))) = (𝑥𝑋 ↦ (𝐹𝑥)))
4239cjcld 11193 . . . . . . . . . . 11 (((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) ∧ 𝑥𝑋) → (∗‘(𝐹𝑥)) ∈ ℂ)
43 simpl 109 . . . . . . . . . . . . 13 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → 𝐹:𝑋⟶ℂ)
4443feqmptd 5631 . . . . . . . . . . . 12 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → 𝐹 = (𝑥𝑋 ↦ (𝐹𝑥)))
455a1i 9 . . . . . . . . . . . . 13 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → ∗:ℂ⟶ℂ)
4645feqmptd 5631 . . . . . . . . . . . 12 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → ∗ = (𝑦 ∈ ℂ ↦ (∗‘𝑦)))
47 fveq2 5575 . . . . . . . . . . . 12 (𝑦 = (𝐹𝑥) → (∗‘𝑦) = (∗‘(𝐹𝑥)))
4839, 44, 46, 47fmptco 5745 . . . . . . . . . . 11 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → (∗ ∘ 𝐹) = (𝑥𝑋 ↦ (∗‘(𝐹𝑥))))
49 fveq2 5575 . . . . . . . . . . 11 (𝑦 = (∗‘(𝐹𝑥)) → (∗‘𝑦) = (∗‘(∗‘(𝐹𝑥))))
5042, 48, 46, 49fmptco 5745 . . . . . . . . . 10 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → (∗ ∘ (∗ ∘ 𝐹)) = (𝑥𝑋 ↦ (∗‘(∗‘(𝐹𝑥)))))
5141, 50, 443eqtr4d 2247 . . . . . . . . 9 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → (∗ ∘ (∗ ∘ 𝐹)) = 𝐹)
5251oveq2d 5959 . . . . . . . 8 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → (ℝ D (∗ ∘ (∗ ∘ 𝐹))) = (ℝ D 𝐹))
5352dmeqd 4879 . . . . . . 7 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → dom (ℝ D (∗ ∘ (∗ ∘ 𝐹))) = dom (ℝ D 𝐹))
5437, 53sseqtrd 3230 . . . . . 6 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → dom (ℝ D (∗ ∘ 𝐹)) ⊆ dom (ℝ D 𝐹))
55 ffdm 5445 . . . . . . . . . . . . 13 (𝐹:𝑋⟶ℂ → (𝐹:dom 𝐹⟶ℂ ∧ dom 𝐹𝑋))
5655simpld 112 . . . . . . . . . . . 12 (𝐹:𝑋⟶ℂ → 𝐹:dom 𝐹⟶ℂ)
5756adantr 276 . . . . . . . . . . 11 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → 𝐹:dom 𝐹⟶ℂ)
58 fdm 5430 . . . . . . . . . . . . 13 (𝐹:𝑋⟶ℂ → dom 𝐹 = 𝑋)
5958adantr 276 . . . . . . . . . . . 12 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → dom 𝐹 = 𝑋)
6059, 13eqsstrd 3228 . . . . . . . . . . 11 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → dom 𝐹 ⊆ ℝ)
6115, 16elpm2 6766 . . . . . . . . . . 11 (𝐹 ∈ (ℂ ↑pm ℝ) ↔ (𝐹:dom 𝐹⟶ℂ ∧ dom 𝐹 ⊆ ℝ))
6257, 60, 61sylanbrc 417 . . . . . . . . . 10 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → 𝐹 ∈ (ℂ ↑pm ℝ))
63 dvfpm 15103 . . . . . . . . . 10 (𝐹 ∈ (ℂ ↑pm ℝ) → (ℝ D 𝐹):dom (ℝ D 𝐹)⟶ℂ)
6462, 63syl 14 . . . . . . . . 9 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → (ℝ D 𝐹):dom (ℝ D 𝐹)⟶ℂ)
6564ffvelcdmda 5714 . . . . . . . 8 (((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) ∧ 𝑥 ∈ dom (ℝ D 𝐹)) → ((ℝ D 𝐹)‘𝑥) ∈ ℂ)
6665cjcld 11193 . . . . . . 7 (((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) ∧ 𝑥 ∈ dom (ℝ D 𝐹)) → (∗‘((ℝ D 𝐹)‘𝑥)) ∈ ℂ)
67 breldmg 4883 . . . . . . 7 ((𝑥 ∈ V ∧ (∗‘((ℝ D 𝐹)‘𝑥)) ∈ ℂ ∧ 𝑥(ℝ D (∗ ∘ 𝐹))(∗‘((ℝ D 𝐹)‘𝑥))) → 𝑥 ∈ dom (ℝ D (∗ ∘ 𝐹)))
6827, 66, 4, 67mp3an2i 1354 . . . . . 6 (((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) ∧ 𝑥 ∈ dom (ℝ D 𝐹)) → 𝑥 ∈ dom (ℝ D (∗ ∘ 𝐹)))
6954, 68eqelssd 3211 . . . . 5 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → dom (ℝ D (∗ ∘ 𝐹)) = dom (ℝ D 𝐹))
7069feq2d 5412 . . . 4 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → ((ℝ D (∗ ∘ 𝐹)):dom (ℝ D (∗ ∘ 𝐹))⟶ℂ ↔ (ℝ D (∗ ∘ 𝐹)):dom (ℝ D 𝐹)⟶ℂ))
7120, 70mpbid 147 . . 3 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → (ℝ D (∗ ∘ 𝐹)):dom (ℝ D 𝐹)⟶ℂ)
7271feqmptd 5631 . 2 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → (ℝ D (∗ ∘ 𝐹)) = (𝑥 ∈ dom (ℝ D 𝐹) ↦ ((ℝ D (∗ ∘ 𝐹))‘𝑥)))
7364feqmptd 5631 . . 3 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → (ℝ D 𝐹) = (𝑥 ∈ dom (ℝ D 𝐹) ↦ ((ℝ D 𝐹)‘𝑥)))
74 fveq2 5575 . . 3 (𝑦 = ((ℝ D 𝐹)‘𝑥) → (∗‘𝑦) = (∗‘((ℝ D 𝐹)‘𝑥)))
7565, 73, 46, 74fmptco 5745 . 2 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → (∗ ∘ (ℝ D 𝐹)) = (𝑥 ∈ dom (ℝ D 𝐹) ↦ (∗‘((ℝ D 𝐹)‘𝑥))))
7626, 72, 753eqtr4d 2247 1 ((𝐹:𝑋⟶ℂ ∧ 𝑋 ⊆ ℝ) → (ℝ D (∗ ∘ 𝐹)) = (∗ ∘ (ℝ D 𝐹)))
Colors of variables: wff set class
Syntax hints:  wi 4  wa 104   = wceq 1372  wcel 2175  Vcvv 2771  wss 3165   class class class wbr 4043  cmpt 4104  dom cdm 4674  ccom 4678  Fun wfun 5264  wf 5266  cfv 5270  (class class class)co 5943  pm cpm 6735  cc 7922  cr 7923  ccj 11092   D cdv 15069
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 1469  ax-7 1470  ax-gen 1471  ax-ie1 1515  ax-ie2 1516  ax-8 1526  ax-10 1527  ax-11 1528  ax-i12 1529  ax-bndl 1531  ax-4 1532  ax-17 1548  ax-i9 1552  ax-ial 1556  ax-i5r 1557  ax-13 2177  ax-14 2178  ax-ext 2186  ax-coll 4158  ax-sep 4161  ax-nul 4169  ax-pow 4217  ax-pr 4252  ax-un 4479  ax-setind 4584  ax-iinf 4635  ax-cnex 8015  ax-resscn 8016  ax-1cn 8017  ax-1re 8018  ax-icn 8019  ax-addcl 8020  ax-addrcl 8021  ax-mulcl 8022  ax-mulrcl 8023  ax-addcom 8024  ax-mulcom 8025  ax-addass 8026  ax-mulass 8027  ax-distr 8028  ax-i2m1 8029  ax-0lt1 8030  ax-1rid 8031  ax-0id 8032  ax-rnegex 8033  ax-precex 8034  ax-cnre 8035  ax-pre-ltirr 8036  ax-pre-ltwlin 8037  ax-pre-lttrn 8038  ax-pre-apti 8039  ax-pre-ltadd 8040  ax-pre-mulgt0 8041  ax-pre-mulext 8042  ax-arch 8043  ax-caucvg 8044
This theorem depends on definitions:  df-bi 117  df-stab 832  df-dc 836  df-3or 981  df-3an 982  df-tru 1375  df-fal 1378  df-nf 1483  df-sb 1785  df-eu 2056  df-mo 2057  df-clab 2191  df-cleq 2197  df-clel 2200  df-nfc 2336  df-ne 2376  df-nel 2471  df-ral 2488  df-rex 2489  df-reu 2490  df-rmo 2491  df-rab 2492  df-v 2773  df-sbc 2998  df-csb 3093  df-dif 3167  df-un 3169  df-in 3171  df-ss 3178  df-nul 3460  df-if 3571  df-pw 3617  df-sn 3638  df-pr 3639  df-op 3641  df-uni 3850  df-int 3885  df-iun 3928  df-br 4044  df-opab 4105  df-mpt 4106  df-tr 4142  df-id 4339  df-po 4342  df-iso 4343  df-iord 4412  df-on 4414  df-ilim 4415  df-suc 4417  df-iom 4638  df-xp 4680  df-rel 4681  df-cnv 4682  df-co 4683  df-dm 4684  df-rn 4685  df-res 4686  df-ima 4687  df-iota 5231  df-fun 5272  df-fn 5273  df-f 5274  df-f1 5275  df-fo 5276  df-f1o 5277  df-fv 5278  df-isom 5279  df-riota 5898  df-ov 5946  df-oprab 5947  df-mpo 5948  df-1st 6225  df-2nd 6226  df-recs 6390  df-frec 6476  df-map 6736  df-pm 6737  df-sup 7085  df-inf 7086  df-pnf 8108  df-mnf 8109  df-xr 8110  df-ltxr 8111  df-le 8112  df-sub 8244  df-neg 8245  df-reap 8647  df-ap 8654  df-div 8745  df-inn 9036  df-2 9094  df-3 9095  df-4 9096  df-n0 9295  df-z 9372  df-uz 9648  df-q 9740  df-rp 9775  df-xneg 9893  df-xadd 9894  df-ioo 10013  df-seqfrec 10591  df-exp 10682  df-cj 11095  df-re 11096  df-im 11097  df-rsqrt 11251  df-abs 11252  df-rest 13015  df-topgen 13034  df-psmet 14247  df-xmet 14248  df-met 14249  df-bl 14250  df-mopn 14251  df-top 14412  df-topon 14425  df-bases 14457  df-ntr 14510  df-cn 14602  df-cnp 14603  df-cncf 14985  df-limced 15070  df-dvap 15071
This theorem is referenced by:  dvfre  15124  dvmptcjx  15138
  Copyright terms: Public domain W3C validator