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

Theorem dvatan 24462
Description: The derivative of the arctangent. (Contributed by Mario Carneiro, 7-Apr-2015.)
Hypotheses
Ref Expression
atansopn.d 𝐷 = (ℂ ∖ (-∞(,]0))
atansopn.s 𝑆 = {𝑦 ∈ ℂ ∣ (1 + (𝑦↑2)) ∈ 𝐷}
Assertion
Ref Expression
dvatan (ℂ D (arctan ↾ 𝑆)) = (𝑥𝑆 ↦ (1 / (1 + (𝑥↑2))))
Distinct variable groups:   𝑥,𝑦,𝐷   𝑥,𝑆
Allowed substitution hint:   𝑆(𝑦)

Proof of Theorem dvatan
StepHypRef Expression
1 cnelprrecn 9908 . . . . 5 ℂ ∈ {ℝ, ℂ}
21a1i 11 . . . 4 (⊤ → ℂ ∈ {ℝ, ℂ})
3 ax-1cn 9873 . . . . . . 7 1 ∈ ℂ
4 ax-icn 9874 . . . . . . . 8 i ∈ ℂ
5 atansopn.d . . . . . . . . . . . 12 𝐷 = (ℂ ∖ (-∞(,]0))
6 atansopn.s . . . . . . . . . . . 12 𝑆 = {𝑦 ∈ ℂ ∣ (1 + (𝑦↑2)) ∈ 𝐷}
75, 6atansssdm 24460 . . . . . . . . . . 11 𝑆 ⊆ dom arctan
8 simpr 476 . . . . . . . . . . 11 ((⊤ ∧ 𝑥𝑆) → 𝑥𝑆)
97, 8sseldi 3566 . . . . . . . . . 10 ((⊤ ∧ 𝑥𝑆) → 𝑥 ∈ dom arctan)
10 atandm2 24404 . . . . . . . . . 10 (𝑥 ∈ dom arctan ↔ (𝑥 ∈ ℂ ∧ (1 − (i · 𝑥)) ≠ 0 ∧ (1 + (i · 𝑥)) ≠ 0))
119, 10sylib 207 . . . . . . . . 9 ((⊤ ∧ 𝑥𝑆) → (𝑥 ∈ ℂ ∧ (1 − (i · 𝑥)) ≠ 0 ∧ (1 + (i · 𝑥)) ≠ 0))
1211simp1d 1066 . . . . . . . 8 ((⊤ ∧ 𝑥𝑆) → 𝑥 ∈ ℂ)
13 mulcl 9899 . . . . . . . 8 ((i ∈ ℂ ∧ 𝑥 ∈ ℂ) → (i · 𝑥) ∈ ℂ)
144, 12, 13sylancr 694 . . . . . . 7 ((⊤ ∧ 𝑥𝑆) → (i · 𝑥) ∈ ℂ)
15 subcl 10159 . . . . . . 7 ((1 ∈ ℂ ∧ (i · 𝑥) ∈ ℂ) → (1 − (i · 𝑥)) ∈ ℂ)
163, 14, 15sylancr 694 . . . . . 6 ((⊤ ∧ 𝑥𝑆) → (1 − (i · 𝑥)) ∈ ℂ)
1711simp2d 1067 . . . . . 6 ((⊤ ∧ 𝑥𝑆) → (1 − (i · 𝑥)) ≠ 0)
1816, 17logcld 24121 . . . . 5 ((⊤ ∧ 𝑥𝑆) → (log‘(1 − (i · 𝑥))) ∈ ℂ)
19 addcl 9897 . . . . . . 7 ((1 ∈ ℂ ∧ (i · 𝑥) ∈ ℂ) → (1 + (i · 𝑥)) ∈ ℂ)
203, 14, 19sylancr 694 . . . . . 6 ((⊤ ∧ 𝑥𝑆) → (1 + (i · 𝑥)) ∈ ℂ)
2111simp3d 1068 . . . . . 6 ((⊤ ∧ 𝑥𝑆) → (1 + (i · 𝑥)) ≠ 0)
2220, 21logcld 24121 . . . . 5 ((⊤ ∧ 𝑥𝑆) → (log‘(1 + (i · 𝑥))) ∈ ℂ)
2318, 22subcld 10271 . . . 4 ((⊤ ∧ 𝑥𝑆) → ((log‘(1 − (i · 𝑥))) − (log‘(1 + (i · 𝑥)))) ∈ ℂ)
24 ovex 6577 . . . . 5 ((2 / i) / (1 + (𝑥↑2))) ∈ V
2524a1i 11 . . . 4 ((⊤ ∧ 𝑥𝑆) → ((2 / i) / (1 + (𝑥↑2))) ∈ V)
26 ovex 6577 . . . . . . 7 (1 / (𝑥 + i)) ∈ V
2726a1i 11 . . . . . 6 ((⊤ ∧ 𝑥𝑆) → (1 / (𝑥 + i)) ∈ V)
285, 6atans2 24458 . . . . . . . . . 10 (𝑥𝑆 ↔ (𝑥 ∈ ℂ ∧ (1 − (i · 𝑥)) ∈ 𝐷 ∧ (1 + (i · 𝑥)) ∈ 𝐷))
2928simp2bi 1070 . . . . . . . . 9 (𝑥𝑆 → (1 − (i · 𝑥)) ∈ 𝐷)
3029adantl 481 . . . . . . . 8 ((⊤ ∧ 𝑥𝑆) → (1 − (i · 𝑥)) ∈ 𝐷)
31 negex 10158 . . . . . . . . 9 -i ∈ V
3231a1i 11 . . . . . . . 8 ((⊤ ∧ 𝑥𝑆) → -i ∈ V)
335logdmss 24188 . . . . . . . . . 10 𝐷 ⊆ (ℂ ∖ {0})
34 simpr 476 . . . . . . . . . 10 ((⊤ ∧ 𝑦𝐷) → 𝑦𝐷)
3533, 34sseldi 3566 . . . . . . . . 9 ((⊤ ∧ 𝑦𝐷) → 𝑦 ∈ (ℂ ∖ {0}))
36 logf1o 24115 . . . . . . . . . . 11 log:(ℂ ∖ {0})–1-1-onto→ran log
37 f1of 6050 . . . . . . . . . . 11 (log:(ℂ ∖ {0})–1-1-onto→ran log → log:(ℂ ∖ {0})⟶ran log)
3836, 37ax-mp 5 . . . . . . . . . 10 log:(ℂ ∖ {0})⟶ran log
3938ffvelrni 6266 . . . . . . . . 9 (𝑦 ∈ (ℂ ∖ {0}) → (log‘𝑦) ∈ ran log)
40 logrncn 24113 . . . . . . . . 9 ((log‘𝑦) ∈ ran log → (log‘𝑦) ∈ ℂ)
4135, 39, 403syl 18 . . . . . . . 8 ((⊤ ∧ 𝑦𝐷) → (log‘𝑦) ∈ ℂ)
42 ovex 6577 . . . . . . . . 9 (1 / 𝑦) ∈ V
4342a1i 11 . . . . . . . 8 ((⊤ ∧ 𝑦𝐷) → (1 / 𝑦) ∈ V)
444a1i 11 . . . . . . . . . . 11 (⊤ → i ∈ ℂ)
4544, 13sylan 487 . . . . . . . . . 10 ((⊤ ∧ 𝑥 ∈ ℂ) → (i · 𝑥) ∈ ℂ)
463, 45, 15sylancr 694 . . . . . . . . 9 ((⊤ ∧ 𝑥 ∈ ℂ) → (1 − (i · 𝑥)) ∈ ℂ)
4731a1i 11 . . . . . . . . 9 ((⊤ ∧ 𝑥 ∈ ℂ) → -i ∈ V)
48 1cnd 9935 . . . . . . . . . . 11 ((⊤ ∧ 𝑥 ∈ ℂ) → 1 ∈ ℂ)
49 0cnd 9912 . . . . . . . . . . 11 ((⊤ ∧ 𝑥 ∈ ℂ) → 0 ∈ ℂ)
50 1cnd 9935 . . . . . . . . . . . 12 (⊤ → 1 ∈ ℂ)
512, 50dvmptc 23527 . . . . . . . . . . 11 (⊤ → (ℂ D (𝑥 ∈ ℂ ↦ 1)) = (𝑥 ∈ ℂ ↦ 0))
524a1i 11 . . . . . . . . . . 11 ((⊤ ∧ 𝑥 ∈ ℂ) → i ∈ ℂ)
53 simpr 476 . . . . . . . . . . . . 13 ((⊤ ∧ 𝑥 ∈ ℂ) → 𝑥 ∈ ℂ)
542dvmptid 23526 . . . . . . . . . . . . 13 (⊤ → (ℂ D (𝑥 ∈ ℂ ↦ 𝑥)) = (𝑥 ∈ ℂ ↦ 1))
552, 53, 48, 54, 44dvmptcmul 23533 . . . . . . . . . . . 12 (⊤ → (ℂ D (𝑥 ∈ ℂ ↦ (i · 𝑥))) = (𝑥 ∈ ℂ ↦ (i · 1)))
564mulid1i 9921 . . . . . . . . . . . . 13 (i · 1) = i
5756mpteq2i 4669 . . . . . . . . . . . 12 (𝑥 ∈ ℂ ↦ (i · 1)) = (𝑥 ∈ ℂ ↦ i)
5855, 57syl6eq 2660 . . . . . . . . . . 11 (⊤ → (ℂ D (𝑥 ∈ ℂ ↦ (i · 𝑥))) = (𝑥 ∈ ℂ ↦ i))
592, 48, 49, 51, 45, 52, 58dvmptsub 23536 . . . . . . . . . 10 (⊤ → (ℂ D (𝑥 ∈ ℂ ↦ (1 − (i · 𝑥)))) = (𝑥 ∈ ℂ ↦ (0 − i)))
60 df-neg 10148 . . . . . . . . . . 11 -i = (0 − i)
6160mpteq2i 4669 . . . . . . . . . 10 (𝑥 ∈ ℂ ↦ -i) = (𝑥 ∈ ℂ ↦ (0 − i))
6259, 61syl6eqr 2662 . . . . . . . . 9 (⊤ → (ℂ D (𝑥 ∈ ℂ ↦ (1 − (i · 𝑥)))) = (𝑥 ∈ ℂ ↦ -i))
63 eqid 2610 . . . . . . . . . . . 12 (TopOpen‘ℂfld) = (TopOpen‘ℂfld)
6463cnfldtopon 22396 . . . . . . . . . . 11 (TopOpen‘ℂfld) ∈ (TopOn‘ℂ)
655, 6atansopn 24459 . . . . . . . . . . 11 𝑆 ∈ (TopOpen‘ℂfld)
66 toponss 20544 . . . . . . . . . . 11 (((TopOpen‘ℂfld) ∈ (TopOn‘ℂ) ∧ 𝑆 ∈ (TopOpen‘ℂfld)) → 𝑆 ⊆ ℂ)
6764, 65, 66mp2an 704 . . . . . . . . . 10 𝑆 ⊆ ℂ
6867a1i 11 . . . . . . . . 9 (⊤ → 𝑆 ⊆ ℂ)
6963cnfldtop 22397 . . . . . . . . . . 11 (TopOpen‘ℂfld) ∈ Top
7064toponunii 20547 . . . . . . . . . . . 12 ℂ = (TopOpen‘ℂfld)
7170restid 15917 . . . . . . . . . . 11 ((TopOpen‘ℂfld) ∈ Top → ((TopOpen‘ℂfld) ↾t ℂ) = (TopOpen‘ℂfld))
7269, 71ax-mp 5 . . . . . . . . . 10 ((TopOpen‘ℂfld) ↾t ℂ) = (TopOpen‘ℂfld)
7372eqcomi 2619 . . . . . . . . 9 (TopOpen‘ℂfld) = ((TopOpen‘ℂfld) ↾t ℂ)
7465a1i 11 . . . . . . . . 9 (⊤ → 𝑆 ∈ (TopOpen‘ℂfld))
752, 46, 47, 62, 68, 73, 63, 74dvmptres 23532 . . . . . . . 8 (⊤ → (ℂ D (𝑥𝑆 ↦ (1 − (i · 𝑥)))) = (𝑥𝑆 ↦ -i))
76 fssres 5983 . . . . . . . . . . . . . 14 ((log:(ℂ ∖ {0})⟶ran log ∧ 𝐷 ⊆ (ℂ ∖ {0})) → (log ↾ 𝐷):𝐷⟶ran log)
7738, 33, 76mp2an 704 . . . . . . . . . . . . 13 (log ↾ 𝐷):𝐷⟶ran log
7877a1i 11 . . . . . . . . . . . 12 (⊤ → (log ↾ 𝐷):𝐷⟶ran log)
7978feqmptd 6159 . . . . . . . . . . 11 (⊤ → (log ↾ 𝐷) = (𝑦𝐷 ↦ ((log ↾ 𝐷)‘𝑦)))
80 fvres 6117 . . . . . . . . . . . 12 (𝑦𝐷 → ((log ↾ 𝐷)‘𝑦) = (log‘𝑦))
8180mpteq2ia 4668 . . . . . . . . . . 11 (𝑦𝐷 ↦ ((log ↾ 𝐷)‘𝑦)) = (𝑦𝐷 ↦ (log‘𝑦))
8279, 81syl6req 2661 . . . . . . . . . 10 (⊤ → (𝑦𝐷 ↦ (log‘𝑦)) = (log ↾ 𝐷))
8382oveq2d 6565 . . . . . . . . 9 (⊤ → (ℂ D (𝑦𝐷 ↦ (log‘𝑦))) = (ℂ D (log ↾ 𝐷)))
845dvlog 24197 . . . . . . . . 9 (ℂ D (log ↾ 𝐷)) = (𝑦𝐷 ↦ (1 / 𝑦))
8583, 84syl6eq 2660 . . . . . . . 8 (⊤ → (ℂ D (𝑦𝐷 ↦ (log‘𝑦))) = (𝑦𝐷 ↦ (1 / 𝑦)))
86 fveq2 6103 . . . . . . . 8 (𝑦 = (1 − (i · 𝑥)) → (log‘𝑦) = (log‘(1 − (i · 𝑥))))
87 oveq2 6557 . . . . . . . 8 (𝑦 = (1 − (i · 𝑥)) → (1 / 𝑦) = (1 / (1 − (i · 𝑥))))
882, 2, 30, 32, 41, 43, 75, 85, 86, 87dvmptco 23541 . . . . . . 7 (⊤ → (ℂ D (𝑥𝑆 ↦ (log‘(1 − (i · 𝑥))))) = (𝑥𝑆 ↦ ((1 / (1 − (i · 𝑥))) · -i)))
89 irec 12826 . . . . . . . . . 10 (1 / i) = -i
9089oveq2i 6560 . . . . . . . . 9 ((1 / (1 − (i · 𝑥))) · (1 / i)) = ((1 / (1 − (i · 𝑥))) · -i)
914a1i 11 . . . . . . . . . . 11 ((⊤ ∧ 𝑥𝑆) → i ∈ ℂ)
92 ine0 10344 . . . . . . . . . . . 12 i ≠ 0
9392a1i 11 . . . . . . . . . . 11 ((⊤ ∧ 𝑥𝑆) → i ≠ 0)
9416, 91, 17, 93recdiv2d 10698 . . . . . . . . . 10 ((⊤ ∧ 𝑥𝑆) → ((1 / (1 − (i · 𝑥))) / i) = (1 / ((1 − (i · 𝑥)) · i)))
9516, 17reccld 10673 . . . . . . . . . . 11 ((⊤ ∧ 𝑥𝑆) → (1 / (1 − (i · 𝑥))) ∈ ℂ)
9695, 91, 93divrecd 10683 . . . . . . . . . 10 ((⊤ ∧ 𝑥𝑆) → ((1 / (1 − (i · 𝑥))) / i) = ((1 / (1 − (i · 𝑥))) · (1 / i)))
97 1cnd 9935 . . . . . . . . . . . . . 14 ((⊤ ∧ 𝑥𝑆) → 1 ∈ ℂ)
9897, 14, 91subdird 10366 . . . . . . . . . . . . 13 ((⊤ ∧ 𝑥𝑆) → ((1 − (i · 𝑥)) · i) = ((1 · i) − ((i · 𝑥) · i)))
994mulid2i 9922 . . . . . . . . . . . . . . 15 (1 · i) = i
10099a1i 11 . . . . . . . . . . . . . 14 ((⊤ ∧ 𝑥𝑆) → (1 · i) = i)
10191, 12, 91mul32d 10125 . . . . . . . . . . . . . . 15 ((⊤ ∧ 𝑥𝑆) → ((i · 𝑥) · i) = ((i · i) · 𝑥))
102 ixi 10535 . . . . . . . . . . . . . . . . 17 (i · i) = -1
103102oveq1i 6559 . . . . . . . . . . . . . . . 16 ((i · i) · 𝑥) = (-1 · 𝑥)
10412mulm1d 10361 . . . . . . . . . . . . . . . 16 ((⊤ ∧ 𝑥𝑆) → (-1 · 𝑥) = -𝑥)
105103, 104syl5eq 2656 . . . . . . . . . . . . . . 15 ((⊤ ∧ 𝑥𝑆) → ((i · i) · 𝑥) = -𝑥)
106101, 105eqtrd 2644 . . . . . . . . . . . . . 14 ((⊤ ∧ 𝑥𝑆) → ((i · 𝑥) · i) = -𝑥)
107100, 106oveq12d 6567 . . . . . . . . . . . . 13 ((⊤ ∧ 𝑥𝑆) → ((1 · i) − ((i · 𝑥) · i)) = (i − -𝑥))
108 subneg 10209 . . . . . . . . . . . . . 14 ((i ∈ ℂ ∧ 𝑥 ∈ ℂ) → (i − -𝑥) = (i + 𝑥))
1094, 12, 108sylancr 694 . . . . . . . . . . . . 13 ((⊤ ∧ 𝑥𝑆) → (i − -𝑥) = (i + 𝑥))
11098, 107, 1093eqtrd 2648 . . . . . . . . . . . 12 ((⊤ ∧ 𝑥𝑆) → ((1 − (i · 𝑥)) · i) = (i + 𝑥))
111 addcom 10101 . . . . . . . . . . . . 13 ((i ∈ ℂ ∧ 𝑥 ∈ ℂ) → (i + 𝑥) = (𝑥 + i))
1124, 12, 111sylancr 694 . . . . . . . . . . . 12 ((⊤ ∧ 𝑥𝑆) → (i + 𝑥) = (𝑥 + i))
113110, 112eqtrd 2644 . . . . . . . . . . 11 ((⊤ ∧ 𝑥𝑆) → ((1 − (i · 𝑥)) · i) = (𝑥 + i))
114113oveq2d 6565 . . . . . . . . . 10 ((⊤ ∧ 𝑥𝑆) → (1 / ((1 − (i · 𝑥)) · i)) = (1 / (𝑥 + i)))
11594, 96, 1143eqtr3d 2652 . . . . . . . . 9 ((⊤ ∧ 𝑥𝑆) → ((1 / (1 − (i · 𝑥))) · (1 / i)) = (1 / (𝑥 + i)))
11690, 115syl5eqr 2658 . . . . . . . 8 ((⊤ ∧ 𝑥𝑆) → ((1 / (1 − (i · 𝑥))) · -i) = (1 / (𝑥 + i)))
117116mpteq2dva 4672 . . . . . . 7 (⊤ → (𝑥𝑆 ↦ ((1 / (1 − (i · 𝑥))) · -i)) = (𝑥𝑆 ↦ (1 / (𝑥 + i))))
11888, 117eqtrd 2644 . . . . . 6 (⊤ → (ℂ D (𝑥𝑆 ↦ (log‘(1 − (i · 𝑥))))) = (𝑥𝑆 ↦ (1 / (𝑥 + i))))
119 ovex 6577 . . . . . . 7 (1 / (𝑥 − i)) ∈ V
120119a1i 11 . . . . . 6 ((⊤ ∧ 𝑥𝑆) → (1 / (𝑥 − i)) ∈ V)
12128simp3bi 1071 . . . . . . . . 9 (𝑥𝑆 → (1 + (i · 𝑥)) ∈ 𝐷)
122121adantl 481 . . . . . . . 8 ((⊤ ∧ 𝑥𝑆) → (1 + (i · 𝑥)) ∈ 𝐷)
1233, 45, 19sylancr 694 . . . . . . . . 9 ((⊤ ∧ 𝑥 ∈ ℂ) → (1 + (i · 𝑥)) ∈ ℂ)
1242, 48, 49, 51, 45, 52, 58dvmptadd 23529 . . . . . . . . . 10 (⊤ → (ℂ D (𝑥 ∈ ℂ ↦ (1 + (i · 𝑥)))) = (𝑥 ∈ ℂ ↦ (0 + i)))
1254addid2i 10103 . . . . . . . . . . 11 (0 + i) = i
126125mpteq2i 4669 . . . . . . . . . 10 (𝑥 ∈ ℂ ↦ (0 + i)) = (𝑥 ∈ ℂ ↦ i)
127124, 126syl6eq 2660 . . . . . . . . 9 (⊤ → (ℂ D (𝑥 ∈ ℂ ↦ (1 + (i · 𝑥)))) = (𝑥 ∈ ℂ ↦ i))
1282, 123, 52, 127, 68, 73, 63, 74dvmptres 23532 . . . . . . . 8 (⊤ → (ℂ D (𝑥𝑆 ↦ (1 + (i · 𝑥)))) = (𝑥𝑆 ↦ i))
129 fveq2 6103 . . . . . . . 8 (𝑦 = (1 + (i · 𝑥)) → (log‘𝑦) = (log‘(1 + (i · 𝑥))))
130 oveq2 6557 . . . . . . . 8 (𝑦 = (1 + (i · 𝑥)) → (1 / 𝑦) = (1 / (1 + (i · 𝑥))))
1312, 2, 122, 91, 41, 43, 128, 85, 129, 130dvmptco 23541 . . . . . . 7 (⊤ → (ℂ D (𝑥𝑆 ↦ (log‘(1 + (i · 𝑥))))) = (𝑥𝑆 ↦ ((1 / (1 + (i · 𝑥))) · i)))
13297, 20, 91, 21, 93divdiv2d 10712 . . . . . . . . 9 ((⊤ ∧ 𝑥𝑆) → (1 / ((1 + (i · 𝑥)) / i)) = ((1 · i) / (1 + (i · 𝑥))))
13397, 14, 91, 93divdird 10718 . . . . . . . . . . 11 ((⊤ ∧ 𝑥𝑆) → ((1 + (i · 𝑥)) / i) = ((1 / i) + ((i · 𝑥) / i)))
13489a1i 11 . . . . . . . . . . . 12 ((⊤ ∧ 𝑥𝑆) → (1 / i) = -i)
13512, 91, 93divcan3d 10685 . . . . . . . . . . . 12 ((⊤ ∧ 𝑥𝑆) → ((i · 𝑥) / i) = 𝑥)
136134, 135oveq12d 6567 . . . . . . . . . . 11 ((⊤ ∧ 𝑥𝑆) → ((1 / i) + ((i · 𝑥) / i)) = (-i + 𝑥))
137 negicn 10161 . . . . . . . . . . . . 13 -i ∈ ℂ
138 addcom 10101 . . . . . . . . . . . . 13 ((-i ∈ ℂ ∧ 𝑥 ∈ ℂ) → (-i + 𝑥) = (𝑥 + -i))
139137, 12, 138sylancr 694 . . . . . . . . . . . 12 ((⊤ ∧ 𝑥𝑆) → (-i + 𝑥) = (𝑥 + -i))
140 negsub 10208 . . . . . . . . . . . . 13 ((𝑥 ∈ ℂ ∧ i ∈ ℂ) → (𝑥 + -i) = (𝑥 − i))
14112, 4, 140sylancl 693 . . . . . . . . . . . 12 ((⊤ ∧ 𝑥𝑆) → (𝑥 + -i) = (𝑥 − i))
142139, 141eqtrd 2644 . . . . . . . . . . 11 ((⊤ ∧ 𝑥𝑆) → (-i + 𝑥) = (𝑥 − i))
143133, 136, 1423eqtrd 2648 . . . . . . . . . 10 ((⊤ ∧ 𝑥𝑆) → ((1 + (i · 𝑥)) / i) = (𝑥 − i))
144143oveq2d 6565 . . . . . . . . 9 ((⊤ ∧ 𝑥𝑆) → (1 / ((1 + (i · 𝑥)) / i)) = (1 / (𝑥 − i)))
14597, 91, 20, 21div23d 10717 . . . . . . . . 9 ((⊤ ∧ 𝑥𝑆) → ((1 · i) / (1 + (i · 𝑥))) = ((1 / (1 + (i · 𝑥))) · i))
146132, 144, 1453eqtr3rd 2653 . . . . . . . 8 ((⊤ ∧ 𝑥𝑆) → ((1 / (1 + (i · 𝑥))) · i) = (1 / (𝑥 − i)))
147146mpteq2dva 4672 . . . . . . 7 (⊤ → (𝑥𝑆 ↦ ((1 / (1 + (i · 𝑥))) · i)) = (𝑥𝑆 ↦ (1 / (𝑥 − i))))
148131, 147eqtrd 2644 . . . . . 6 (⊤ → (ℂ D (𝑥𝑆 ↦ (log‘(1 + (i · 𝑥))))) = (𝑥𝑆 ↦ (1 / (𝑥 − i))))
1492, 18, 27, 118, 22, 120, 148dvmptsub 23536 . . . . 5 (⊤ → (ℂ D (𝑥𝑆 ↦ ((log‘(1 − (i · 𝑥))) − (log‘(1 + (i · 𝑥)))))) = (𝑥𝑆 ↦ ((1 / (𝑥 + i)) − (1 / (𝑥 − i)))))
150 subcl 10159 . . . . . . . . 9 ((𝑥 ∈ ℂ ∧ i ∈ ℂ) → (𝑥 − i) ∈ ℂ)
15112, 4, 150sylancl 693 . . . . . . . 8 ((⊤ ∧ 𝑥𝑆) → (𝑥 − i) ∈ ℂ)
152 addcl 9897 . . . . . . . . 9 ((𝑥 ∈ ℂ ∧ i ∈ ℂ) → (𝑥 + i) ∈ ℂ)
15312, 4, 152sylancl 693 . . . . . . . 8 ((⊤ ∧ 𝑥𝑆) → (𝑥 + i) ∈ ℂ)
15412sqcld 12868 . . . . . . . . 9 ((⊤ ∧ 𝑥𝑆) → (𝑥↑2) ∈ ℂ)
155 addcl 9897 . . . . . . . . 9 ((1 ∈ ℂ ∧ (𝑥↑2) ∈ ℂ) → (1 + (𝑥↑2)) ∈ ℂ)
1563, 154, 155sylancr 694 . . . . . . . 8 ((⊤ ∧ 𝑥𝑆) → (1 + (𝑥↑2)) ∈ ℂ)
157 atandm4 24406 . . . . . . . . . 10 (𝑥 ∈ dom arctan ↔ (𝑥 ∈ ℂ ∧ (1 + (𝑥↑2)) ≠ 0))
158157simprbi 479 . . . . . . . . 9 (𝑥 ∈ dom arctan → (1 + (𝑥↑2)) ≠ 0)
1599, 158syl 17 . . . . . . . 8 ((⊤ ∧ 𝑥𝑆) → (1 + (𝑥↑2)) ≠ 0)
160151, 153, 156, 159divsubdird 10719 . . . . . . 7 ((⊤ ∧ 𝑥𝑆) → (((𝑥 − i) − (𝑥 + i)) / (1 + (𝑥↑2))) = (((𝑥 − i) / (1 + (𝑥↑2))) − ((𝑥 + i) / (1 + (𝑥↑2)))))
161141oveq1d 6564 . . . . . . . . . 10 ((⊤ ∧ 𝑥𝑆) → ((𝑥 + -i) − (𝑥 + i)) = ((𝑥 − i) − (𝑥 + i)))
162137a1i 11 . . . . . . . . . . 11 ((⊤ ∧ 𝑥𝑆) → -i ∈ ℂ)
16312, 162, 91pnpcand 10308 . . . . . . . . . 10 ((⊤ ∧ 𝑥𝑆) → ((𝑥 + -i) − (𝑥 + i)) = (-i − i))
164161, 163eqtr3d 2646 . . . . . . . . 9 ((⊤ ∧ 𝑥𝑆) → ((𝑥 − i) − (𝑥 + i)) = (-i − i))
165 2cn 10968 . . . . . . . . . . . 12 2 ∈ ℂ
166165, 4, 92divreci 10649 . . . . . . . . . . 11 (2 / i) = (2 · (1 / i))
16789oveq2i 6560 . . . . . . . . . . 11 (2 · (1 / i)) = (2 · -i)
168166, 167eqtri 2632 . . . . . . . . . 10 (2 / i) = (2 · -i)
1691372timesi 11024 . . . . . . . . . 10 (2 · -i) = (-i + -i)
170137, 4negsubi 10238 . . . . . . . . . 10 (-i + -i) = (-i − i)
171168, 169, 1703eqtri 2636 . . . . . . . . 9 (2 / i) = (-i − i)
172164, 171syl6eqr 2662 . . . . . . . 8 ((⊤ ∧ 𝑥𝑆) → ((𝑥 − i) − (𝑥 + i)) = (2 / i))
173172oveq1d 6564 . . . . . . 7 ((⊤ ∧ 𝑥𝑆) → (((𝑥 − i) − (𝑥 + i)) / (1 + (𝑥↑2))) = ((2 / i) / (1 + (𝑥↑2))))
174151mulid1d 9936 . . . . . . . . . 10 ((⊤ ∧ 𝑥𝑆) → ((𝑥 − i) · 1) = (𝑥 − i))
175151, 153mulcomd 9940 . . . . . . . . . . 11 ((⊤ ∧ 𝑥𝑆) → ((𝑥 − i) · (𝑥 + i)) = ((𝑥 + i) · (𝑥 − i)))
176 i2 12827 . . . . . . . . . . . . . 14 (i↑2) = -1
177176oveq2i 6560 . . . . . . . . . . . . 13 ((𝑥↑2) − (i↑2)) = ((𝑥↑2) − -1)
178 subneg 10209 . . . . . . . . . . . . . 14 (((𝑥↑2) ∈ ℂ ∧ 1 ∈ ℂ) → ((𝑥↑2) − -1) = ((𝑥↑2) + 1))
179154, 3, 178sylancl 693 . . . . . . . . . . . . 13 ((⊤ ∧ 𝑥𝑆) → ((𝑥↑2) − -1) = ((𝑥↑2) + 1))
180177, 179syl5eq 2656 . . . . . . . . . . . 12 ((⊤ ∧ 𝑥𝑆) → ((𝑥↑2) − (i↑2)) = ((𝑥↑2) + 1))
181 subsq 12834 . . . . . . . . . . . . 13 ((𝑥 ∈ ℂ ∧ i ∈ ℂ) → ((𝑥↑2) − (i↑2)) = ((𝑥 + i) · (𝑥 − i)))
18212, 4, 181sylancl 693 . . . . . . . . . . . 12 ((⊤ ∧ 𝑥𝑆) → ((𝑥↑2) − (i↑2)) = ((𝑥 + i) · (𝑥 − i)))
183 addcom 10101 . . . . . . . . . . . . 13 (((𝑥↑2) ∈ ℂ ∧ 1 ∈ ℂ) → ((𝑥↑2) + 1) = (1 + (𝑥↑2)))
184154, 3, 183sylancl 693 . . . . . . . . . . . 12 ((⊤ ∧ 𝑥𝑆) → ((𝑥↑2) + 1) = (1 + (𝑥↑2)))
185180, 182, 1843eqtr3d 2652 . . . . . . . . . . 11 ((⊤ ∧ 𝑥𝑆) → ((𝑥 + i) · (𝑥 − i)) = (1 + (𝑥↑2)))
186175, 185eqtrd 2644 . . . . . . . . . 10 ((⊤ ∧ 𝑥𝑆) → ((𝑥 − i) · (𝑥 + i)) = (1 + (𝑥↑2)))
187174, 186oveq12d 6567 . . . . . . . . 9 ((⊤ ∧ 𝑥𝑆) → (((𝑥 − i) · 1) / ((𝑥 − i) · (𝑥 + i))) = ((𝑥 − i) / (1 + (𝑥↑2))))
188 subneg 10209 . . . . . . . . . . . 12 ((𝑥 ∈ ℂ ∧ i ∈ ℂ) → (𝑥 − -i) = (𝑥 + i))
18912, 4, 188sylancl 693 . . . . . . . . . . 11 ((⊤ ∧ 𝑥𝑆) → (𝑥 − -i) = (𝑥 + i))
190 atandm 24403 . . . . . . . . . . . . . 14 (𝑥 ∈ dom arctan ↔ (𝑥 ∈ ℂ ∧ 𝑥 ≠ -i ∧ 𝑥 ≠ i))
1919, 190sylib 207 . . . . . . . . . . . . 13 ((⊤ ∧ 𝑥𝑆) → (𝑥 ∈ ℂ ∧ 𝑥 ≠ -i ∧ 𝑥 ≠ i))
192191simp2d 1067 . . . . . . . . . . . 12 ((⊤ ∧ 𝑥𝑆) → 𝑥 ≠ -i)
193 subeq0 10186 . . . . . . . . . . . . . 14 ((𝑥 ∈ ℂ ∧ -i ∈ ℂ) → ((𝑥 − -i) = 0 ↔ 𝑥 = -i))
194193necon3bid 2826 . . . . . . . . . . . . 13 ((𝑥 ∈ ℂ ∧ -i ∈ ℂ) → ((𝑥 − -i) ≠ 0 ↔ 𝑥 ≠ -i))
19512, 137, 194sylancl 693 . . . . . . . . . . . 12 ((⊤ ∧ 𝑥𝑆) → ((𝑥 − -i) ≠ 0 ↔ 𝑥 ≠ -i))
196192, 195mpbird 246 . . . . . . . . . . 11 ((⊤ ∧ 𝑥𝑆) → (𝑥 − -i) ≠ 0)
197189, 196eqnetrrd 2850 . . . . . . . . . 10 ((⊤ ∧ 𝑥𝑆) → (𝑥 + i) ≠ 0)
198191simp3d 1068 . . . . . . . . . . 11 ((⊤ ∧ 𝑥𝑆) → 𝑥 ≠ i)
199 subeq0 10186 . . . . . . . . . . . . 13 ((𝑥 ∈ ℂ ∧ i ∈ ℂ) → ((𝑥 − i) = 0 ↔ 𝑥 = i))
200199necon3bid 2826 . . . . . . . . . . . 12 ((𝑥 ∈ ℂ ∧ i ∈ ℂ) → ((𝑥 − i) ≠ 0 ↔ 𝑥 ≠ i))
20112, 4, 200sylancl 693 . . . . . . . . . . 11 ((⊤ ∧ 𝑥𝑆) → ((𝑥 − i) ≠ 0 ↔ 𝑥 ≠ i))
202198, 201mpbird 246 . . . . . . . . . 10 ((⊤ ∧ 𝑥𝑆) → (𝑥 − i) ≠ 0)
20397, 153, 151, 197, 202divcan5d 10706 . . . . . . . . 9 ((⊤ ∧ 𝑥𝑆) → (((𝑥 − i) · 1) / ((𝑥 − i) · (𝑥 + i))) = (1 / (𝑥 + i)))
204187, 203eqtr3d 2646 . . . . . . . 8 ((⊤ ∧ 𝑥𝑆) → ((𝑥 − i) / (1 + (𝑥↑2))) = (1 / (𝑥 + i)))
205153mulid1d 9936 . . . . . . . . . 10 ((⊤ ∧ 𝑥𝑆) → ((𝑥 + i) · 1) = (𝑥 + i))
206205, 185oveq12d 6567 . . . . . . . . 9 ((⊤ ∧ 𝑥𝑆) → (((𝑥 + i) · 1) / ((𝑥 + i) · (𝑥 − i))) = ((𝑥 + i) / (1 + (𝑥↑2))))
20797, 151, 153, 202, 197divcan5d 10706 . . . . . . . . 9 ((⊤ ∧ 𝑥𝑆) → (((𝑥 + i) · 1) / ((𝑥 + i) · (𝑥 − i))) = (1 / (𝑥 − i)))
208206, 207eqtr3d 2646 . . . . . . . 8 ((⊤ ∧ 𝑥𝑆) → ((𝑥 + i) / (1 + (𝑥↑2))) = (1 / (𝑥 − i)))
209204, 208oveq12d 6567 . . . . . . 7 ((⊤ ∧ 𝑥𝑆) → (((𝑥 − i) / (1 + (𝑥↑2))) − ((𝑥 + i) / (1 + (𝑥↑2)))) = ((1 / (𝑥 + i)) − (1 / (𝑥 − i))))
210160, 173, 2093eqtr3rd 2653 . . . . . 6 ((⊤ ∧ 𝑥𝑆) → ((1 / (𝑥 + i)) − (1 / (𝑥 − i))) = ((2 / i) / (1 + (𝑥↑2))))
211210mpteq2dva 4672 . . . . 5 (⊤ → (𝑥𝑆 ↦ ((1 / (𝑥 + i)) − (1 / (𝑥 − i)))) = (𝑥𝑆 ↦ ((2 / i) / (1 + (𝑥↑2)))))
212149, 211eqtrd 2644 . . . 4 (⊤ → (ℂ D (𝑥𝑆 ↦ ((log‘(1 − (i · 𝑥))) − (log‘(1 + (i · 𝑥)))))) = (𝑥𝑆 ↦ ((2 / i) / (1 + (𝑥↑2)))))
213 halfcl 11134 . . . . 5 (i ∈ ℂ → (i / 2) ∈ ℂ)
2144, 213mp1i 13 . . . 4 (⊤ → (i / 2) ∈ ℂ)
2152, 23, 25, 212, 214dvmptcmul 23533 . . 3 (⊤ → (ℂ D (𝑥𝑆 ↦ ((i / 2) · ((log‘(1 − (i · 𝑥))) − (log‘(1 + (i · 𝑥))))))) = (𝑥𝑆 ↦ ((i / 2) · ((2 / i) / (1 + (𝑥↑2))))))
216 df-atan 24394 . . . . . . 7 arctan = (𝑥 ∈ (ℂ ∖ {-i, i}) ↦ ((i / 2) · ((log‘(1 − (i · 𝑥))) − (log‘(1 + (i · 𝑥))))))
217216reseq1i 5313 . . . . . 6 (arctan ↾ 𝑆) = ((𝑥 ∈ (ℂ ∖ {-i, i}) ↦ ((i / 2) · ((log‘(1 − (i · 𝑥))) − (log‘(1 + (i · 𝑥)))))) ↾ 𝑆)
218 atanf 24407 . . . . . . . . 9 arctan:(ℂ ∖ {-i, i})⟶ℂ
219218fdmi 5965 . . . . . . . 8 dom arctan = (ℂ ∖ {-i, i})
2207, 219sseqtri 3600 . . . . . . 7 𝑆 ⊆ (ℂ ∖ {-i, i})
221 resmpt 5369 . . . . . . 7 (𝑆 ⊆ (ℂ ∖ {-i, i}) → ((𝑥 ∈ (ℂ ∖ {-i, i}) ↦ ((i / 2) · ((log‘(1 − (i · 𝑥))) − (log‘(1 + (i · 𝑥)))))) ↾ 𝑆) = (𝑥𝑆 ↦ ((i / 2) · ((log‘(1 − (i · 𝑥))) − (log‘(1 + (i · 𝑥)))))))
222220, 221ax-mp 5 . . . . . 6 ((𝑥 ∈ (ℂ ∖ {-i, i}) ↦ ((i / 2) · ((log‘(1 − (i · 𝑥))) − (log‘(1 + (i · 𝑥)))))) ↾ 𝑆) = (𝑥𝑆 ↦ ((i / 2) · ((log‘(1 − (i · 𝑥))) − (log‘(1 + (i · 𝑥))))))
223217, 222eqtri 2632 . . . . 5 (arctan ↾ 𝑆) = (𝑥𝑆 ↦ ((i / 2) · ((log‘(1 − (i · 𝑥))) − (log‘(1 + (i · 𝑥))))))
224223a1i 11 . . . 4 (⊤ → (arctan ↾ 𝑆) = (𝑥𝑆 ↦ ((i / 2) · ((log‘(1 − (i · 𝑥))) − (log‘(1 + (i · 𝑥)))))))
225224oveq2d 6565 . . 3 (⊤ → (ℂ D (arctan ↾ 𝑆)) = (ℂ D (𝑥𝑆 ↦ ((i / 2) · ((log‘(1 − (i · 𝑥))) − (log‘(1 + (i · 𝑥))))))))
226 2ne0 10990 . . . . . . 7 2 ≠ 0
227 divcan6 10611 . . . . . . 7 (((i ∈ ℂ ∧ i ≠ 0) ∧ (2 ∈ ℂ ∧ 2 ≠ 0)) → ((i / 2) · (2 / i)) = 1)
2284, 92, 165, 226, 227mp4an 705 . . . . . 6 ((i / 2) · (2 / i)) = 1
229228oveq1i 6559 . . . . 5 (((i / 2) · (2 / i)) / (1 + (𝑥↑2))) = (1 / (1 + (𝑥↑2)))
2304, 213mp1i 13 . . . . . 6 ((⊤ ∧ 𝑥𝑆) → (i / 2) ∈ ℂ)
231165, 4, 92divcli 10646 . . . . . . 7 (2 / i) ∈ ℂ
232231a1i 11 . . . . . 6 ((⊤ ∧ 𝑥𝑆) → (2 / i) ∈ ℂ)
233230, 232, 156, 159divassd 10715 . . . . 5 ((⊤ ∧ 𝑥𝑆) → (((i / 2) · (2 / i)) / (1 + (𝑥↑2))) = ((i / 2) · ((2 / i) / (1 + (𝑥↑2)))))
234229, 233syl5eqr 2658 . . . 4 ((⊤ ∧ 𝑥𝑆) → (1 / (1 + (𝑥↑2))) = ((i / 2) · ((2 / i) / (1 + (𝑥↑2)))))
235234mpteq2dva 4672 . . 3 (⊤ → (𝑥𝑆 ↦ (1 / (1 + (𝑥↑2)))) = (𝑥𝑆 ↦ ((i / 2) · ((2 / i) / (1 + (𝑥↑2))))))
236215, 225, 2353eqtr4d 2654 . 2 (⊤ → (ℂ D (arctan ↾ 𝑆)) = (𝑥𝑆 ↦ (1 / (1 + (𝑥↑2)))))
237236trud 1484 1 (ℂ D (arctan ↾ 𝑆)) = (𝑥𝑆 ↦ (1 / (1 + (𝑥↑2))))
Colors of variables: wff setvar class
Syntax hints:  wb 195  wa 383  w3a 1031   = wceq 1475  wtru 1476  wcel 1977  wne 2780  {crab 2900  Vcvv 3173  cdif 3537  wss 3540  {csn 4125  {cpr 4127  cmpt 4643  dom cdm 5038  ran crn 5039  cres 5040  wf 5800  1-1-ontowf1o 5803  cfv 5804  (class class class)co 6549  cc 9813  cr 9814  0cc0 9815  1c1 9816  ici 9817   + caddc 9818   · cmul 9820  -∞cmnf 9951  cmin 10145  -cneg 10146   / cdiv 10563  2c2 10947  (,]cioc 12047  cexp 12722  t crest 15904  TopOpenctopn 15905  fldccnfld 19567  Topctop 20517  TopOnctopon 20518   D cdv 23433  logclog 24105  arctancatan 24391
This theorem was proved from axioms:  ax-mp 5  ax-1 6  ax-2 7  ax-3 8  ax-gen 1713  ax-4 1728  ax-5 1827  ax-6 1875  ax-7 1922  ax-8 1979  ax-9 1986  ax-10 2006  ax-11 2021  ax-12 2034  ax-13 2234  ax-ext 2590  ax-rep 4699  ax-sep 4709  ax-nul 4717  ax-pow 4769  ax-pr 4833  ax-un 6847  ax-inf2 8421  ax-cnex 9871  ax-resscn 9872  ax-1cn 9873  ax-icn 9874  ax-addcl 9875  ax-addrcl 9876  ax-mulcl 9877  ax-mulrcl 9878  ax-mulcom 9879  ax-addass 9880  ax-mulass 9881  ax-distr 9882  ax-i2m1 9883  ax-1ne0 9884  ax-1rid 9885  ax-rnegex 9886  ax-rrecex 9887  ax-cnre 9888  ax-pre-lttri 9889  ax-pre-lttrn 9890  ax-pre-ltadd 9891  ax-pre-mulgt0 9892  ax-pre-sup 9893  ax-addf 9894  ax-mulf 9895
This theorem depends on definitions:  df-bi 196  df-or 384  df-an 385  df-3or 1032  df-3an 1033  df-tru 1478  df-fal 1481  df-ex 1696  df-nf 1701  df-sb 1868  df-eu 2462  df-mo 2463  df-clab 2597  df-cleq 2603  df-clel 2606  df-nfc 2740  df-ne 2782  df-nel 2783  df-ral 2901  df-rex 2902  df-reu 2903  df-rmo 2904  df-rab 2905  df-v 3175  df-sbc 3403  df-csb 3500  df-dif 3543  df-un 3545  df-in 3547  df-ss 3554  df-pss 3556  df-nul 3875  df-if 4037  df-pw 4110  df-sn 4126  df-pr 4128  df-tp 4130  df-op 4132  df-uni 4373  df-int 4411  df-iun 4457  df-iin 4458  df-br 4584  df-opab 4644  df-mpt 4645  df-tr 4681  df-eprel 4949  df-id 4953  df-po 4959  df-so 4960  df-fr 4997  df-se 4998  df-we 4999  df-xp 5044  df-rel 5045  df-cnv 5046  df-co 5047  df-dm 5048  df-rn 5049  df-res 5050  df-ima 5051  df-pred 5597  df-ord 5643  df-on 5644  df-lim 5645  df-suc 5646  df-iota 5768  df-fun 5806  df-fn 5807  df-f 5808  df-f1 5809  df-fo 5810  df-f1o 5811  df-fv 5812  df-isom 5813  df-riota 6511  df-ov 6552  df-oprab 6553  df-mpt2 6554  df-of 6795  df-om 6958  df-1st 7059  df-2nd 7060  df-supp 7183  df-wrecs 7294  df-recs 7355  df-rdg 7393  df-1o 7447  df-2o 7448  df-oadd 7451  df-er 7629  df-map 7746  df-pm 7747  df-ixp 7795  df-en 7842  df-dom 7843  df-sdom 7844  df-fin 7845  df-fsupp 8159  df-fi 8200  df-sup 8231  df-inf 8232  df-oi 8298  df-card 8648  df-cda 8873  df-pnf 9955  df-mnf 9956  df-xr 9957  df-ltxr 9958  df-le 9959  df-sub 10147  df-neg 10148  df-div 10564  df-nn 10898  df-2 10956  df-3 10957  df-4 10958  df-5 10959  df-6 10960  df-7 10961  df-8 10962  df-9 10963  df-n0 11170  df-z 11255  df-dec 11370  df-uz 11564  df-q 11665  df-rp 11709  df-xneg 11822  df-xadd 11823  df-xmul 11824  df-ioo 12050  df-ioc 12051  df-ico 12052  df-icc 12053  df-fz 12198  df-fzo 12335  df-fl 12455  df-mod 12531  df-seq 12664  df-exp 12723  df-fac 12923  df-bc 12952  df-hash 12980  df-shft 13655  df-cj 13687  df-re 13688  df-im 13689  df-sqrt 13823  df-abs 13824  df-limsup 14050  df-clim 14067  df-rlim 14068  df-sum 14265  df-ef 14637  df-sin 14639  df-cos 14640  df-tan 14641  df-pi 14642  df-struct 15697  df-ndx 15698  df-slot 15699  df-base 15700  df-sets 15701  df-ress 15702  df-plusg 15781  df-mulr 15782  df-starv 15783  df-sca 15784  df-vsca 15785  df-ip 15786  df-tset 15787  df-ple 15788  df-ds 15791  df-unif 15792  df-hom 15793  df-cco 15794  df-rest 15906  df-topn 15907  df-0g 15925  df-gsum 15926  df-topgen 15927  df-pt 15928  df-prds 15931  df-xrs 15985  df-qtop 15990  df-imas 15991  df-xps 15993  df-mre 16069  df-mrc 16070  df-acs 16072  df-mgm 17065  df-sgrp 17107  df-mnd 17118  df-submnd 17159  df-mulg 17364  df-cntz 17573  df-cmn 18018  df-psmet 19559  df-xmet 19560  df-met 19561  df-bl 19562  df-mopn 19563  df-fbas 19564  df-fg 19565  df-cnfld 19568  df-top 20521  df-bases 20522  df-topon 20523  df-topsp 20524  df-cld 20633  df-ntr 20634  df-cls 20635  df-nei 20712  df-lp 20750  df-perf 20751  df-cn 20841  df-cnp 20842  df-haus 20929  df-cmp 21000  df-tx 21175  df-hmeo 21368  df-fil 21460  df-fm 21552  df-flim 21553  df-flf 21554  df-xms 21935  df-ms 21936  df-tms 21937  df-cncf 22489  df-limc 23436  df-dv 23437  df-log 24107  df-atan 24394
This theorem is referenced by:  atancn  24463
  Copyright terms: Public domain W3C validator