@@ -79,34 +79,22 @@ lemma coe_mk (t) : (⟨t⟩ : TileSet ps ιₜ) = t := rfl
7979lemma coe_injective : Injective (TileSet.tiles : TileSet ps ιₜ → ιₜ → PlacedTile ps) :=
8080 fun _ _ ↦ coe_inj.1
8181
82- /-- Coercion from a `TileSet` to a set of tiles (losing information about the presence of
83- duplicate tiles in the `TileSet`). Use the coercion rather than using `coeSet` directly. -/
84- @[coe] def coeSet (t : TileSet ps ιₜ) : Set (PlacedTile ps) := Set.range t
85-
86- instance : CoeOut (TileSet ps ιₜ) (Set (PlacedTile ps)) where
87- coe := coeSet
88-
8982instance : Membership (PlacedTile ps) (TileSet ps ιₜ) where
90- mem t pt := pt ∈ (t : Set (PlacedTile ps))
91-
92- @[simp] lemma mem_coeSet {pt : PlacedTile ps} {t : TileSet ps ιₜ} :
93- pt ∈ (t : Set (PlacedTile ps)) ↔ pt ∈ t :=
94- Iff.rfl
83+ mem t pt := pt ∈ Set.range t
9584
96- lemma coeSet_apply (t : TileSet ps ιₜ) : t = Set.range t := rfl
97-
98- protected lemma mem_def {pt : PlacedTile ps} {t : TileSet ps ιₜ} : pt ∈ t ↔ ∃ i, t i = pt :=
85+ @[simp] lemma exists_iff_mem {pt : PlacedTile ps} {t : TileSet ps ιₜ} :
86+ (∃ i, t i = pt) ↔ pt ∈ t :=
9987 Iff.rfl
10088
10189lemma apply_mem (t : TileSet ps ιₜ) (i : ιₜ) : t i ∈ t := Set.mem_range_self i
10290
10391@[simp] lemma exists_mem_iff {t : TileSet ps ιₜ} {f : PlacedTile ps → Prop } :
104- (∃ pt ∈ t, f pt) ↔ ∃ i, f (t i) := by
105- simp_rw [← mem_coeSet, coeSet_apply, Set.exists_range_iff]
92+ (∃ pt ∈ t, f pt) ↔ ∃ i, f (t i) :=
93+ Set.exists_range_iff
10694
10795@[simp] lemma forall_mem_iff {t : TileSet ps ιₜ} {f : PlacedTile ps → Prop } :
108- (∀ pt ∈ t, f pt) ↔ ∀ i, f (t i) := by
109- simp_rw [← mem_coeSet, coeSet_apply, Set.forall_mem_range]
96+ (∀ pt ∈ t, f pt) ↔ ∀ i, f (t i) :=
97+ Set.forall_mem_range
11098
11199lemma union_of_mem_eq_iUnion (t : TileSet ps ιₜ) : ⋃ pt ∈ t, (pt : Set X) = ⋃ i, (t i : Set X) := by
112100 ext x
@@ -193,53 +181,48 @@ lemma injective_reindex_of_embeddingLike {t : TileSet ps ιₜ} (f : F) (ht : In
193181 (f : E) : t₁.reindex f = t₂.reindex (f₁ ∘ f) ↔ t₁ = t₂.reindex f₁ :=
194182 reindex_eq_reindex_comp_iff_of_surjective (EquivLike.surjective f)
195183
196- lemma coeSet_reindex_eq_range_comp (t : TileSet ps ιₜ) (f : ιₜ' → ιₜ) :
197- (t.reindex f : Set (PlacedTile ps)) = Set.range (t ∘ f) :=
198- rfl
199-
200- lemma coeSet_reindex_subset (t : TileSet ps ιₜ) (f : ιₜ' → ιₜ) :
201- (t.reindex f : Set (PlacedTile ps)) ⊆ t := Set.range_comp_subset_range f t
184+ lemma range_reindex_subset (t : TileSet ps ιₜ) (f : ιₜ' → ιₜ) :
185+ Set.range (t.reindex f) ⊆ Set.range t := Set.range_comp_subset_range f t
202186
203187lemma mem_of_mem_reindex {t : TileSet ps ιₜ} {f : ιₜ' → ιₜ} {pt : PlacedTile ps}
204188 (h : pt ∈ t.reindex f) : pt ∈ t :=
205- Set.mem_of_mem_of_subset h <| t.coeSet_reindex_subset f
189+ Set.mem_of_mem_of_subset h <| t.range_reindex_subset f
206190
207191lemma mem_reindex_iff {t : TileSet ps ιₜ} {f : ιₜ' → ιₜ} {pt : PlacedTile ps} :
208192 pt ∈ (t.reindex f) ↔ ∃ i, t (f i) = pt :=
209193 Set.mem_range
210194
211- @[simp] lemma coeSet_reindex_of_surjective (t : TileSet ps ιₜ) {f : ιₜ' → ιₜ} (h : Surjective f) :
212- (t.reindex f : Set (PlacedTile ps)) = t :=
195+ lemma range_reindex_of_surjective (t : TileSet ps ιₜ) {f : ιₜ' → ιₜ} (h : Surjective f) :
196+ Set.range (t.reindex f) = Set.range t :=
213197 h.range_comp _
214198
215- @[simp] lemma coeSet_reindex_of_equivLike (t : TileSet ps ιₜ) (f : E) :
216- (t.reindex f : Set (PlacedTile ps)) = t :=
217- t.coeSet_reindex_of_surjective <| EquivLike.surjective f
199+ lemma range_reindex_of_equivLike (t : TileSet ps ιₜ) (f : E) :
200+ Set.range (t.reindex f) = Set.range t :=
201+ t.range_reindex_of_surjective <| EquivLike.surjective f
218202
219203@[simp] lemma mem_reindex_iff_of_surjective {t : TileSet ps ιₜ} {f : ιₜ' → ιₜ} {pt : PlacedTile ps}
220204 (h : Surjective f) : pt ∈ t.reindex f ↔ pt ∈ t :=
221- iff_of_eq <| congrArg (pt ∈ ·) <| t.coeSet_reindex_of_surjective h
205+ iff_of_eq <| congrArg (pt ∈ ·) <| t.range_reindex_of_surjective h
222206
223207@[simp] lemma mem_reindex_iff_of_equivLike {t : TileSet ps ιₜ} (f : E) {pt : PlacedTile ps} :
224208 pt ∈ t.reindex f ↔ pt ∈ t :=
225209 mem_reindex_iff_of_surjective <| EquivLike.surjective f
226210
227211/-- If two `TileSet`s have the same set of tiles and no duplicate tiles, this equivalence maps
228212one index type to the other. -/
229- noncomputable def equivOfCoeSetEqOfInjective {t₁ : TileSet ps ιₜ} {t₂ : TileSet ps ιₜ'}
230- (h : ( t₁ : Set (PlacedTile ps)) = t₂) (h₁ : Injective t₁) (h₂ : Injective t₂) : ιₜ' ≃ ιₜ :=
213+ noncomputable def equivOfRangeEqOfInjective {t₁ : TileSet ps ιₜ} {t₂ : TileSet ps ιₜ'}
214+ (h : Set.range t₁ = Set.range t₂) (h₁ : Injective t₁) (h₂ : Injective t₂) : ιₜ' ≃ ιₜ :=
231215 ((Equiv.ofInjective t₂ h₂).trans (Equiv.cast (congrArg _ h.symm))).trans
232216 (Equiv.ofInjective t₁ h₁).symm
233217
234- @[simp] lemma reindex_equivOfCoeSetEqOfInjective {t₁ : TileSet ps ιₜ} {t₂ : TileSet ps ιₜ'}
235- (h : ( t₁ : Set (PlacedTile ps)) = t₂) (h₁ : Injective t₁) (h₂ : Injective t₂) :
236- t₁.reindex (equivOfCoeSetEqOfInjective h h₁ h₂) = t₂ := by
218+ @[simp] lemma reindex_equivOfRangeEqOfInjective {t₁ : TileSet ps ιₜ} {t₂ : TileSet ps ιₜ'}
219+ (h : Set.range t₁ = Set.range t₂) (h₁ : Injective t₁) (h₂ : Injective t₂) :
220+ t₁.reindex (equivOfRangeEqOfInjective h h₁ h₂) = t₂ := by
237221 ext i : 2
238- simp only [equivOfCoeSetEqOfInjective , Equiv.coe_trans, reindex_apply, comp_apply,
222+ simp only [equivOfRangeEqOfInjective , Equiv.coe_trans, reindex_apply, comp_apply,
239223 Equiv.ofInjective_apply, Equiv.cast_apply]
240224 erw [Equiv.apply_ofInjective_symm h₁]
241225 rw [Subtype.coe_eq_iff]
242- simp_rw [coeSet_apply] at h
243226 refine ⟨h ▸ Set.mem_range_self _, ?_⟩
244227 rw [cast_eq_iff_heq, Subtype.heq_iff_coe_eq]
245228 simp [h]
@@ -272,21 +255,21 @@ lemma mem_inv_smul_apply_iff_smul_mem {g : G} {x : X} {t : TileSet ps ιₜ} {i
272255@[simp] lemma injective_smul_iff (g : G) {t : TileSet ps ιₜ} : Injective (g • t) ↔ Injective t :=
273256 Injective.of_comp_iff (MulAction.injective g) t
274257
275- @[simp] lemma coeSet_smul (g : G) (t : TileSet ps ιₜ) :
276- (g • t : TileSet ps ιₜ) = g • (t : Set (PlacedTile ps)) := by
277- simp [coeSet_apply, smul_coe, Set.range_comp]
258+ @[simp] lemma range_smul (g : G) (t : TileSet ps ιₜ) :
259+ Set.range (g • t : TileSet ps ιₜ) = g • Set.range t := by
260+ simp [smul_coe, Set.range_comp]
278261
279262@[simp] lemma smul_mem_smul_iff {pt : PlacedTile ps} (g : G) {t : TileSet ps ιₜ} :
280263 g • pt ∈ g • t ↔ pt ∈ t := by
281- rw [← mem_coeSet , ← mem_coeSet, coeSet_smul , Set.smul_mem_smul_set_iff]
264+ simp_rw [← exists_iff_mem , ← Set.mem_range, range_smul , Set.smul_mem_smul_set_iff]
282265
283266lemma mem_smul_iff_smul_inv_mem {pt : PlacedTile ps} {g : G} {t : TileSet ps ιₜ} :
284267 pt ∈ g • t ↔ g⁻¹ • pt ∈ t := by
285- simp_rw [← mem_coeSet, coeSet_smul , Set.mem_smul_set_iff_inv_smul_mem]
268+ simp_rw [← exists_iff_mem, ← Set.mem_range, range_smul , Set.mem_smul_set_iff_inv_smul_mem]
286269
287270lemma mem_inv_smul_iff_smul_mem {pt : PlacedTile ps} {g : G} {t : TileSet ps ιₜ} :
288271 pt ∈ g⁻¹ • t ↔ g • pt ∈ t := by
289- simp_rw [← mem_coeSet, coeSet_smul , Set.mem_inv_smul_set_iff]
272+ simp_rw [← exists_iff_mem, ← Set.mem_range, range_smul , Set.mem_inv_smul_set_iff]
290273
291274@[simp] lemma smul_inter_smul (g : G) (t : TileSet ps ιₜ) (s : Set X) (i : ιₜ) :
292275 g • s ∩ (g • t) i = g • (s ∩ t i) := by
@@ -353,7 +336,7 @@ lemma exists_smul_eq_of_mem_symmetryGroup' {t : TileSet ps ιₜ} {g : G} (i :
353336lemma smul_mem_of_mem_of_mem_symmetryGroup {t : TileSet ps ιₜ} {g : G} {pt : PlacedTile ps}
354337 (hg : g ∈ t.symmetryGroup) (hpt : pt ∈ t) : g • pt ∈ t := by
355338 rcases hpt with ⟨i, rfl⟩
356- simp_rw [TileSet.mem_def , eq_comm]
339+ simp_rw [← exists_iff_mem , eq_comm]
357340 exact exists_smul_eq_of_mem_symmetryGroup i hg
358341
359342/-- If `g` is in the symmetry group, every tile in `t` is the image under `g` of some tile in
@@ -408,20 +391,20 @@ lemma mem_symmetryGroup_smul_iff' {t : TileSet ps ιₜ} {g g' : G} :
408391 convert mem_symmetryGroup_smul_iff g
409392 simp [mul_assoc]
410393
411- lemma symmetryGroup_le_stabilizer_coeSet (t : TileSet ps ιₜ) :
412- t.symmetryGroup ≤ MulAction.stabilizer G (t : Set (PlacedTile ps) ) := by
394+ lemma symmetryGroup_le_stabilizer_range (t : TileSet ps ιₜ) :
395+ t.symmetryGroup ≤ MulAction.stabilizer G (Set.range t ) := by
413396 simp_rw [SetLike.le_def, mem_symmetryGroup_iff_exists, MulAction.mem_stabilizer_iff]
414397 rintro g ⟨f, hf⟩
415398 nth_rewrite 2 [← hf]
416399 simp
417400
418- lemma symmetryGroup_eq_stabilizer_coeSet_of_injective (t : TileSet ps ιₜ) (h : Injective t) :
419- t.symmetryGroup = MulAction.stabilizer G (t : Set (PlacedTile ps) ) := by
420- refine le_antisymm t.symmetryGroup_le_stabilizer_coeSet ?_
401+ lemma symmetryGroup_eq_stabilizer_range_of_injective (t : TileSet ps ιₜ) (h : Injective t) :
402+ t.symmetryGroup = MulAction.stabilizer G (Set.range t ) := by
403+ refine le_antisymm t.symmetryGroup_le_stabilizer_range ?_
421404 simp_rw [SetLike.le_def, mem_symmetryGroup_iff_exists, MulAction.mem_stabilizer_iff]
422405 intro g hg
423- rw [← coeSet_smul ] at hg
424- exact ⟨equivOfCoeSetEqOfInjective hg ((injective_smul_iff g).2 h) h, by simp⟩
406+ rw [← range_smul ] at hg
407+ exact ⟨equivOfRangeEqOfInjective hg ((injective_smul_iff g).2 h) h, by simp⟩
425408
426409/-- The disjoint union of two `TileSet`s, indexed by the sum of their index types. -/
427410protected def sum (t : TileSet ps ιₜ) (t' : TileSet ps ιₜ') : TileSet ps (ιₜ ⊕ ιₜ') where
@@ -430,13 +413,13 @@ protected def sum (t : TileSet ps ιₜ) (t' : TileSet ps ιₜ') : TileSet ps (
430413@[simp] lemma coe_sum (t : TileSet ps ιₜ) (t' : TileSet ps ιₜ') : t.sum t' = Sum.elim (↑t) (↑t') :=
431414 rfl
432415
433- @[simp] lemma coeSet_sum (t : TileSet ps ιₜ) (t' : TileSet ps ιₜ') :
434- (t.sum t' : Set (PlacedTile ps)) = (↑t) ∪ (↑t') :=
416+ lemma range_sum (t : TileSet ps ιₜ) (t' : TileSet ps ιₜ') :
417+ Set.range (t.sum t') = Set.range t ∪ Set.range t' :=
435418 Set.Sum.elim_range _ _
436419
437420@[simp] lemma mem_sum {pt : PlacedTile ps} {t : TileSet ps ιₜ} {t' : TileSet ps ιₜ'} :
438421 pt ∈ t.sum t' ↔ pt ∈ t ∨ pt ∈ t' := by
439- simp [← mem_coeSet ]
422+ simp [← exists_iff_mem ]
440423
441424lemma reindex_sum (t : TileSet ps ιₜ) (t' : TileSet ps ιₜ'') (f : ιₜ' → ιₜ) (f' : ιₜ''' → ιₜ'') :
442425 (t.sum t').reindex (Sum.map f f') = (t.reindex f).sum (t'.reindex f') :=
@@ -450,17 +433,18 @@ lemma smul_sum (g : G) (t : TileSet ps ιₜ) (t' : TileSet ps ιₜ') :
450433protected def sigma (t : (i : ι) → TileSet ps (ιₜι i)) : TileSet ps (Σ i, ιₜι i) where
451434 tiles := Sigma.uncurry (fun i ↦ ↑(t i))
452435
453- @[simp] lemma coe_sigma (t : (i : ι) → TileSet ps (ιₜι i)) :
436+ lemma coe_sigma (t : (i : ι) → TileSet ps (ιₜι i)) :
454437 TileSet.sigma t = Sigma.uncurry (fun i ↦ ↑(t i)) :=
455438 rfl
456439
457- @[simp] lemma coeSet_sigma (t : (i : ι) → TileSet ps (ιₜι i)) :
458- (TileSet.sigma t : Set (PlacedTile ps)) = ⋃ i, (t i : Set (PlacedTile ps) ) :=
440+ @[simp] lemma range_sigma (t : (i : ι) → TileSet ps (ιₜι i)) :
441+ Set.range (TileSet.sigma t) = ⋃ i, Set.range (t i ) :=
459442 Set.range_sigma_eq_iUnion_range _
460443
461444lemma mem_sigma {pt : PlacedTile ps} {t : (i : ι) → TileSet ps (ιₜι i)} :
462445 pt ∈ TileSet.sigma t ↔ ∃ i, pt ∈ t i := by
463- simp [← mem_coeSet]
446+ simp_rw [← exists_iff_mem, ← Set.mem_range, range_sigma]
447+ simp
464448
465449lemma reindex_sigma (t : (i : ι) → TileSet ps (ιₜι i)) (f : (i : ι) → (ιₜ'ι i) → (ιₜι i)) :
466450 (TileSet.sigma t).reindex (Sigma.map id f) = TileSet.sigma fun i ↦ (t i).reindex (f i) :=
0 commit comments