Skip to content

Commit 892d908

Browse files
Merge branch 'master' into mitchell-horner/kovari-sos-turan
2 parents 9b39d86 + a29591a commit 892d908

233 files changed

Lines changed: 3766 additions & 3689 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.

Archive/Hairer.lean

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,8 @@ Junyan Xu
66
-/
77
import Mathlib.Algebra.MvPolynomial.Funext
88
import Mathlib.Analysis.Analytic.Polynomial
9-
import Mathlib.Analysis.Analytic.Uniqueness
109
import Mathlib.Analysis.Distribution.AEEqOfIntegralContDiff
11-
import Mathlib.LinearAlgebra.Dual.Lemmas
10+
import Mathlib.RingTheory.Algebraic.Integral
1211
import Mathlib.RingTheory.MvPolynomial.Basic
1312
import Mathlib.Topology.Algebra.MvPolynomial
1413

Archive/Imo/Imo2019Q4.lean

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,7 @@ individually.
2626
-/
2727

2828

29-
open scoped Nat
30-
31-
open Nat hiding zero_le Prime
32-
33-
open Finset
29+
open Nat Finset
3430

3531
namespace Imo2019Q4
3632

@@ -48,17 +44,17 @@ theorem upper_bound {k n : ℕ} (hk : k > 0)
4844
emultiplicity_pow_self_of_prime Int.prime_two, Nat.cast_lt, ← mem_range]
4945
rw [← not_le]; intro hn
5046
apply _root_.ne_of_gt _ h
51-
calc ∏ i ∈ range n, ((2 : ℤ) ^ n - (2 : ℤ) ^ i) ≤ ∏ __ ∈ range n, (2 : ℤ) ^ n := ?_
47+
calc ∏ i ∈ range n, ((2 : ℤ) ^ n - (2 : ℤ) ^ i) ≤ ∏ _ ∈ range n, (2 : ℤ) ^ n := ?_
5248
_ < k ! := ?_
5349
· gcongr
5450
· intro i hi
55-
simp only [mem_range] at hi
51+
rw [mem_range] at hi
5652
have : (2 : ℤ) ^ i ≤ (2 : ℤ) ^ n := by gcongr; norm_num
5753
linarith
5854
· apply sub_le_self
5955
positivity
6056
norm_cast
61-
calc__ ∈ range n, 2 ^ n = 2 ^ (n * n) := by rw [prod_const, card_range, ← pow_mul]
57+
calc_ ∈ range n, 2 ^ n = 2 ^ (n * n) := by rw [prod_const, card_range, ← pow_mul]
6258
_ < (∑ i ∈ range n, i)! := ?_
6359
_ ≤ k ! := by gcongr
6460
clear h h2
@@ -80,13 +76,12 @@ theorem upper_bound {k n : ℕ} (hk : k > 0)
8076

8177
end Imo2019Q4
8278

83-
set_option linter.flexible false in
8479
theorem imo2019_q4 {k n : ℕ} (hk : 0 < k) (hn : 0 < n) :
8580
(k ! : ℤ) = ∏ i ∈ range n, ((2 : ℤ) ^ n - (2 : ℤ) ^ i) ↔ (k, n) = (1, 1) ∨ (k, n) = (3, 2) := by
8681
-- The implication `←` holds.
8782
constructor
8883
swap
89-
· rintro (h | h) <;> simp [Prod.ext_iff] at h <;> rcases h with ⟨rfl, rfl⟩ <;> decide
84+
· rintro (h | h) <;> rcases Prod.ext_iff.mp h with ⟨rfl, rfl⟩ <;> decide
9085
intro h
9186
-- We know that n < 6.
9287
have := Imo2019Q4.upper_bound hk h

Archive/Sensitivity.lean

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -54,13 +54,9 @@ Notations:
5454

5555

5656
/-- The hypercube in dimension `n`. -/
57-
def Q (n : ℕ) :=
57+
abbrev Q (n : ℕ) :=
5858
Fin n → Bool
5959

60-
instance (n) : Inhabited (Q n) := inferInstanceAs (Inhabited (Fin n → Bool))
61-
62-
instance (n) : Fintype (Q n) := inferInstanceAs (Fintype (Fin n → Bool))
63-
6460
/-- The projection from `Q n.succ` to `Q n` forgetting the first value
6561
(i.e. the image of zero). -/
6662
def π {n : ℕ} : Q n.succ → Q n := fun p => p ∘ Fin.succ
@@ -79,7 +75,7 @@ instance : Unique (Q 0) :=
7975
⟨⟨fun _ => true⟩, by intro; ext x; fin_cases x⟩
8076

8177
/-- `Q n` has 2^n elements. -/
82-
theorem card : card (Q n) = 2 ^ n := by simp [Q]
78+
theorem card : card (Q n) = 2 ^ n := by simp
8379

8480
/-! Until the end of this namespace, `n` will be an implicit argument (still
8581
a natural number). -/
@@ -209,7 +205,7 @@ theorem duality (p q : Q n) : ε p (e q) = if p = q then 1 else 0 := by
209205
all_goals
210206
simp only [Bool.cond_true, Bool.cond_false, LinearMap.fst_apply, LinearMap.snd_apply,
211207
LinearMap.comp_apply, IH]
212-
congr 1; rw [Q.succ_n_eq]; simp [hp, hq]
208+
congr 1; simp [Q.succ_n_eq, hp, hq]
213209

214210
/-- Any vector in `V n` annihilated by all `ε p`'s is zero. -/
215211
theorem epsilon_total {v : V n} (h : ∀ p : Q n, (ε p) v = 0) : v = 0 := by

Mathlib.lean

Lines changed: 6 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -718,6 +718,7 @@ public import Mathlib.Algebra.Lie.Nilpotent
718718
public import Mathlib.Algebra.Lie.NonUnitalNonAssocAlgebra
719719
public import Mathlib.Algebra.Lie.Normalizer
720720
public import Mathlib.Algebra.Lie.OfAssociative
721+
public import Mathlib.Algebra.Lie.Prod
721722
public import Mathlib.Algebra.Lie.Quotient
722723
public import Mathlib.Algebra.Lie.Rank
723724
public import Mathlib.Algebra.Lie.SemiDirect
@@ -2155,40 +2156,22 @@ public import Mathlib.Analysis.Normed.Unbundled.SpectralNorm
21552156
public import Mathlib.Analysis.NormedSpace.Alternating.Basic
21562157
public import Mathlib.Analysis.NormedSpace.Alternating.Curry
21572158
public import Mathlib.Analysis.NormedSpace.Alternating.Uncurry.Fin
2158-
public import Mathlib.Analysis.NormedSpace.BallAction
21592159
public import Mathlib.Analysis.NormedSpace.ConformalLinearMap
21602160
public import Mathlib.Analysis.NormedSpace.Connected
2161-
public import Mathlib.Analysis.NormedSpace.DualNumber
21622161
public import Mathlib.Analysis.NormedSpace.ENormedSpace
21632162
public import Mathlib.Analysis.NormedSpace.Extend
21642163
public import Mathlib.Analysis.NormedSpace.Extr
2165-
public import Mathlib.Analysis.NormedSpace.FunctionSeries
21662164
public import Mathlib.Analysis.NormedSpace.HahnBanach.Extension
21672165
public import Mathlib.Analysis.NormedSpace.HahnBanach.SeparatingDual
21682166
public import Mathlib.Analysis.NormedSpace.HahnBanach.Separation
2169-
public import Mathlib.Analysis.NormedSpace.HomeomorphBall
2170-
public import Mathlib.Analysis.NormedSpace.IndicatorFunction
2171-
public import Mathlib.Analysis.NormedSpace.Int
21722167
public import Mathlib.Analysis.NormedSpace.MStructure
21732168
public import Mathlib.Analysis.NormedSpace.Multilinear.Basic
21742169
public import Mathlib.Analysis.NormedSpace.Multilinear.Curry
21752170
public import Mathlib.Analysis.NormedSpace.MultipliableUniformlyOn
21762171
public import Mathlib.Analysis.NormedSpace.Normalize
2177-
public import Mathlib.Analysis.NormedSpace.OperatorNorm.Asymptotics
2178-
public import Mathlib.Analysis.NormedSpace.OperatorNorm.Basic
2179-
public import Mathlib.Analysis.NormedSpace.OperatorNorm.Bilinear
2180-
public import Mathlib.Analysis.NormedSpace.OperatorNorm.Completeness
2181-
public import Mathlib.Analysis.NormedSpace.OperatorNorm.Mul
2182-
public import Mathlib.Analysis.NormedSpace.OperatorNorm.NNNorm
2183-
public import Mathlib.Analysis.NormedSpace.OperatorNorm.NormedSpace
2184-
public import Mathlib.Analysis.NormedSpace.OperatorNorm.Prod
21852172
public import Mathlib.Analysis.NormedSpace.PiTensorProduct.InjectiveSeminorm
21862173
public import Mathlib.Analysis.NormedSpace.PiTensorProduct.ProjectiveSeminorm
2187-
public import Mathlib.Analysis.NormedSpace.Pointwise
2188-
public import Mathlib.Analysis.NormedSpace.RCLike
2189-
public import Mathlib.Analysis.NormedSpace.Real
21902174
public import Mathlib.Analysis.NormedSpace.RieszLemma
2191-
public import Mathlib.Analysis.NormedSpace.SphereNormEquiv
21922175
public import Mathlib.Analysis.ODE.Basic
21932176
public import Mathlib.Analysis.ODE.Gronwall
21942177
public import Mathlib.Analysis.ODE.PicardLindelof
@@ -2202,6 +2185,7 @@ public import Mathlib.Analysis.Polynomial.Factorization
22022185
public import Mathlib.Analysis.Polynomial.Fourier
22032186
public import Mathlib.Analysis.Polynomial.MahlerMeasure
22042187
public import Mathlib.Analysis.Polynomial.Norm
2188+
public import Mathlib.Analysis.Polynomial.Order
22052189
public import Mathlib.Analysis.Quaternion
22062190
public import Mathlib.Analysis.RCLike.Basic
22072191
public import Mathlib.Analysis.RCLike.BoundedContinuous
@@ -3264,6 +3248,7 @@ public import Mathlib.CategoryTheory.Sites.Point.Skyscraper
32643248
public import Mathlib.CategoryTheory.Sites.Precoverage
32653249
public import Mathlib.CategoryTheory.Sites.PrecoverageToGrothendieck
32663250
public import Mathlib.CategoryTheory.Sites.Preserves
3251+
public import Mathlib.CategoryTheory.Sites.PreservesLimits
32673252
public import Mathlib.CategoryTheory.Sites.PreservesLocallyBijective
32683253
public import Mathlib.CategoryTheory.Sites.PreservesSheafification
32693254
public import Mathlib.CategoryTheory.Sites.Pretopology
@@ -4054,7 +4039,6 @@ public import Mathlib.Data.Nat.NthRoot.Defs
40544039
public import Mathlib.Data.Nat.Order.Lemmas
40554040
public import Mathlib.Data.Nat.PSub
40564041
public import Mathlib.Data.Nat.Pairing
4057-
public import Mathlib.Data.Nat.PartENat
40584042
public import Mathlib.Data.Nat.Periodic
40594043
public import Mathlib.Data.Nat.PowModTotient
40604044
public import Mathlib.Data.Nat.Prime.Basic
@@ -4275,10 +4259,6 @@ public import Mathlib.Data.ZMod.QuotientRing
42754259
public import Mathlib.Data.ZMod.Units
42764260
public import Mathlib.Data.ZMod.ValMinAbs
42774261
public import Mathlib.Deprecated.Aliases
4278-
public import Mathlib.Deprecated.Estimator
4279-
public import Mathlib.Deprecated.MLList.BestFirst
4280-
public import Mathlib.Deprecated.Order
4281-
public import Mathlib.Deprecated.RingHom
42824262
public import Mathlib.Deprecated.Sort
42834263
public import Mathlib.Dynamics.BirkhoffSum.Average
42844264
public import Mathlib.Dynamics.BirkhoffSum.Basic
@@ -5748,6 +5728,7 @@ public import Mathlib.Order.CompleteLattice.SetLike
57485728
public import Mathlib.Order.CompleteLatticeIntervals
57495729
public import Mathlib.Order.CompletePartialOrder
57505730
public import Mathlib.Order.CompleteSublattice
5731+
public import Mathlib.Order.Completion
57515732
public import Mathlib.Order.Concept
57525733
public import Mathlib.Order.ConditionallyCompleteLattice.Basic
57535734
public import Mathlib.Order.ConditionallyCompleteLattice.Defs
@@ -6773,7 +6754,6 @@ public import Mathlib.RingTheory.Valuation.Extension
67736754
public import Mathlib.RingTheory.Valuation.FiniteField
67746755
public import Mathlib.RingTheory.Valuation.Integers
67756756
public import Mathlib.RingTheory.Valuation.Integral
6776-
public import Mathlib.RingTheory.Valuation.IntegrallyClosed
67776757
public import Mathlib.RingTheory.Valuation.LocalSubring
67786758
public import Mathlib.RingTheory.Valuation.Minpoly
67796759
public import Mathlib.RingTheory.Valuation.PrimeMultiplicity
@@ -7215,6 +7195,7 @@ public import Mathlib.Topology.Algebra.Group.CompactOpen
72157195
public import Mathlib.Topology.Algebra.Group.Defs
72167196
public import Mathlib.Topology.Algebra.Group.Extension
72177197
public import Mathlib.Topology.Algebra.Group.GroupTopology
7198+
public import Mathlib.Topology.Algebra.Group.Matrix
72187199
public import Mathlib.Topology.Algebra.Group.OpenMapping
72197200
public import Mathlib.Topology.Algebra.Group.Pointwise
72207201
public import Mathlib.Topology.Algebra.Group.Quotient
@@ -7276,7 +7257,6 @@ public import Mathlib.Topology.Algebra.Module.PerfectSpace
72767257
public import Mathlib.Topology.Algebra.Module.PointwiseConvergence
72777258
public import Mathlib.Topology.Algebra.Module.Simple
72787259
public import Mathlib.Topology.Algebra.Module.Star
7279-
public import Mathlib.Topology.Algebra.Module.StrongDual
72807260
public import Mathlib.Topology.Algebra.Module.StrongTopology
72817261
public import Mathlib.Topology.Algebra.Module.TransferInstance
72827262
public import Mathlib.Topology.Algebra.Module.UniformConvergence
@@ -7335,6 +7315,7 @@ public import Mathlib.Topology.Algebra.UniformField
73357315
public import Mathlib.Topology.Algebra.UniformFilterBasis
73367316
public import Mathlib.Topology.Algebra.UniformMulAction
73377317
public import Mathlib.Topology.Algebra.UniformRing
7318+
public import Mathlib.Topology.Algebra.ValuativeRel.ValuativeTopology
73387319
public import Mathlib.Topology.Algebra.Valued.LocallyCompact
73397320
public import Mathlib.Topology.Algebra.Valued.NormedValued
73407321
public import Mathlib.Topology.Algebra.Valued.ValuationTopology

Mathlib/Algebra/Group/NatPowAssoc.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ We also produce the following instances:
3333
3434
## TODO
3535
36-
* to_additive?
36+
* `to_additive`?
3737
3838
-/
3939

Mathlib/Algebra/Group/Subgroup/Basic.lean

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -324,29 +324,29 @@ section Normalizer
324324
variable {H}
325325

326326
@[to_additive]
327-
theorem normalizer_eq_top_iff : H.normalizer = ⊤ ↔ H.Normal :=
327+
theorem normalizer_eq_top_iff : normalizer (H : Set G) = ⊤ ↔ H.Normal :=
328328
eq_top_iff.trans
329329
fun h => ⟨fun a ha b => (h (mem_top b) a).mp ha⟩, fun h a _ha b =>
330-
fun hb => h.conj_mem b hb a, fun hb => by rwa [h.mem_comm_iff, inv_mul_cancel_left] at hb⟩⟩
330+
fun hb => h.conj_mem b hb a, fun hb => inv_mul_cancel_left a b ▸ h.mem_comm_iff.mp hb⟩⟩
331331

332332
variable (H) in
333333
@[to_additive]
334-
theorem normalizer_eq_top [h : H.Normal] : H.normalizer = ⊤ :=
334+
theorem normalizer_eq_top [h : H.Normal] : normalizer (H : Set G) = ⊤ :=
335335
normalizer_eq_top_iff.mpr h
336336

337337
variable {N : Type*} [Group N]
338338

339339
/-- The preimage of the normalizer is contained in the normalizer of the preimage. -/
340340
@[to_additive /-- The preimage of the normalizer is contained in the normalizer of the preimage. -/]
341341
theorem le_normalizer_comap (f : N →* G) :
342-
H.normalizer.comap f ≤ (H.comap f).normalizer := fun x => by
342+
(normalizer H).comap f ≤ normalizer (H.comap f) := fun x => by
343343
simp only [mem_normalizer_iff, mem_comap]
344344
intro h n
345345
simp [h (f n)]
346346

347347
/-- The image of the normalizer is contained in the normalizer of the image. -/
348348
@[to_additive /-- The image of the normalizer is contained in the normalizer of the image. -/]
349-
theorem le_normalizer_map (f : G →* N) : H.normalizer.map f ≤ (H.map f).normalizer := fun _ => by
349+
theorem le_normalizer_map (f : G →* N) : (normalizer H).map f ≤ normalizer (H.map f) := fun _ => by
350350
simp only [and_imp, mem_map, exists_imp, mem_normalizer_iff]
351351
rintro x hx rfl n
352352
constructor
@@ -360,45 +360,46 @@ theorem le_normalizer_map (f : G →* N) : H.normalizer.map f ≤ (H.map f).norm
360360

361361
@[to_additive]
362362
theorem comap_normalizer_eq_of_le_range {f : N →* G} (h : H ≤ f.range) :
363-
comap f H.normalizer = (comap f H).normalizer := by
363+
(normalizer H).comap f = normalizer (H.comap f) := by
364364
apply le_antisymm (le_normalizer_comap f)
365365
rw [← map_le_iff_le_comap]
366366
apply (le_normalizer_map f).trans
367367
rw [map_comap_eq_self h]
368368

369369
@[to_additive]
370370
theorem subgroupOf_normalizer_eq {H N : Subgroup G} (h : H ≤ N) :
371-
H.normalizer.subgroupOf N = (H.subgroupOf N).normalizer :=
371+
(normalizer H).subgroupOf N = normalizer (H.subgroupOf N) :=
372372
comap_normalizer_eq_of_le_range (h.trans_eq N.range_subtype.symm)
373373

374374
@[to_additive]
375375
theorem normal_subgroupOf_iff_le_normalizer (h : H ≤ K) :
376-
(H.subgroupOf K).Normal ↔ K ≤ H.normalizer := by
376+
(H.subgroupOf K).Normal ↔ K ≤ normalizer H := by
377377
rw [← subgroupOf_eq_top, subgroupOf_normalizer_eq h, normalizer_eq_top_iff]
378378

379379
@[to_additive]
380380
theorem normal_subgroupOf_iff_le_normalizer_inf :
381-
(H.subgroupOf K).Normal ↔ K ≤ (H ⊓ K).normalizer :=
381+
(H.subgroupOf K).Normal ↔ K ≤ normalizer (H ⊓ K : Subgroup G) :=
382382
inf_subgroupOf_right H K ▸ normal_subgroupOf_iff_le_normalizer inf_le_right
383383

384384
@[to_additive]
385-
instance (priority := 100) normal_in_normalizer : (H.subgroupOf H.normalizer).Normal :=
385+
instance (priority := 100) normal_in_normalizer : (H.subgroupOf <| normalizer H).Normal :=
386386
(normal_subgroupOf_iff_le_normalizer H.le_normalizer).mpr le_rfl
387387

388388
@[to_additive]
389389
theorem le_normalizer_of_normal_subgroupOf [hK : (H.subgroupOf K).Normal] (HK : H ≤ K) :
390-
K ≤ H.normalizer :=
390+
K ≤ normalizer H :=
391391
(normal_subgroupOf_iff_le_normalizer HK).mp hK
392392

393393
@[to_additive]
394-
theorem subset_normalizer_of_normal {S : Set G} [hH : H.Normal] : S ⊆ H.normalizer :=
394+
theorem subset_normalizer_of_normal {S : Set G} [hH : H.Normal] : S ⊆ normalizer (H : Set G) :=
395395
(@normalizer_eq_top _ _ H hH) ▸ le_top
396396

397397
@[to_additive]
398-
theorem le_normalizer_of_normal [H.Normal] : K ≤ H.normalizer := subset_normalizer_of_normal
398+
theorem le_normalizer_of_normal [H.Normal] : K ≤ normalizer H := subset_normalizer_of_normal
399399

400400
@[to_additive]
401-
theorem inf_normalizer_le_normalizer_inf : H.normalizer ⊓ K.normalizer ≤ (H ⊓ K).normalizer :=
401+
theorem inf_normalizer_le_normalizer_inf :
402+
normalizer H ⊓ normalizer K ≤ normalizer ((H ⊓ K :) : Set G) :=
402403
fun _ h g ↦ and_congr (h.1 g) (h.2 g)
403404

404405
variable (G) in
@@ -409,7 +410,7 @@ def _root_.NormalizerCondition :=
409410
/-- Alternative phrasing of the normalizer condition: Only the full group is self-normalizing.
410411
This may be easier to work with, as it avoids inequalities and negations. -/
411412
theorem _root_.normalizerCondition_iff_only_full_group_self_normalizing :
412-
NormalizerCondition G ↔ ∀ H : Subgroup G, H.normalizer = H → H = ⊤ := by
413+
NormalizerCondition G ↔ ∀ H : Subgroup G, normalizer H = H → H = ⊤ := by
413414
apply forall_congr'; intro H
414415
simp only [lt_iff_le_and_ne, le_normalizer, Ne]
415416
tauto
@@ -624,15 +625,15 @@ variable {N : Type*} [Group N] (f : G →* N)
624625
/-- The preimage of the normalizer is equal to the normalizer of the preimage of
625626
a surjective function. -/]
626627
theorem comap_normalizer_eq_of_surjective (H : Subgroup G) {f : N →* G}
627-
(hf : Function.Surjective f) : H.normalizer.comap f = (H.comap f).normalizer :=
628+
(hf : Function.Surjective f) : (normalizer H).comap f = normalizer (H.comap f) :=
628629
comap_normalizer_eq_of_le_range fun x _ ↦ hf x
629630

630631
/-- The image of the normalizer is equal to the normalizer of the image of an isomorphism. -/
631632
@[to_additive
632633
/-- The image of the normalizer is equal to the normalizer of the image of an
633634
isomorphism. -/]
634635
theorem map_equiv_normalizer_eq (H : Subgroup G) (f : G ≃* N) :
635-
H.normalizer.map f.toMonoidHom = (H.map f.toMonoidHom).normalizer := by
636+
(normalizer H).map f.toMonoidHom = normalizer (H.map f.toMonoidHom) := by
636637
ext x
637638
simp only [mem_normalizer_iff, mem_map_equiv]
638639
rw [f.toEquiv.forall_congr]
@@ -645,7 +646,7 @@ theorem map_equiv_normalizer_eq (H : Subgroup G) (f : G ≃* N) :
645646
/-- The image of the normalizer is equal to the normalizer of the image of a bijective
646647
function. -/]
647648
theorem map_normalizer_eq_of_bijective (H : Subgroup G) {f : G →* N} (hf : Function.Bijective f) :
648-
H.normalizer.map f = (H.map f).normalizer :=
649+
(normalizer H).map f = normalizer (H.map f) :=
649650
map_equiv_normalizer_eq H (MulEquiv.ofBijective f hf)
650651

651652
end Subgroup
@@ -876,13 +877,13 @@ theorem commute_of_normal_of_disjoint (H₁ H₂ : Subgroup G) (hH₁ : H₁.Nor
876877

877878
@[to_additive]
878879
theorem normal_subgroupOf_of_le_normalizer {H N : Subgroup G}
879-
(hLE : H ≤ N.normalizer) : (N.subgroupOf H).Normal := by
880+
(hLE : H ≤ normalizer N) : (N.subgroupOf H).Normal := by
880881
rw [normal_subgroupOf_iff_le_normalizer_inf]
881882
exact (le_inf hLE H.le_normalizer).trans inf_normalizer_le_normalizer_inf
882883

883884
@[to_additive]
884885
theorem normal_subgroupOf_sup_of_le_normalizer {H N : Subgroup G}
885-
(hLE : H ≤ N.normalizer) : (N.subgroupOf (H ⊔ N)).Normal := by
886+
(hLE : H ≤ normalizer N) : (N.subgroupOf (H ⊔ N)).Normal := by
886887
rw [normal_subgroupOf_iff_le_normalizer le_sup_right]
887888
exact sup_le hLE le_normalizer
888889

0 commit comments

Comments
 (0)