forked from leanprover-community/mathlib4
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSemiconj.lean
More file actions
232 lines (198 loc) · 11.9 KB
/
Semiconj.lean
File metadata and controls
232 lines (198 loc) · 11.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
/-
Copyright (c) 2024 Damien Thomine. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Damien Thomine, Pietro Monticone
-/
module
public import Mathlib.Dynamics.TopologicalEntropy.CoverEntropy
/-!
# Topological entropy of the image of a set under a semiconjugacy
Consider two dynamical systems `(X, S)` and `(Y, T)` together with a semiconjugacy `φ`:
```
X ---S--> X
| |
φ φ
| |
v v
Y ---T--> Y
```
We relate the topological entropy of a subset `F ⊆ X` with the topological entropy
of its image `φ '' F ⊆ Y`.
The best-known theorem is that, if all maps are uniformly continuous, then
`coverEntropy T (φ '' F) ≤ coverEntropy S F`. This is theorem
`coverEntropy_image_le_of_uniformContinuous` herein. We actually prove the much more general
statement that `coverEntropy T (φ '' F) = coverEntropy S F` if `X` is endowed with the pullback
by `φ` of the uniform structure of `Y`.
This more general statement has another direct consequence: if `F` is `S`-invariant, then the
topological entropy of the restriction of `S` to `F` is exactly `coverEntropy S F`. This
corollary is essential: in most references, the entropy of an invariant subset (or subsystem) `F` is
defined as the entropy of the restriction to `F` of the system. We chose instead to give a direct
definition of the topological entropy of a subset, so as to avoid working with subtypes. Theorem
`coverEntropy_restrict` shows that this choice is coherent with the literature.
## Implementation notes
We use only the definition of the topological entropy using covers; the simplest version of
`IsDynCoverOf.image` for nets fails.
## Main results
- `coverEntropy_image_of_comap`/`coverEntropyInf_image_of_comap`: the entropy of `φ '' F` equals
the entropy of `F` if `X` is endowed with the pullback by `φ` of the uniform structure of `Y`.
- `coverEntropy_image_le_of_uniformContinuous`/`coverEntropyInf_image_le_of_uniformContinuous`:
the entropy of `φ '' F` is lower than the entropy of `F` if `φ` is uniformly continuous.
- `coverEntropy_restrict`: the entropy of the restriction of `S` to an invariant set `F` is
`coverEntropy S F`.
## Tags
entropy, semiconjugacy
-/
public section
open Function Prod Set Uniformity UniformSpace
open scoped SetRel
namespace Dynamics
variable {X Y : Type*} {s F : Set X} {V : SetRel Y Y} {S : X → X} {T : Y → Y} {φ : X → Y} {n : ℕ}
lemma IsDynCoverOf.image (h : Semiconj φ S T) (h' : IsDynCoverOf S F (map φ φ ⁻¹' V) n s) :
IsDynCoverOf T (φ '' F) V n (φ '' s) := by
rintro _ ⟨x, hx, rfl⟩
obtain ⟨y, hy, hxy⟩ := h' hx
refine ⟨_, Set.mem_image_of_mem _ hy, show (x, y) ∈ map φ φ ⁻¹' dynEntourage T V n from ?_⟩
rwa [h.preimage_dynEntourage V n]
lemma IsDynCoverOf.preimage (h : Semiconj φ S T) [V.IsSymm] {t : Finset Y}
(h' : IsDynCoverOf T (φ '' F) V n t) :
∃ s : Finset X, IsDynCoverOf S F ((map φ φ) ⁻¹' (V ○ V)) n s ∧ s.card ≤ t.card := by
classical
rcases isEmpty_or_nonempty X with _ | _
· exact ⟨∅, eq_empty_of_isEmpty F ▸ ⟨isDynCoverOf_empty, Finset.card_empty ▸ zero_le t.card⟩⟩
-- If `t` is a dynamical cover of `φ '' F`, then we want to choose one preimage by `φ` for each
-- element of `t`. This is complicated by the fact that `t` may not be a subset of `φ '' F`,
-- and may not even be in the range of `φ`. Hence, we first modify `t` to make it a subset
-- of `φ '' F`. This requires taking larger entourages.
obtain ⟨s, s_cover, s_card, s_inter⟩ := h'.nonempty_inter
choose! g g_rel g_mem using fun (x : Y) (h : x ∈ s) ↦ nonempty_def.1 (s_inter x h)
choose! f _ φ_f using fun (y : Y) (hy : y ∈ φ '' F) ↦ hy
refine ⟨s.image (f ∘ g), fun x hx ↦ ?_, Finset.card_image_le.trans s_card⟩
simp only [Finset.coe_image, comp_apply, mem_image, SetLike.mem_coe, ← h.preimage_dynEntourage,
mem_preimage, map_apply, exists_exists_and_eq_and]
obtain ⟨y, hy, hxy⟩ := s_cover (Set.mem_image_of_mem _ hx)
refine ⟨y, hy, dynEntourage_comp_subset _ _ _ _ ⟨_, hxy, ?_⟩⟩
rw [φ_f _ (g_mem _ hy)]
exact g_rel _ hy
lemma le_coverMincard_image (h : Semiconj φ S T) (F : Set X) [V.IsSymm] (n : ℕ) :
coverMincard S F ((map φ φ) ⁻¹' (V ○ V)) n ≤ coverMincard T (φ '' F) V n := by
rcases eq_top_or_lt_top (coverMincard T (φ '' F) V n) with h' | h'
· exact h' ▸ le_top
obtain ⟨t, t_cover, t_card⟩ := (coverMincard_finite_iff T (φ '' F) V n).1 h'
obtain ⟨s, s_cover, s_card⟩ := t_cover.preimage h
rw [← t_card]
exact s_cover.coverMincard_le_card.trans (WithTop.coe_le_coe.2 s_card)
lemma coverMincard_image_le (h : Semiconj φ S T) (F : Set X) (V : SetRel Y Y) (n : ℕ) :
coverMincard T (φ '' F) V n ≤ coverMincard S F ((map φ φ) ⁻¹' V) n := by
classical
rcases eq_top_or_lt_top (coverMincard S F ((map φ φ) ⁻¹' V) n) with h' | h'
· exact h' ▸ le_top
obtain ⟨s, s_cover, s_card⟩ := (coverMincard_finite_iff S F ((map φ φ) ⁻¹' V) n).1 h'
rw [← s_card]
have := s_cover.image h
rw [← s.coe_image] at this
exact this.coverMincard_le_card.trans (WithTop.coe_le_coe.2 s.card_image_le)
open ENNReal EReal ExpGrowth Filter
lemma le_coverEntropyEntourage_image (h : Semiconj φ S T) (F : Set X) [V.IsSymm] :
coverEntropyEntourage S F ((map φ φ) ⁻¹' (V ○ V)) ≤ coverEntropyEntourage T (φ '' F) V :=
expGrowthSup_monotone fun n ↦ ENat.toENNReal_mono (le_coverMincard_image h F n)
lemma le_coverEntropyInfEntourage_image (h : Semiconj φ S T) (F : Set X) [V.IsSymm] :
coverEntropyInfEntourage S F ((map φ φ) ⁻¹' (V ○ V)) ≤ coverEntropyInfEntourage T (φ '' F) V :=
expGrowthInf_monotone fun n ↦ ENat.toENNReal_mono (le_coverMincard_image h F n)
lemma coverEntropyEntourage_image_le (h : Semiconj φ S T) (F : Set X) (V : SetRel Y Y) :
coverEntropyEntourage T (φ '' F) V ≤ coverEntropyEntourage S F ((map φ φ) ⁻¹' V) :=
expGrowthSup_monotone fun n ↦ ENat.toENNReal_mono (coverMincard_image_le h F V n)
lemma coverEntropyInfEntourage_image_le (h : Semiconj φ S T) (F : Set X) (V : SetRel Y Y) :
coverEntropyInfEntourage T (φ '' F) V ≤ coverEntropyInfEntourage S F ((map φ φ) ⁻¹' V) :=
expGrowthInf_monotone fun n ↦ ENat.toENNReal_mono (coverMincard_image_le h F V n)
/-- The entropy of `φ '' F` equals the entropy of `F` if `X` is endowed with the pullback by `φ`
of the uniform structure of `Y`. -/
theorem coverEntropy_image_of_comap (u : UniformSpace Y) {S : X → X} {T : Y → Y} {φ : X → Y}
(h : Semiconj φ S T) (F : Set X) :
coverEntropy T (φ '' F) = @coverEntropy X (comap φ u) S F := by
let : UniformSpace X := comap φ u
apply le_antisymm
· refine iSup₂_le fun V V_uni ↦
(coverEntropyEntourage_antitone _ _ SetRel.symmetrize_subset_self).trans <|
(coverEntropyEntourage_image_le h F _).trans ?_
apply coverEntropyEntourage_le_coverEntropy
rw [uniformity_comap φ, mem_comap]
exact ⟨_, symmetrize_mem_uniformity V_uni, .rfl⟩
· refine iSup₂_le fun U U_uni ↦ ?_
simp only [uniformity_comap φ, mem_comap] at U_uni
obtain ⟨V, V_uni, V_sub⟩ := U_uni
obtain ⟨W, W_uni, W_symm, W_V⟩ := comp_symm_mem_uniformity_sets V_uni
apply (coverEntropyEntourage_antitone S F ((preimage_mono W_V).trans V_sub)).trans
apply (le_coverEntropyEntourage_image h F).trans
exact coverEntropyEntourage_le_coverEntropy T (φ '' F) W_uni
/-- The entropy of `φ '' F` equals the entropy of `F` if `X` is endowed with the pullback by `φ`
of the uniform structure of `Y`. This version uses a `liminf`. -/
theorem coverEntropyInf_image_of_comap (u : UniformSpace Y) {S : X → X} {T : Y → Y} {φ : X → Y}
(h : Semiconj φ S T) (F : Set X) :
coverEntropyInf T (φ '' F) = @coverEntropyInf X (comap φ u) S F := by
let : UniformSpace X := comap φ u
apply le_antisymm
· refine iSup₂_le fun V V_uni ↦
(coverEntropyInfEntourage_antitone _ _ SetRel.symmetrize_subset_self).trans <|
(coverEntropyInfEntourage_image_le h F _).trans ?_
apply coverEntropyInfEntourage_le_coverEntropyInf
rw [uniformity_comap φ, mem_comap]
exact ⟨_, symmetrize_mem_uniformity V_uni, .rfl⟩
· refine iSup₂_le fun U U_uni ↦ ?_
simp only [uniformity_comap φ, mem_comap] at U_uni
obtain ⟨V, V_uni, V_sub⟩ := U_uni
obtain ⟨W, W_uni, W_symm, W_V⟩ := comp_symm_mem_uniformity_sets V_uni
apply (coverEntropyInfEntourage_antitone S F ((preimage_mono W_V).trans V_sub)).trans
apply (le_coverEntropyInfEntourage_image h F).trans
exact coverEntropyInfEntourage_le_coverEntropyInf T (φ '' F) W_uni
open Subtype
lemma coverEntropy_restrict_subset [UniformSpace X] {T : X → X} {F G : Set X} (hF : F ⊆ G)
(hG : MapsTo T G G) :
coverEntropy (hG.restrict T G G) (val ⁻¹' F) = coverEntropy T F := by
rw [← coverEntropy_image_of_comap _ hG.val_restrict_apply (val ⁻¹' F), image_preimage_coe G F,
inter_eq_right.2 hF]
lemma coverEntropyInf_restrict_subset [UniformSpace X] {T : X → X} {F G : Set X} (hF : F ⊆ G)
(hG : MapsTo T G G) :
coverEntropyInf (hG.restrict T G G) (val ⁻¹' F) = coverEntropyInf T F := by
rw [← coverEntropyInf_image_of_comap _ hG.val_restrict_apply (val ⁻¹' F), image_preimage_coe G F,
inter_eq_right.2 hF]
/-- The entropy of the restriction of `T` to an invariant set `F` is `coverEntropy S F`. This
theorem justifies our definition of `coverEntropy T F`. -/
theorem coverEntropy_restrict [UniformSpace X] {T : X → X} {F : Set X} (h : MapsTo T F F) :
coverEntropy (h.restrict T F F) univ = coverEntropy T F := by
rw [← coverEntropy_restrict_subset Subset.rfl h, coe_preimage_self F]
/-- The entropy of `φ '' F` is lower than entropy of `F` if `φ` is uniformly continuous. -/
theorem coverEntropy_image_le_of_uniformContinuous [UniformSpace X] [UniformSpace Y] {S : X → X}
{T : Y → Y} {φ : X → Y} (h : Semiconj φ S T) (h' : UniformContinuous φ) (F : Set X) :
coverEntropy T (φ '' F) ≤ coverEntropy S F := by
rw [coverEntropy_image_of_comap _ h F]
exact coverEntropy_antitone S F (uniformContinuous_iff.1 h')
/-- The entropy of `φ '' F` is lower than entropy of `F` if `φ` is uniformly continuous. This
version uses a `liminf`. -/
theorem coverEntropyInf_image_le_of_uniformContinuous [UniformSpace X] [UniformSpace Y] {S : X → X}
{T : Y → Y} {φ : X → Y} (h : Semiconj φ S T) (h' : UniformContinuous φ) (F : Set X) :
coverEntropyInf T (φ '' F) ≤ coverEntropyInf S F := by
rw [coverEntropyInf_image_of_comap _ h F]
exact coverEntropyInf_antitone S F (uniformContinuous_iff.1 h')
lemma coverEntropy_image_le_of_uniformContinuousOn_invariant [UniformSpace X] [UniformSpace Y]
{S : X → X} {T : Y → Y} {φ : X → Y} (h : Semiconj φ S T) {F G : Set X}
(h' : UniformContinuousOn φ G) (hF : F ⊆ G) (hG : MapsTo S G G) :
coverEntropy T (φ '' F) ≤ coverEntropy S F := by
rw [← coverEntropy_restrict_subset hF hG]
have hφ : Semiconj (G.restrict φ) (hG.restrict S G G) T := by
intro x
rw [G.restrict_apply, G.restrict_apply, hG.val_restrict_apply, h.eq x]
apply (coverEntropy_image_le_of_uniformContinuous hφ
(uniformContinuousOn_iff_restrict.1 h') (val ⁻¹' F)).trans_eq'
rw [← image_image_val_eq_restrict_image, image_preimage_coe G F, inter_eq_right.2 hF]
lemma coverEntropyInf_image_le_of_uniformContinuousOn_invariant [UniformSpace X] [UniformSpace Y]
{S : X → X} {T : Y → Y} {φ : X → Y} (h : Semiconj φ S T) {F G : Set X}
(h' : UniformContinuousOn φ G) (hF : F ⊆ G) (hG : MapsTo S G G) :
coverEntropyInf T (φ '' F) ≤ coverEntropyInf S F := by
rw [← coverEntropyInf_restrict_subset hF hG]
have hφ : Semiconj (G.restrict φ) (hG.restrict S G G) T := by
intro a
rw [G.restrict_apply, G.restrict_apply, hG.val_restrict_apply, h.eq a]
apply (coverEntropyInf_image_le_of_uniformContinuous hφ
(uniformContinuousOn_iff_restrict.1 h') (val ⁻¹' F)).trans_eq'
rw [← image_image_val_eq_restrict_image, image_preimage_coe G F, inter_eq_right.2 hF]
end Dynamics