|
| 1 | +/- |
| 2 | +Copyright (c) 2025 Yury G. Kudryashov. All rights reserved. |
| 3 | +Released under Apache 2.0 license as described in the file LICENSE. |
| 4 | +Authors: Yury G. Kudryashov |
| 5 | +-/ |
| 6 | +import Mathlib.Analysis.Real.Cardinality |
| 7 | + |
| 8 | +/-! |
| 9 | +# Example of a linear order which is a separable space but is not a second countable topology |
| 10 | +
|
| 11 | +In this file we provide an example of a linear order |
| 12 | +such that the order topology is a separable space but is not a second countable topology. |
| 13 | +
|
| 14 | +The example is `ℝ ×ₗ Bool` which is the real line with each point duplicated |
| 15 | +so that the duplicate is greater than the original point |
| 16 | +and points with different real values are compared by these values. |
| 17 | +-/ |
| 18 | + |
| 19 | +open Set TopologicalSpace |
| 20 | + |
| 21 | +namespace RealProdLexBool |
| 22 | + |
| 23 | +instance instTopologicalSpace : TopologicalSpace (ℝ ×ₗ Bool) := Preorder.topology _ |
| 24 | +instance instOrderTopology : OrderTopology (ℝ ×ₗ Bool) := ⟨rfl⟩ |
| 25 | +noncomputable instance instLinearOrder : LinearOrder (ℝ ×ₗ Bool) := inferInstance |
| 26 | + |
| 27 | +instance instSeparableSpace : SeparableSpace (ℝ ×ₗ Bool) := by |
| 28 | + refine ⟨⟨range fun q : ℚ ↦ toLex (q, false), countable_range _, ?_⟩⟩ |
| 29 | + simp only [dense_iff_inter_open, Set.Nonempty, toLex.surjective.exists] |
| 30 | + rintro U hUo ⟨⟨x, _ | _⟩, hx⟩ |
| 31 | + · rcases exists_Ioc_subset_of_mem_nhds (hUo.mem_nhds hx) (exists_lt _) with ⟨y, hyx, hyU⟩ |
| 32 | + rcases toLex.surjective y with ⟨y, rfl⟩ |
| 33 | + have : y.1 < x := by simpa [Prod.Lex.toLex_lt_toLex, y.2.false_le.not_gt] using hyx |
| 34 | + rcases exists_rat_btwn this with ⟨q, hyq, hqx⟩ |
| 35 | + refine ⟨(q, false), hyU ?_, mem_range_self _⟩ |
| 36 | + simp [Prod.Lex.toLex_le_toLex, Prod.Lex.toLex_lt_toLex, hyq, hqx] |
| 37 | + · rcases exists_Ico_subset_of_mem_nhds (hUo.mem_nhds hx) (exists_gt _) with ⟨y, hyx, hyU⟩ |
| 38 | + rcases toLex.surjective y with ⟨y, rfl⟩ |
| 39 | + have : x < y.1 := by simpa [Prod.Lex.toLex_lt_toLex, y.2.le_true.not_gt] using hyx |
| 40 | + rcases exists_rat_btwn this with ⟨q, hyq, hqx⟩ |
| 41 | + refine ⟨(q, false), hyU ?_, mem_range_self _⟩ |
| 42 | + simp [Prod.Lex.toLex_le_toLex, Prod.Lex.toLex_lt_toLex, hyq, hqx] |
| 43 | + |
| 44 | +theorem not_secondCountableTopology : ¬SecondCountableTopology (ℝ ×ₗ Bool) := by |
| 45 | + intro h |
| 46 | + have : {x : ℝ ×ₗ Bool | (ofLex x).2}.Countable := by |
| 47 | + simpa [Prod.Lex.covBy_iff, Bool.covBy_iff, exists_or, not_covBy, (Bool.le_true _).not_gt, |
| 48 | + (Bool.false_le _).lt_iff_ne] using countable_setOf_covBy_left (α := ℝ ×ₗ Bool) |
| 49 | + refine not_countable_univ <| (this.image fun x ↦ (ofLex x).1).mono fun x _ ↦ ?_ |
| 50 | + exact ⟨toLex (x, true), rfl, rfl⟩ |
| 51 | + |
| 52 | +end RealProdLexBool |
0 commit comments