Skip to content

Commit e4c2850

Browse files
committed
Merge branch 'master' into tb_art
2 parents baf40be + 0956725 commit e4c2850

170 files changed

Lines changed: 2170 additions & 678 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Mathlib.lean

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1425,10 +1425,13 @@ public import Mathlib.AlgebraicGeometry.Properties
14251425
public import Mathlib.AlgebraicGeometry.PullbackCarrier
14261426
public import Mathlib.AlgebraicGeometry.Pullbacks
14271427
public import Mathlib.AlgebraicGeometry.QuasiAffine
1428+
public import Mathlib.AlgebraicGeometry.RationalMap
14281429
public import Mathlib.AlgebraicGeometry.RelativeGluing
14291430
public import Mathlib.AlgebraicGeometry.ResidueField
14301431
public import Mathlib.AlgebraicGeometry.Restrict
14311432
public import Mathlib.AlgebraicGeometry.Scheme
1433+
public import Mathlib.AlgebraicGeometry.Sites.Affine
1434+
public import Mathlib.AlgebraicGeometry.Sites.AffineEtale
14321435
public import Mathlib.AlgebraicGeometry.Sites.BigZariski
14331436
public import Mathlib.AlgebraicGeometry.Sites.ConstantSheaf
14341437
public import Mathlib.AlgebraicGeometry.Sites.ElladicCohomology
@@ -1756,6 +1759,7 @@ public import Mathlib.Analysis.Calculus.FDeriv.Linear
17561759
public import Mathlib.Analysis.Calculus.FDeriv.Measurable
17571760
public import Mathlib.Analysis.Calculus.FDeriv.Mul
17581761
public import Mathlib.Analysis.Calculus.FDeriv.Norm
1762+
public import Mathlib.Analysis.Calculus.FDeriv.OfCompLeft
17591763
public import Mathlib.Analysis.Calculus.FDeriv.Partial
17601764
public import Mathlib.Analysis.Calculus.FDeriv.Pi
17611765
public import Mathlib.Analysis.Calculus.FDeriv.Pow
@@ -8035,6 +8039,7 @@ public import Mathlib.Topology.VectorBundle.ContinuousAlternatingMap
80358039
public import Mathlib.Topology.VectorBundle.FiniteDimensional
80368040
public import Mathlib.Topology.VectorBundle.Hom
80378041
public import Mathlib.Topology.VectorBundle.Riemannian
8042+
public import Mathlib.Topology.WithTopology
80388043
public import Mathlib.Util.AddRelatedDecl
80398044
public import Mathlib.Util.AliasIn
80408045
public import Mathlib.Util.AssertNoSorry

Mathlib/Algebra/Algebra/Bilinear.lean

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,12 @@ theorem mul_apply' (a b : A) : mul R A a b = a * b :=
5353
theorem mul'_apply {a b : A} : mul' R A (a ⊗ₜ b) = a * b :=
5454
rfl
5555

56+
lemma restrictScalars_mul {S : Type*} [CommSemiring S] [Module S A] [SMulCommClass S A A]
57+
[IsScalarTower S A A] [CompatibleSMul A A R S] (a : A) :
58+
LinearMap.restrictScalars R (LinearMap.mul S A a) = LinearMap.mul R A a := by
59+
ext x
60+
simp
61+
5662
variable {M : Type*} [AddCommMonoid M] [Module R M]
5763

5864
theorem lift_lsmul_mul_eq_lsmul_lift_lsmul {r : R} :

Mathlib/Algebra/Category/ContinuousCohomology/Basic.lean

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,7 @@ abbrev Iobj (rep : Action (TopModuleCat R) G) : Action (TopModuleCat R) G where
6262
{ toFun g := TopModuleCat.ofHom
6363
{ toFun f := .comp (rep.ρ g).hom (f.comp (Homeomorph.mulLeft g⁻¹))
6464
map_add' _ _ := by ext; simp
65-
map_smul' _ _ := by ext; simp
66-
cont := (continuous_postcomp _).comp (continuous_precomp _) }
65+
map_smul' _ _ := by ext; simp }
6766
map_one' := ConcreteCategory.ext (by ext; simp)
6867
map_mul' _ _ := ConcreteCategory.ext (by ext; simp [mul_assoc]) }
6968

Mathlib/Algebra/Group/Action/Defs.lean

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -471,6 +471,11 @@ instance (priority := 1100) Monoid.toMulAction : MulAction M M where
471471
instance IsScalarTower.left : IsScalarTower M M α where
472472
smul_assoc x y z := mul_smul x y z
473473

474+
@[to_additive]
475+
instance {R M : Type*} [CommMonoid M] [SMul R M] [IsScalarTower R M M] : SMulCommClass R M M where
476+
smul_comm r s x := by
477+
rw [← one_smul M (s • x), ← smul_assoc, smul_comm, smul_assoc, one_smul]
478+
474479
variable {M}
475480

476481
section Monoid

Mathlib/Algebra/Group/Subgroup/ZPowers/Lemmas.lean

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ public import Mathlib.Algebra.Group.Subgroup.Ker
99
public import Mathlib.Algebra.Group.Subgroup.ZPowers.Basic
1010
public import Mathlib.Data.Countable.Basic
1111
public import Mathlib.Data.Int.Cast.Lemmas
12+
public import Mathlib.Data.Int.GCD
1213

1314
/-!
1415
# Subgroups generated by an element
@@ -69,4 +70,9 @@ lemma range_nsmulAddMonoidHom (n : ℕ) : (nsmulAddMonoidHom n).range = zmultipl
6970
simp [mem_zmultiples_iff, dvd_def]
7071
grind
7172

73+
theorem closure_eq_zmultiples (a b : ℤ) : closure {a, b} = zmultiples (a.gcd b : ℤ) := by
74+
apply le_antisymm
75+
· grind [closure_le, mem_zmultiples_iff, SetLike.mem_coe, gcd_dvd_left, gcd_dvd_right]
76+
· simp [zmultiples_le, mem_closure_pair, gcd_eq_gcd_ab, mul_comm]
77+
7278
end Int

Mathlib/Algebra/Group/Submonoid/Operations.lean

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -867,6 +867,11 @@ theorem submonoidMap_surjective (f : M →* N) (M' : Submonoid M) :
867867
rintro ⟨_, x, hx, rfl⟩
868868
exact ⟨⟨x, hx⟩, rfl⟩
869869

870+
@[to_additive (attr := grind inj)]
871+
theorem submonoidMap_injective {f : M →* N} (hf : Injective f) (M' : Submonoid M) :
872+
Injective (f.submonoidMap M') := by
873+
grind [Injective, submonoidMap_apply_coe]
874+
870875
end MonoidHom
871876

872877
namespace Submonoid

Mathlib/Algebra/Homology/ExactSequence.lean

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -319,6 +319,11 @@ lemma exact_of_δlast {n : ℕ} (S : ComposableArrows C (n + 2))
319319
rw [exact_iff_δlast]
320320
constructor <;> assumption
321321

322+
theorem natAddLEFunctor_obj_exact {n k l : ℕ} (h : k + l ≤ n) {R : ComposableArrows C n}
323+
(hR : R.Exact) :
324+
((natAddLEFunctor h).obj R).Exact :=
325+
⟨⟨fun i _ => hR.1.1 (k + i)⟩, fun i _ => hR.exact (k + i)⟩
326+
322327
lemma Exact.isIso_map' {C : Type*} [Category* C] [Preadditive C]
323328
[Balanced C] {n : ℕ} {S : ComposableArrows C n} (hS : S.Exact) (k : ℕ) (hk : k + 3 ≤ n)
324329
(h₀ : S.map' k (k + 1) = 0) (h₁ : S.map' (k + 2) (k + 3) = 0) :

Mathlib/Algebra/Lie/InvariantForm.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ theorem isSemisimple_of_nondegenerate : IsSemisimple K L := by
202202
intro J hJ hJI
203203
rw [← lie_eq_self_of_isAtom_of_nonabelian J hJ (hL J hJ), lieIdeal_oper_eq_span, lieSpan_le]
204204
rintro _ ⟨x, y, rfl⟩
205-
simp only [orthogonal_carrier, Φ.isOrtho_def, Set.mem_setOf_eq]
205+
simp only [orthogonal_carrier, LinearMap.IsOrtho, Set.mem_setOf_eq]
206206
intro z hz
207207
rw [← neg_eq_zero, ← hΦ_inv]
208208
suffices ⁅(x : L), z⁆ = 0 by simp only [this, map_zero, LinearMap.zero_apply]

Mathlib/Algebra/Module/Submodule/Ker.lean

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,8 @@ variable {f : M →ₛₗ[τ₁₂] M₂}
171171

172172
open Submodule
173173

174+
@[simp] theorem ker_neg (f : M →ₛₗ[τ₁₂] M₂) : (-f).ker = f.ker := by ext; simp
175+
174176
theorem ker_toAddSubgroup (f : M →ₛₗ[τ₁₂] M₂) : (ker f).toAddSubgroup = f.toAddMonoidHom.ker :=
175177
rfl
176178

Mathlib/Algebra/Module/Submodule/Map.lean

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -649,7 +649,10 @@ theorem submoduleComap_surjective_of_surjective (f : M →ₗ[R] M₁) (q : Subm
649649
/-- A linear map between two modules restricts to a linear map from any submodule p of the
650650
domain onto the image of that submodule.
651651
652-
This is the linear version of `AddMonoidHom.addSubmonoidMap` and `AddMonoidHom.addSubgroupMap`. -/
652+
This is the linear version of `AddMonoidHom.addSubmonoidMap` and `AddMonoidHom.addSubgroupMap`.
653+
654+
TODO: Consider making this an `abbrev`, dropping its API, and renaming to something like
655+
`restrictSubmodule`. -/
653656
def submoduleMap (f : M →ₗ[R] M₁) (p : Submodule R M) : p →ₗ[R] p.map f :=
654657
f.restrict fun x hx ↦ Submodule.mem_map.mpr ⟨x, hx, rfl⟩
655658

@@ -660,6 +663,11 @@ theorem submoduleMap_coe_apply (f : M →ₗ[R] M₁) {p : Submodule R M} (x : p
660663
theorem submoduleMap_surjective (f : M →ₗ[R] M₁) (p : Submodule R M) :
661664
Function.Surjective (f.submoduleMap p) := f.toAddMonoidHom.addSubmonoidMap_surjective _
662665

666+
@[grind inj]
667+
theorem submoduleMap_injective {f : M →ₗ[R] M₁} (hf : Injective f) (p : Submodule R M) :
668+
Injective (f.submoduleMap p) :=
669+
f.toAddMonoidHom.addSubmonoidMap_injective hf _
670+
663671
variable [Semiring R₂] [AddCommMonoid M₂] [Module R₂ M₂] {σ₂₁ : R₂ →+* R}
664672

665673
open Submodule

0 commit comments

Comments
 (0)