Skip to content

Commit f87a135

Browse files
committed
chore(Algebra): Improve attribute generation (#20451)
* Teach `to_additive` about `oneLE` -> `nonneg` and `square` -> `even` * Make `simps` lemma generated for the `carrier` projection consistently `coe_*` * Clarify some documentation Moves: * `\*_coe` -> `coe_\*` where generated by `@[simps]` * `IsOpenMap.functor_obj_coe` -> `IsOpenMap.coe_functor_obj` * `AlgebraicGeometry.Scheme.Hom.opensRange_coe` -> `AlgebraicGeometry.Scheme.Hom.coe_opensRange`
1 parent 166dc0d commit f87a135

File tree

19 files changed

+40
-37
lines changed

19 files changed

+40
-37
lines changed

Mathlib/Algebra/Group/Subsemigroup/Defs.lean

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -97,8 +97,8 @@ instance : SetLike (Subsemigroup M) M :=
9797
@[to_additive]
9898
instance : MulMemClass (Subsemigroup M) M where mul_mem := fun {_ _ _} => Subsemigroup.mul_mem' _
9999

100-
initialize_simps_projections Subsemigroup (carrier → coe)
101-
initialize_simps_projections AddSubsemigroup (carrier → coe)
100+
initialize_simps_projections Subsemigroup (carrier → coe, as_prefix coe)
101+
initialize_simps_projections AddSubsemigroup (carrier → coe, as_prefix coe)
102102

103103
@[to_additive (attr := simp)]
104104
theorem mem_carrier {s : Subsemigroup M} {x : M} : x ∈ s.carrier ↔ x ∈ s :=

Mathlib/Algebra/Order/Group/Cone.lean

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,9 @@ instance GroupCone.instGroupConeClass (G : Type*) [CommGroup G] :
5858
one_mem {C} := C.one_mem'
5959
eq_one_of_mem_of_inv_mem {C} := C.eq_one_of_mem_of_inv_mem'
6060

61+
initialize_simps_projections GroupCone (carrier → coe, as_prefix coe)
62+
initialize_simps_projections AddGroupCone (carrier → coe, as_prefix coe)
63+
6164
/-- Typeclass for maximal additive cones. -/
6265
class IsMaxCone {S G : Type*} [AddCommGroup G] [SetLike S G] (C : S) : Prop where
6366
mem_or_neg_mem (a : G) : a ∈ C ∨ -a ∈ C
@@ -74,19 +77,17 @@ namespace GroupCone
7477
variable {H : Type*} [OrderedCommGroup H] {a : H}
7578

7679
variable (H) in
77-
/-- Construct a cone from the set of elements of
78-
a partially ordered abelian group that are at least 1. -/
79-
@[to_additive nonneg
80-
"Construct a cone from the set of non-negative elements of a partially ordered abelian group."]
80+
/-- The cone of elements that are at least 1. -/
81+
@[to_additive "The cone of non-negative elements."]
8182
def oneLE : GroupCone H where
8283
__ := Submonoid.oneLE H
8384
eq_one_of_mem_of_inv_mem' {a} := by simpa using ge_antisymm
8485

85-
@[to_additive (attr := simp) nonneg_toAddSubmonoid]
86+
@[to_additive (attr := simp)]
8687
lemma oneLE_toSubmonoid : (oneLE H).toSubmonoid = .oneLE H := rfl
87-
@[to_additive (attr := simp) mem_nonneg]
88+
@[to_additive (attr := simp)]
8889
lemma mem_oneLE : a ∈ oneLE H ↔ 1 ≤ a := Iff.rfl
89-
@[to_additive (attr := simp, norm_cast) coe_nonneg]
90+
@[to_additive (attr := simp, norm_cast)]
9091
lemma coe_oneLE : oneLE H = {x : H | 1 ≤ x} := rfl
9192

9293
@[to_additive nonneg.isMaxCone]

Mathlib/Algebra/Order/Monoid/Submonoid.lean

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -91,16 +91,16 @@ section Preorder
9191
variable (M)
9292
variable [Monoid M] [Preorder M] [MulLeftMono M] {a : M}
9393

94-
/-- The submonoid of elements greater than `1`. -/
95-
@[to_additive (attr := simps) nonneg "The submonoid of nonnegative elements."]
94+
/-- The submonoid of elements that are at least `1`. -/
95+
@[to_additive (attr := simps) "The submonoid of nonnegative elements."]
9696
def oneLE : Submonoid M where
9797
carrier := Set.Ici 1
9898
mul_mem' := one_le_mul
9999
one_mem' := le_rfl
100100

101101
variable {M}
102102

103-
@[to_additive (attr := simp) mem_nonneg] lemma mem_oneLE : a ∈ oneLE M ↔ 1 ≤ a := Iff.rfl
103+
@[to_additive (attr := simp)] lemma mem_oneLE : a ∈ oneLE M ↔ 1 ≤ a := Iff.rfl
104104

105105
end Preorder
106106
end Submonoid

Mathlib/AlgebraicGeometry/Cover/Open.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ lemma OpenCover.ext_elem {X : Scheme.{u}} {U : X.Opens} (f g : Γ(X, U)) (𝒰 :
210210
fapply TopCat.Sheaf.eq_of_locally_eq' X.sheaf
211211
(fun i ↦ (𝒰.map (𝒰.f i)).opensRange ⊓ U) _ (fun _ ↦ homOfLE inf_le_right)
212212
· intro x hx
213-
simp only [Opens.iSup_mk, Opens.carrier_eq_coe, Opens.coe_inf, Hom.opensRange_coe, Opens.coe_mk,
213+
simp only [Opens.iSup_mk, Opens.carrier_eq_coe, Opens.coe_inf, Hom.coe_opensRange, Opens.coe_mk,
214214
Set.mem_iUnion, Set.mem_inter_iff, Set.mem_range, SetLike.mem_coe, exists_and_right]
215215
refine ⟨?_, hx⟩
216216
simpa using ⟨_, 𝒰.covers x⟩

Mathlib/AlgebraicGeometry/Morphisms/Separated.lean

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ lemma Scheme.Pullback.diagonalCoverDiagonalRange_eq_top_of_injective
126126
rw [← top_le_iff]
127127
rintro x -
128128
simp only [diagonalCoverDiagonalRange, openCoverOfBase_J, openCoverOfBase_obj,
129-
openCoverOfLeftRight_J, Opens.iSup_mk, Opens.carrier_eq_coe, Hom.opensRange_coe, Opens.coe_mk,
129+
openCoverOfLeftRight_J, Opens.iSup_mk, Opens.carrier_eq_coe, Hom.coe_opensRange, Opens.coe_mk,
130130
Set.mem_iUnion, Set.mem_range, Sigma.exists]
131131
have H : (pullback.fst f f).base x = (pullback.snd f f).base x :=
132132
hf (by rw [← Scheme.comp_base_apply, ← Scheme.comp_base_apply, pullback.condition])
@@ -147,7 +147,7 @@ lemma Scheme.Pullback.range_diagonal_subset_diagonalCoverDiagonalRange :
147147
Set.range (pullback.diagonal f).base ⊆ diagonalCoverDiagonalRange f 𝒰 𝒱 := by
148148
rintro _ ⟨x, rfl⟩
149149
simp only [diagonalCoverDiagonalRange, openCoverOfBase_J, openCoverOfBase_obj,
150-
openCoverOfLeftRight_J, Opens.iSup_mk, Opens.carrier_eq_coe, Hom.opensRange_coe, Opens.coe_mk,
150+
openCoverOfLeftRight_J, Opens.iSup_mk, Opens.carrier_eq_coe, Hom.coe_opensRange, Opens.coe_mk,
151151
Set.mem_iUnion, Set.mem_range, Sigma.exists]
152152
let i := 𝒰.f (f.base x)
153153
obtain ⟨y : 𝒰.obj i, hy : (𝒰.map i).base y = f.base x⟩ := 𝒰.covers (f.base x)

Mathlib/AlgebraicGeometry/Noetherian.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ lemma isLocallyNoetherian_of_isOpenImmersion {Y : Scheme} (f : X ⟶ Y) [IsOpenI
158158
· suffices Scheme.Hom.opensRange f ⊓ V = V by
159159
rw [this]
160160
rw [← Opens.coe_inj]
161-
rw [Opens.coe_inf, Scheme.Hom.opensRange_coe, IsOpenMap.functor_obj_coe,
161+
rw [Opens.coe_inf, Scheme.Hom.coe_opensRange, IsOpenMap.coe_functor_obj,
162162
Set.inter_eq_right, Set.image_subset_iff, Set.preimage_range]
163163
exact Set.subset_univ _
164164

Mathlib/AlgebraicGeometry/OpenImmersion.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -543,7 +543,7 @@ theorem range_pullback_to_base_of_left :
543543
Set.range f.base ∩ Set.range g.base := by
544544
rw [pullback.condition, Scheme.comp_base, TopCat.coe_comp, Set.range_comp,
545545
range_pullback_snd_of_left, Opens.carrier_eq_coe, Opens.map_obj, Opens.coe_mk,
546-
Set.image_preimage_eq_inter_range, Opens.carrier_eq_coe, Scheme.Hom.opensRange_coe]
546+
Set.image_preimage_eq_inter_range, Opens.carrier_eq_coe, Scheme.Hom.coe_opensRange]
547547

548548
theorem range_pullback_to_base_of_right :
549549
Set.range (pullback.fst g f ≫ g).base =

Mathlib/AlgebraicGeometry/RationalMap.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,7 @@ lemma equiv_of_fromSpecStalkOfMem_eq [IrreducibleSpace X]
247247
((Set.image_subset_range _ _).trans_eq (Subtype.range_val)).trans inf_le_left,
248248
((Set.image_subset_range _ _).trans_eq (Subtype.range_val)).trans inf_le_right, ?_⟩
249249
rw [← cancel_epi (Scheme.Hom.isoImage _ _).hom]
250-
simp only [TopologicalSpace.Opens.carrier_eq_coe, IsOpenMap.functor_obj_coe,
250+
simp only [TopologicalSpace.Opens.carrier_eq_coe, IsOpenMap.coe_functor_obj,
251251
TopologicalSpace.Opens.coe_inf, restrict_hom, ← Category.assoc] at e ⊢
252252
convert e using 2 <;> rw [← cancel_mono (Scheme.Opens.ι _)] <;> simp
253253
· rw [← f.fromSpecStalkOfMem_restrict hdense inf_le_left ⟨hxf, hxg⟩,

Mathlib/AlgebraicGeometry/Restrict.lean

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,7 @@ theorem Scheme.homOfLE_apply {U V : X.Opens} (e : U ≤ V) (x : U) :
233233

234234
theorem Scheme.ι_image_homOfLE_le_ι_image {U V : X.Opens} (e : U ≤ V) (W : Opens V) :
235235
U.ι ''ᵁ (X.homOfLE e ⁻¹ᵁ W) ≤ V.ι ''ᵁ W := by
236-
simp only [← SetLike.coe_subset_coe, IsOpenMap.functor_obj_coe, Set.image_subset_iff,
236+
simp only [← SetLike.coe_subset_coe, IsOpenMap.coe_functor_obj, Set.image_subset_iff,
237237
Scheme.homOfLE_base, Opens.map_coe, Opens.inclusion'_apply]
238238
rintro _ h
239239
exact ⟨_, h, rfl⟩
@@ -595,7 +595,7 @@ def morphismRestrictRestrict {X Y : Scheme.{u}} (f : X ⟶ Y) (U : Y.Opens) (V :
595595
refine Arrow.isoMk' _ _ ((Scheme.Opens.ι _).isoImage _ ≪≫ Scheme.isoOfEq _ ?_)
596596
((Scheme.Opens.ι _).isoImage _) ?_
597597
· ext x
598-
simp only [IsOpenMap.functor_obj_coe, Opens.coe_inclusion',
598+
simp only [IsOpenMap.coe_functor_obj, Opens.coe_inclusion',
599599
Opens.map_coe, Set.mem_image, Set.mem_preimage, SetLike.mem_coe, morphismRestrict_base]
600600
constructor
601601
· rintro ⟨⟨a, h₁⟩, h₂, rfl⟩

Mathlib/Geometry/RingedSpace/OpenImmersion.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ instance comp {Z : PresheafedSpace C} (g : Y ⟶ Z) [hg : IsOpenImmersion g] :
156156
· exact c_iso' g ((opensFunctor f).obj U) (by ext; simp)
157157
· apply c_iso' f U
158158
ext1
159-
dsimp only [Opens.map_coe, IsOpenMap.functor_obj_coe, comp_base, TopCat.coe_comp]
159+
dsimp only [Opens.map_coe, IsOpenMap.coe_functor_obj, comp_base, TopCat.coe_comp]
160160
rw [Set.image_comp, Set.preimage_image_eq _ hg.base_open.injective]
161161

162162
/-- For an open immersion `f : X ⟶ Y` and an open set `U ⊆ X`, we have the map `X(U) ⟶ Y(U)`. -/

0 commit comments

Comments
 (0)