@@ -832,6 +832,126 @@ begin
832
832
norm_num, norm_num, apply pow_pos h
833
833
end
834
834
835
+ section cos_div_pow_two
836
+
837
+ variable (x : ℝ)
838
+
839
+ /-- the series `sqrt_two_add_series x n` is `sqrt(2 + sqrt(2 + ... ))` with `n` square roots,
840
+ starting with `x`. We define it here because `cos (pi / 2 ^ (n+1)) = sqrt_two_add_series 0 n / 2`
841
+ -/
842
+ @[simp] noncomputable def sqrt_two_add_series (x : ℝ) : ℕ → ℝ
843
+ | 0 := x
844
+ | (n+1 ) := sqrt (2 + sqrt_two_add_series n)
845
+
846
+ lemma sqrt_two_add_series_zero : sqrt_two_add_series x 0 = x := by simp
847
+ lemma sqrt_two_add_series_one : sqrt_two_add_series 0 1 = sqrt 2 := by simp
848
+ lemma sqrt_two_add_series_two : sqrt_two_add_series 0 2 = sqrt (2 + sqrt 2 ) := by simp
849
+
850
+ lemma sqrt_two_add_series_zero_nonneg : ∀(n : ℕ), 0 ≤ sqrt_two_add_series 0 n
851
+ | 0 := le_refl 0
852
+ | (n+1 ) := sqrt_nonneg _
853
+
854
+ lemma sqrt_two_add_series_nonneg {x : ℝ} (h : 0 ≤ x) : ∀(n : ℕ), 0 ≤ sqrt_two_add_series x n
855
+ | 0 := h
856
+ | (n+1 ) := sqrt_nonneg _
857
+
858
+ lemma sqrt_two_add_series_lt_two : ∀(n : ℕ), sqrt_two_add_series 0 n < 2
859
+ | 0 := by norm_num
860
+ | (n+1 ) :=
861
+ begin
862
+ refine lt_of_lt_of_le _ (le_of_eq $ sqrt_sqr $ le_of_lt two_pos),
863
+ rw [sqrt_two_add_series, sqrt_lt],
864
+ apply add_lt_of_lt_sub_left,
865
+ apply lt_of_lt_of_le (sqrt_two_add_series_lt_two n),
866
+ norm_num, apply add_nonneg, norm_num, apply sqrt_two_add_series_zero_nonneg, norm_num
867
+ end
868
+
869
+ lemma sqrt_two_add_series_succ (x : ℝ) :
870
+ ∀(n : ℕ), sqrt_two_add_series x (n+1 ) = sqrt_two_add_series (sqrt (2 + x)) n
871
+ | 0 := rfl
872
+ | (n+1 ) := by rw [sqrt_two_add_series, sqrt_two_add_series_succ, sqrt_two_add_series]
873
+
874
+ lemma sqrt_two_add_series_monotone_left {x y : ℝ} (h : x ≤ y) :
875
+ ∀(n : ℕ), sqrt_two_add_series x n ≤ sqrt_two_add_series y n
876
+ | 0 := h
877
+ | (n+1 ) :=
878
+ begin
879
+ rw [sqrt_two_add_series, sqrt_two_add_series],
880
+ apply sqrt_le_sqrt, apply add_le_add_left, apply sqrt_two_add_series_monotone_left
881
+ end
882
+
883
+ @[simp] lemma cos_pi_over_two_pow : ∀(n : ℕ), cos (pi / 2 ^ (n+1 )) = sqrt_two_add_series 0 n / 2
884
+ | 0 := by simp
885
+ | (n+1 ) :=
886
+ begin
887
+ symmetry, rw [div_eq_iff_mul_eq], symmetry,
888
+ rw [sqrt_two_add_series, sqrt_eq_iff_sqr_eq, mul_pow, cos_square, ←mul_div_assoc,
889
+ nat.add_succ, pow_succ, mul_div_mul_left, cos_pi_over_two_pow, add_mul],
890
+ congr, norm_num,
891
+ rw [mul_comm, pow_two, mul_assoc, ←mul_div_assoc, mul_div_cancel_left, ←mul_div_assoc,
892
+ mul_div_cancel_left],
893
+ norm_num, norm_num, norm_num,
894
+ apply add_nonneg, norm_num, apply sqrt_two_add_series_zero_nonneg, norm_num,
895
+ apply le_of_lt, apply cos_pos_of_neg_pi_div_two_lt_of_lt_pi_div_two,
896
+ { transitivity (0 : ℝ), rw neg_lt_zero, apply pi_div_two_pos,
897
+ apply div_pos pi_pos, apply pow_pos, norm_num },
898
+ apply div_lt_div' (le_refl pi) _ pi_pos _,
899
+ refine lt_of_le_of_lt (le_of_eq (pow_one _).symm) _,
900
+ apply pow_lt_pow, norm_num, apply nat.succ_lt_succ, apply nat.succ_pos, all_goals {norm_num}
901
+ end
902
+
903
+ lemma sin_square_pi_over_two_pow (n : ℕ) :
904
+ sin (pi / 2 ^ (n+1 )) ^ 2 = 1 - (sqrt_two_add_series 0 n / 2 ) ^ 2 :=
905
+ by rw [sin_square, cos_pi_over_two_pow]
906
+
907
+ lemma sin_square_pi_over_two_pow_succ (n : ℕ) :
908
+ sin (pi / 2 ^ (n+2 )) ^ 2 = 1 / 2 - sqrt_two_add_series 0 n / 4 :=
909
+ begin
910
+ rw [sin_square_pi_over_two_pow, sqrt_two_add_series, div_pow, sqr_sqrt, add_div, ←sub_sub],
911
+ congr, norm_num, norm_num, apply add_nonneg, norm_num, apply sqrt_two_add_series_zero_nonneg,
912
+ end
913
+
914
+ @[simp] lemma sin_pi_over_two_pow_succ (n : ℕ) :
915
+ sin (pi / 2 ^ (n+2 )) = sqrt (2 - sqrt_two_add_series 0 n) / 2 :=
916
+ begin
917
+ symmetry, rw [div_eq_iff_mul_eq], symmetry,
918
+ rw [sqrt_eq_iff_sqr_eq, mul_pow, sin_square_pi_over_two_pow_succ, sub_mul],
919
+ { congr, norm_num, rw [mul_comm], convert mul_div_cancel' _ _, norm_num, norm_num },
920
+ { rw [sub_nonneg], apply le_of_lt, apply sqrt_two_add_series_lt_two },
921
+ apply le_of_lt, apply mul_pos, apply sin_pos_of_pos_of_lt_pi,
922
+ { apply div_pos pi_pos, apply pow_pos, norm_num },
923
+ refine lt_of_lt_of_le _ (le_of_eq (div_one _)), rw [div_lt_div_left],
924
+ refine lt_of_le_of_lt (le_of_eq (pow_zero 2 ).symm) _,
925
+ apply pow_lt_pow, norm_num, apply nat.succ_pos, apply pi_pos,
926
+ apply pow_pos, all_goals {norm_num}
927
+ end
928
+
929
+ lemma cos_pi_div_four : cos (pi / 4 ) = sqrt 2 / 2 :=
930
+ by { transitivity cos (pi / 2 ^ 2 ), congr, norm_num, simp }
931
+
932
+ lemma sin_pi_div_four : sin (pi / 4 ) = sqrt 2 / 2 :=
933
+ by { transitivity sin (pi / 2 ^ 2 ), congr, norm_num, simp }
934
+
935
+ lemma cos_pi_div_eight : cos (pi / 8 ) = sqrt (2 + sqrt 2 ) / 2 :=
936
+ by { transitivity cos (pi / 2 ^ 3 ), congr, norm_num, simp }
937
+
938
+ lemma sin_pi_div_eight : sin (pi / 8 ) = sqrt (2 - sqrt 2 ) / 2 :=
939
+ by { transitivity sin (pi / 2 ^ 3 ), congr, norm_num, simp }
940
+
941
+ lemma cos_pi_div_sixteen : cos (pi / 16 ) = sqrt (2 + sqrt (2 + sqrt 2 )) / 2 :=
942
+ by { transitivity cos (pi / 2 ^ 4 ), congr, norm_num, simp }
943
+
944
+ lemma sin_pi_div_sixteen : sin (pi / 16 ) = sqrt (2 - sqrt (2 + sqrt 2 )) / 2 :=
945
+ by { transitivity sin (pi / 2 ^ 4 ), congr, norm_num, simp }
946
+
947
+ lemma cos_pi_div_thirty_two : cos (pi / 32 ) = sqrt (2 + sqrt (2 + sqrt (2 + sqrt 2 ))) / 2 :=
948
+ by { transitivity cos (pi / 2 ^ 5 ), congr, norm_num, simp }
949
+
950
+ lemma sin_pi_div_thirty_two : sin (pi / 32 ) = sqrt (2 - sqrt (2 + sqrt (2 + sqrt 2 ))) / 2 :=
951
+ by { transitivity sin (pi / 2 ^ 5 ), congr, norm_num, simp }
952
+
953
+ end cos_div_pow_two
954
+
835
955
/-- The type of angles -/
836
956
def angle : Type :=
837
957
quotient_add_group.quotient (gmultiples (2 * π))
@@ -1068,6 +1188,13 @@ lemma div_sqrt_one_add_lt_one (x : ℝ) : x / sqrt (1 + x ^ 2) < 1 :=
1068
1188
lemma neg_one_lt_div_sqrt_one_add (x : ℝ) : -1 < x / sqrt (1 + x ^ 2 ) :=
1069
1189
(abs_lt.1 (abs_div_sqrt_one_add_lt _)).1
1070
1190
1191
+ @[simp] lemma tan_pi_div_four : tan (π / 4 ) = 1 :=
1192
+ begin
1193
+ rw [tan_eq_sin_div_cos, cos_pi_div_four, sin_pi_div_four],
1194
+ have h : (sqrt 2 ) / 2 > 0 := by cancel_denoms,
1195
+ exact div_self (ne_of_gt h),
1196
+ end
1197
+
1071
1198
lemma tan_pos_of_pos_of_lt_pi_div_two {x : ℝ} (h0x : 0 < x) (hxp : x < π / 2 ) : 0 < tan x :=
1072
1199
by rw tan_eq_sin_div_cos; exact div_pos (sin_pos_of_pos_of_lt_pi h0x (by linarith))
1073
1200
(cos_pos_of_neg_pi_div_two_lt_of_lt_pi_div_two (by linarith) hxp)
@@ -1168,6 +1295,12 @@ tan_inj_of_lt_of_lt_pi_div_two (neg_pi_div_two_lt_arctan _)
1168
1295
@[simp] lemma arctan_zero : arctan 0 = 0 :=
1169
1296
by simp [arctan]
1170
1297
1298
+ @[simp] lemma arctan_one : arctan 1 = π / 4 :=
1299
+ begin
1300
+ refine tan_inj_of_lt_of_lt_pi_div_two (neg_pi_div_two_lt_arctan 1 ) (arctan_lt_pi_div_two 1 ) _ _ _;
1301
+ linarith [pi_pos, tan_arctan 1 , tan_pi_div_four],
1302
+ end
1303
+
1171
1304
@[simp] lemma arctan_neg (x : ℝ) : arctan (-x) = - arctan x :=
1172
1305
by simp [arctan, neg_div]
1173
1306
0 commit comments