Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit b877f6b

Browse files
committed
chore(analysis/normed/group): generalize cauchy_seq.add (#9868)
Also golf a few proofs.
1 parent 29c7266 commit b877f6b

File tree

2 files changed

+31
-59
lines changed

2 files changed

+31
-59
lines changed

src/analysis/normed/group/basic.lean

Lines changed: 27 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -417,40 +417,8 @@ lemma normed_group.cauchy_seq_iff [nonempty α] [semilattice_sup α] {u : α →
417417
cauchy_seq u ↔ ∀ ε > 0, ∃ N, ∀ m n, N ≤ m → N ≤ n → ∥u m - u n∥ < ε :=
418418
by simp [metric.cauchy_seq_iff, dist_eq_norm]
419419

420-
lemma cauchy_seq.add {u v : ℕ → E} (hu : cauchy_seq u) (hv : cauchy_seq v) : cauchy_seq (u + v) :=
421-
begin
422-
rw normed_group.cauchy_seq_iff at *,
423-
intros ε ε_pos,
424-
rcases hu (ε/2) (half_pos ε_pos) with ⟨Nu, hNu⟩,
425-
rcases hv (ε/2) (half_pos ε_pos) with ⟨Nv, hNv⟩,
426-
use max Nu Nv,
427-
intros m n hm hn,
428-
replace hm := max_le_iff.mp hm,
429-
replace hn := max_le_iff.mp hn,
430-
431-
calc ∥(u + v) m - (u + v) n∥ = ∥u m + v m - (u n + v n)∥ : rfl
432-
... = ∥(u m - u n) + (v m - v n)∥ : by abel
433-
... ≤ ∥u m - u n∥ + ∥v m - v n∥ : norm_add_le _ _
434-
... < ε : by linarith only [hNu m n hm.1 hn.1, hNv m n hm.2 hn.2]
435-
end
436-
437420
open finset
438421

439-
lemma cauchy_seq_sum_of_eventually_eq {u v : ℕ → E} {N : ℕ} (huv : ∀ n ≥ N, u n = v n)
440-
(hv : cauchy_seq (λ n, ∑ k in range (n+1), v k)) : cauchy_seq (λ n, ∑ k in range (n + 1), u k) :=
441-
begin
442-
let d : ℕ → E := λ n, ∑ k in range (n + 1), (u k - v k),
443-
rw show (λ n, ∑ k in range (n + 1), u k) = d + (λ n, ∑ k in range (n + 1), v k),
444-
by { ext n, simp [d] },
445-
have : ∀ n ≥ N, d n = d N,
446-
{ intros n hn,
447-
dsimp [d],
448-
rw eventually_constant_sum _ hn,
449-
intros m hm,
450-
simp [huv m hm] },
451-
exact (tendsto_at_top_of_eventually_const this).cauchy_seq.add hv
452-
end
453-
454422
/-- A homomorphism `f` of seminormed groups is Lipschitz, if there exists a constant `C` such that
455423
for all `x`, one has `∥f x∥ ≤ C * ∥x∥`. The analogous condition for a linear map of
456424
(semi)normed spaces is in `normed_space.operator_norm`. -/
@@ -896,23 +864,32 @@ by simp [metric.mem_closure_iff, dist_eq_norm]
896864
lemma norm_le_zero_iff' [separated_space E] {g : E} :
897865
∥g∥ ≤ 0 ↔ g = 0 :=
898866
begin
899-
have : g = 0 ↔ g ∈ closure ({0} : set E),
900-
by simpa only [separated_space.out, mem_id_rel, sub_zero] using group_separation_rel g (0 : E),
901-
rw [this, semi_normed_group.mem_closure_iff],
902-
simp [forall_lt_iff_le']
867+
letI : normed_group E := { to_metric_space := of_t2_pseudo_metric_space ‹_›,
868+
.. ‹semi_normed_group E› },
869+
rw [← dist_zero_right], exact dist_le_zero
903870
end
904871

905872
lemma norm_eq_zero_iff' [separated_space E] {g : E} : ∥g∥ = 0 ↔ g = 0 :=
906-
begin
907-
conv_rhs { rw ← norm_le_zero_iff' },
908-
split ; intro h,
909-
{ rw h },
910-
{ exact le_antisymm h (norm_nonneg g) }
911-
end
873+
(norm_nonneg g).le_iff_eq.symm.trans norm_le_zero_iff'
912874

913875
lemma norm_pos_iff' [separated_space E] {g : E} : 0 < ∥g∥ ↔ g ≠ 0 :=
914876
by rw [← not_le, norm_le_zero_iff']
915877

878+
lemma cauchy_seq_sum_of_eventually_eq {u v : ℕ → E} {N : ℕ} (huv : ∀ n ≥ N, u n = v n)
879+
(hv : cauchy_seq (λ n, ∑ k in range (n+1), v k)) : cauchy_seq (λ n, ∑ k in range (n + 1), u k) :=
880+
begin
881+
let d : ℕ → E := λ n, ∑ k in range (n + 1), (u k - v k),
882+
rw show (λ n, ∑ k in range (n + 1), u k) = d + (λ n, ∑ k in range (n + 1), v k),
883+
by { ext n, simp [d] },
884+
have : ∀ n ≥ N, d n = d N,
885+
{ intros n hn,
886+
dsimp [d],
887+
rw eventually_constant_sum _ hn,
888+
intros m hm,
889+
simp [huv m hm] },
890+
exact (tendsto_at_top_of_eventually_const this).cauchy_seq.add hv
891+
end
892+
916893
end semi_normed_group
917894

918895
section normed_group
@@ -954,32 +931,23 @@ noncomputable def normed_group.of_core (E : Type*) [add_comm_group E] [has_norm
954931

955932
variables [normed_group E] [normed_group F]
956933

957-
@[simp] lemma norm_eq_zero {g : E} : ∥g∥ = 0 ↔ g = 0 :=
958-
dist_zero_right g ▸ dist_eq_zero
934+
@[simp] lemma norm_eq_zero {g : E} : ∥g∥ = 0 ↔ g = 0 := norm_eq_zero_iff'
959935

960-
@[simp] lemma norm_pos_iff {g : E} : 0 < ∥ g ∥ ↔ g ≠ 0 :=
961-
dist_zero_right g ▸ dist_pos
936+
@[simp] lemma norm_pos_iff {g : E} : 0 < ∥ g ∥ ↔ g ≠ 0 := norm_pos_iff'
962937

963-
@[simp] lemma norm_le_zero_iff {g : E} : ∥g∥ ≤ 0 ↔ g = 0 :=
964-
by { rw [← dist_zero_right], exact dist_le_zero }
938+
@[simp] lemma norm_le_zero_iff {g : E} : ∥g∥ ≤ 0 ↔ g = 0 := norm_le_zero_iff'
939+
940+
lemma norm_sub_eq_zero_iff {u v : E} : ∥u - v∥ = 0 ↔ u = v :=
941+
by rw [norm_eq_zero, sub_eq_zero]
965942

966943
lemma eq_of_norm_sub_le_zero {g h : E} (a : ∥g - h∥ ≤ 0) : g = h :=
967944
by rwa [← sub_eq_zero, ← norm_le_zero_iff]
968945

969946
lemma eq_of_norm_sub_eq_zero {u v : E} (h : ∥u - v∥ = 0) : u = v :=
970-
begin
971-
apply eq_of_dist_eq_zero,
972-
rwa dist_eq_norm
973-
end
974-
975-
lemma norm_sub_eq_zero_iff {u v : E} : ∥u - v∥ = 0 ↔ u = v :=
976-
begin
977-
convert dist_eq_zero,
978-
rwa dist_eq_norm
979-
end
947+
norm_sub_eq_zero_iff.1 h
980948

981949
@[simp] lemma nnnorm_eq_zero {a : E} : ∥a∥₊ = 0 ↔ a = 0 :=
982-
by simp only [nnreal.eq_iff.symm, nnreal.coe_zero, coe_nnnorm, norm_eq_zero]
950+
by rw [← nnreal.coe_eq_zero, coe_nnnorm, norm_eq_zero]
983951

984952
/-- An injective group homomorphism from an `add_comm_group` to a `normed_group` induces a
985953
`normed_group` structure on the domain.

src/topology/algebra/uniform_group.lean

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,10 @@ uniform_continuous_of_tendsto_zero $
141141
suffices tendsto f (𝓝 0) (𝓝 (f 0)), by rwa f.map_zero at this,
142142
h.tendsto 0
143143

144+
lemma cauchy_seq.add {ι : Type*} [semilattice_sup ι] {u v : ι → α} (hu : cauchy_seq u)
145+
(hv : cauchy_seq v) : cauchy_seq (u + v) :=
146+
uniform_continuous_add.comp_cauchy_seq (hu.prod hv)
147+
144148
end uniform_add_group
145149

146150
section topological_add_comm_group

0 commit comments

Comments
 (0)