Skip to content

Commit 05ac9d3

Browse files
committed
Define metric-related structures
1 parent ffd359c commit 05ac9d3

7 files changed

Lines changed: 93 additions & 133 deletions

File tree

.github/workflows/ci.yml

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
name: CI
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
- dev
8+
tags:
9+
- "v[0-9]+.[0-9]+.[0-9]+"
10+
11+
permissions:
12+
contents: write
13+
14+
jobs:
15+
lean:
16+
runs-on: ubuntu-24.04
17+
steps:
18+
- run: cargo install --git https://github.com/nguyenvukhang/slope.git
19+
- uses: actions/checkout@v4
20+
- uses: leanprover/lean-action@v1
21+
with:
22+
build: false
23+
lint: false
24+
test: false
25+
- run: make all

.github/workflows/create-release.yml

Lines changed: 0 additions & 22 deletions
This file was deleted.

.github/workflows/lean_action_ci.yml

Lines changed: 0 additions & 21 deletions
This file was deleted.

.github/workflows/update.yml

Lines changed: 0 additions & 41 deletions
This file was deleted.

Munkres/Defs.lean

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
import Munkres.Defs.Basic
2+
import Munkres.Defs.Compact
3+
import Munkres.Defs.Conversions
14
import Munkres.Defs.IsBasisAt
2-
import Munkres.Defs.Neighborhood
5+
import Munkres.Defs.Metric.Basic
6+
import Munkres.Defs.OpenCover
37
-- WARNING: THIS FILE IS AUTO-GENERATED.

Munkres/Defs/Metric/Basic.lean

Lines changed: 25 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,13 @@ import Munkres.Defs.Basic
66

77
namespace Munkres
88

9-
-- import Dino.Core.Topology.IsCountableBasisAt
10-
-- import Dino.Core.Set.Subcollection
11-
12-
open Topology Filter ENNReal NNReal TopologicalSpace
9+
open Topology Filter NNReal
1310

1411
universe u
1512

16-
variable {α : Type u}
17-
18-
-- Equivalence of the idea of convergence. WOH.
19-
example [TopologicalSpace α] (f : ℕ → α) (x : α)
20-
: Tendsto f atTop (𝓝 x) ↔ ∀ U, x ∈ U → IsOpen U → ∃ N, ∀ k ≥ N, f k ∈ U
21-
:= by --
22-
rw [tendsto_atTop_nhds] -- ∎
13+
variable {α : Type u} [MetricSpace α] {X : Set α}
2314

24-
theorem Metric.isComplete_iff [MetricSpace α] {X : Set α}
15+
protected theorem Metric.isComplete_iff
2516
: IsComplete X ↔ ∀ (f : ℕ → X), CauchySeq f → ∃ x, Tendsto f atTop (𝓝 x)
2617
:= by --
2718
constructor
@@ -33,59 +24,45 @@ theorem Metric.isComplete_iff [MetricSpace α] {X : Set α}
3324
rw [<-completeSpace_coe_iff_isComplete]
3425
exact UniformSpace.complete_of_cauchySeq_tendsto h -- ∎
3526

36-
-- theorem Metric.isCompleteSpace_iff [MetricSpace α]
37-
-- : CompleteSpace α ↔ ∀ (f : ℕ → α), CauchySeq f → ∃ x, Tendsto f atTop (𝓝 x)
38-
-- := by --
39-
-- rw [completeSpace_iff_isComplete_univ, Metric.isComplete_iff]
40-
-- constructor
41-
-- · intro h f hf
42-
-- let X : Set α := Set.univ; let φ : X ≃ α := Equiv.Set.univ α
43-
-- let f' : ℕ → X := (φ.invFun <| f ·)
44-
-- have hf' : CauchySeq f' := by
45-
-- rw [cauchySeq_iff'] at hf ⊢
46-
-- exact hf
47-
-- obtain ⟨x, hx⟩ := h f' hf'
48-
-- use x
49-
-- rw [tendsto_atTop] at hx ⊢
50-
-- exact hx
51-
-- · intro h f' hf'
52-
-- let X : Set α := Set.univ; let φ : X ≃ α := Equiv.Set.univ α
53-
-- let f : ℕ → α := φ ∘ f'
54-
-- have hf : CauchySeq f := by rw [cauchySeq_iff'] at hf' ⊢; exact hf'
55-
-- obtain ⟨x, hx⟩ := h f hf
56-
-- use ⟨x, trivial⟩
57-
-- exact tendsto_subtype_rng.mpr hx -- ∎
27+
protected theorem Metric.CompleteSpace_iff
28+
: CompleteSpace α ↔ ∀ (f : ℕ → α), CauchySeq f → ∃ x, Tendsto f atTop (𝓝 x)
29+
:= by --
30+
rw [completeSpace_iff_isComplete_univ, Metric.isComplete_iff]
31+
simp only [Metric.cauchySeq_iff', tendsto_subtype_rng]
32+
simp only [Subtype.exists, Set.mem_univ, exists_const]
33+
let φ := Equiv.Set.univ α
34+
-- exact ⟨fun h f ↦ h (φ.symm ∘ f), fun h f' ↦ h (φ ∘ f')⟩
35+
exact ⟨(· <| φ.symm ∘ ·), (· <| φ ∘ ·)⟩ -- ∎
36+
37+
-- Equivalence for the idea of total boundedness.
38+
example : TotallyBounded X ↔ ∀ ε > 0, ∃ t : Set α, t.Finite ∧ X ⊆ ⋃ y ∈ t, Metric.ball y ε
39+
:= by --
40+
exact Metric.totallyBounded_iff -- ∎
5841

5942
section LebesgueNumber
6043

6144
universe v
62-
variable [MetricSpace α] {ι : Sort v} {c : ι → Set α} {U : Set (Set α)}
45+
variable {ι : Sort v} {c : ι → Set α} {δ : ℝ≥0}
46+
{U : Set (Set α)} {ho : ∀ i, IsOpen (c i)} {hc : Set.univ ⊆ ⋃ i, c i}
6347

6448
/-- Tells us if `δ` is a lebesgue number of the open cover `c`. -/
6549
class LebesgueNumber (δ : ℝ≥0) (ho : ∀ i, IsOpen (c i)) (hc : Set.univ ⊆ ⋃ i, c i) : Prop where
6650
ne_zero : δ ≠ 0
6751
out : ∀ s : Set α, EMetric.diam s < δ → ∃ i, s ⊆ c i
6852

69-
lemma LebesgueNumber.pos {δ : ℝ≥0} {ho : ∀ i, IsOpen (c i)} {hc : Set.univ ⊆ ⋃ i, c i}
70-
(h : LebesgueNumber δ ho hc) : δ > 0 := pos_of_ne_zero h.ne_zero
53+
lemma LebesgueNumber.pos (h : LebesgueNumber δ ho hc) : δ > 0 := pos_of_ne_zero h.ne_zero
7154

72-
protected theorem LebesgueNumber.iff {δ : ℝ≥0} {ho : ∀ i, IsOpen (c i)} {hc : Set.univ ⊆ ⋃ i, c i}
73-
: LebesgueNumber δ ho hc ↔ δ > 0 ∧ ∀ s : Set α, EMetric.diam s < δ → ∃ i, s ⊆ c i
55+
protected theorem LebesgueNumber.iff : LebesgueNumber δ ho hc
56+
↔ δ 0 ∧ ∀ s : Set α, EMetric.diam s < δ → ∃ i, s ⊆ c i
7457
:= by --
7558
constructor
7659
· intro h
77-
exact ⟨h.pos, h.out⟩
78-
· intro ⟨pos, out⟩
79-
exact {ne_zero := pos.ne', out} -- ∎
60+
exact ⟨h.ne_zero, h.out⟩
61+
· intro ⟨ne_zero, out⟩
62+
exact {ne_zero, out} -- ∎
8063

8164
-- For more info in Mathlib, look for `lebesgue_number_lemma_of_emetric`.
8265

8366
end LebesgueNumber
8467

85-
-- Equivalence for the idea of total boundedness.
86-
example [MetricSpace α] {X : Set α} :
87-
TotallyBounded X ↔ ∀ ε > 0, ∃ t : Set α, t.Finite ∧ X ⊆ ⋃ y ∈ t, Metric.ball y ε
88-
:= by --
89-
exact Metric.totallyBounded_iff -- ∎
90-
9168
end Munkres

Munkres/Defs/OpenCover.lean

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
-- A bit of a failed experiment with open covers. Maybe we're better off just
2+
-- using regular sets instead of trying to define structs.
3+
import Mathlib.Data.SetLike.Basic
4+
import Mathlib.Topology.Defs.Basic
5+
6+
namespace Munkres
7+
8+
universe u w
9+
10+
variable
11+
{α : Type u} [TopologicalSpace α]
12+
{ι : Type w}
13+
14+
@[ext]
15+
structure iOpenCover (K : Set α) (ι : Type w) where
16+
toFun : ι → Set α
17+
isOpen' : ∀ i, IsOpen (toFun i)
18+
cover' : K ⊆ ⋃ i, toFun i
19+
20+
instance (K : Set α) : FunLike (iOpenCover K ι) ι (Set α) where
21+
coe := iOpenCover.toFun
22+
coe_injective' _ _ := iOpenCover.ext
23+
24+
@[ext]
25+
structure sOpenCover (K : Set α) where
26+
carrier : Set (Set α)
27+
isOpen' : ∀ u ∈ carrier, IsOpen u
28+
cover' : K ⊆ ⋃₀ carrier
29+
30+
instance (K : Set α) : SetLike (sOpenCover K) (Set α) where
31+
coe := sOpenCover.carrier
32+
coe_injective' _ _ := sOpenCover.ext
33+
34+
-- example {K : Set α} : IsCompact K ↔ ∀ {ι : Type*} (U : iOpenCover K ι),
35+
-- ∃ F : iOpenCover K ι, F := by
36+
-- sorry
37+
38+
end Munkres

0 commit comments

Comments
 (0)