Skip to content

Commit c55fadb

Browse files
author
mathlib4-bot
committed
Merge remote-tracking branch 'origin/master' into bump/v4.22.0
2 parents d5c35bf + 84e70de commit c55fadb

File tree

27 files changed

+1048
-55
lines changed

27 files changed

+1048
-55
lines changed

Archive.lean

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import Archive.Imo.Imo1988Q6
2828
import Archive.Imo.Imo1994Q1
2929
import Archive.Imo.Imo1998Q2
3030
import Archive.Imo.Imo2001Q2
31+
import Archive.Imo.Imo2001Q3
3132
import Archive.Imo.Imo2001Q6
3233
import Archive.Imo.Imo2005Q3
3334
import Archive.Imo.Imo2005Q4

Archive/Imo/Imo2001Q3.lean

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
/-
2+
Copyright (c) 2025 Jeremy Tan. All rights reserved.
3+
Released under Apache 2.0 license as described in the file LICENSE.
4+
Authors: Jeremy Tan
5+
-/
6+
import Mathlib.Algebra.BigOperators.Group.Finset.Piecewise
7+
import Mathlib.Algebra.Group.Action.Defs
8+
import Mathlib.Algebra.Order.BigOperators.Group.Finset
9+
import Mathlib.Data.Fintype.Prod
10+
import Mathlib.Tactic.NormNum.Ineq
11+
12+
/-!
13+
# IMO 2001 Q3
14+
15+
Twenty-one girls and twenty-one boys took part in a mathematical competition. It turned out that
16+
17+
1. each contestant solved at most six problems, and
18+
2. for each pair of a girl and a boy, there was at least one problem that was solved by
19+
both the girl and the boy.
20+
21+
Show that there is a problem that was solved by at least three girls and at least three boys.
22+
23+
# Solution
24+
25+
Note that not all of the problems a girl $g$ solves can be "hard" for boys, in the sense that
26+
at most two boys solved it. If that was true, by condition 1 at most $6 × 2 = 12$ boys solved
27+
some problem $g$ solved, but by condition 2 that property holds for all 21 boys, which is a
28+
contradiction.
29+
30+
Hence there are at most 5 problems $g$ solved that are hard for boys, and the number of girl-boy
31+
pairs who solved some problem in common that was hard for boys is at most $5 × 2 × 21 = 210$.
32+
By the same reasoning this bound holds when "girls" and "boys" are swapped throughout, but there
33+
are $21^2$ girl-boy pairs in all and $21^2 > 210 + 210$, so some girl-boy pairs solved only problems
34+
in common that were not hard for girls or boys. By condition 2 the result follows.
35+
-/
36+
37+
namespace Imo2001Q3
38+
39+
open Finset
40+
41+
/-- The conditions on the problems the girls and boys solved, represented as functions from `Fin 21`
42+
(index in cohort) to the finset of problems they solved (numbered arbitrarily). -/
43+
structure Condition (G B : Fin 21 → Finset ℕ) where
44+
/-- Every girl solved at most six problems. -/
45+
G_le_6 (i) : #(G i) ≤ 6
46+
/-- Every boy solved at most six problems. -/
47+
B_le_6 (j) : #(B j) ≤ 6
48+
/-- Every girl-boy pair solved at least one problem in common. -/
49+
G_inter_B (i j) : ¬Disjoint (G i) (B j)
50+
51+
/-- A problem is easy for a cohort (boys or girls) if at least three of its members solved it. -/
52+
def Easy (F : Fin 21 → Finset ℕ) (p : ℕ) : Prop := 3 ≤ #{i | p ∈ F i}
53+
54+
variable {G B : Fin 21 → Finset ℕ}
55+
56+
open Classical in
57+
/-- Every contestant solved at most five problems that were not easy for the other cohort. -/
58+
lemma card_not_easy_le_five {i : Fin 21} (hG : #(G i) ≤ 6) (hB : ∀ j, ¬Disjoint (G i) (B j)) :
59+
#{p ∈ G i | ¬Easy B p} ≤ 5 := by
60+
by_contra! h
61+
replace h := le_antisymm (card_filter_le ..) (hG.trans h)
62+
simp_rw [card_filter_eq_iff, Easy, not_le] at h
63+
suffices 2112 by norm_num at this
64+
calc
65+
_ = #{j | ¬Disjoint (G i) (B j)} := by simp [filter_true_of_mem fun j _ ↦ hB j]
66+
_ = #((G i).biUnion fun p ↦ {j | p ∈ B j}) := by congr 1; ext j; simp [not_disjoint_iff]
67+
_ ≤ ∑ p ∈ G i, #{j | p ∈ B j} := card_biUnion_le
68+
_ ≤ ∑ p ∈ G i, 2 := sum_le_sum fun p mp ↦ Nat.le_of_lt_succ (h p mp)
69+
_ ≤ _ := by rw [sum_const, smul_eq_mul]; omega
70+
71+
open Classical in
72+
/-- There are at most 210 girl-boy pairs who solved some problem in common that was not easy for
73+
a fixed cohort. -/
74+
lemma card_not_easy_le_210 (hG : ∀ i, #(G i) ≤ 6) (hB : ∀ i j, ¬Disjoint (G i) (B j)) :
75+
#{ij : Fin 21 × Fin 21 | ∃ p, ¬Easy B p ∧ p ∈ G ij.1 ∩ B ij.2} ≤ 210 :=
76+
calc
77+
_ = ∑ i, #{j | ∃ p, ¬Easy B p ∧ p ∈ G i ∩ B j} := by
78+
simp_rw [card_filter, ← univ_product_univ, sum_product]
79+
_ = ∑ i, #({p ∈ G i | ¬Easy B p}.biUnion fun p ↦ {j | p ∈ B j}) := by
80+
congr!; ext
81+
simp_rw [mem_biUnion, mem_inter, mem_filter, mem_univ, true_and]
82+
congr! 2; tauto
83+
_ ≤ ∑ i, ∑ p ∈ G i with ¬Easy B p, #{j | p ∈ B j} := sum_le_sum fun _ _ ↦ card_biUnion_le
84+
_ ≤ ∑ i, ∑ p ∈ G i with ¬Easy B p, 2 := by
85+
gcongr with i _ p mp
86+
rw [mem_filter, Easy, not_le] at mp
87+
exact Nat.le_of_lt_succ mp.2
88+
_ ≤ ∑ i : Fin 21, 5 * 2 := by
89+
gcongr with i
90+
rw [sum_const, smul_eq_mul]
91+
exact mul_le_mul_right' (card_not_easy_le_five (hG _) (hB _)) _
92+
_ = _ := by norm_num
93+
94+
theorem result (h : Condition G B) : ∃ p, Easy G p ∧ Easy B p := by
95+
obtain ⟨G_le_6, B_le_6, G_inter_B⟩ := h
96+
have B_inter_G : ∀ i j, ¬Disjoint (B i) (G j) := fun i j ↦ by
97+
rw [disjoint_comm]; exact G_inter_B j i
98+
have cB := card_not_easy_le_210 G_le_6 G_inter_B
99+
have cG := card_not_easy_le_210 B_le_6 B_inter_G
100+
rw [← card_map ⟨_, Prod.swap_injective⟩] at cG
101+
have key := (card_union_le _ _).trans (add_le_add cB cG) |>.trans_lt
102+
(show _ < #(@univ (Fin 21 × Fin 21) _) by simp)
103+
obtain ⟨⟨i, j⟩, -, hij⟩ := exists_mem_notMem_of_card_lt_card key
104+
simp_rw [mem_union, mem_map, mem_filter, mem_univ, Function.Embedding.coeFn_mk, Prod.exists,
105+
Prod.swap_prod_mk, Prod.mk.injEq, existsAndEq, true_and, and_true, not_or, not_exists,
106+
not_and', not_not, mem_inter, and_imp] at hij
107+
obtain ⟨p, pG, pB⟩ := not_disjoint_iff.mp (G_inter_B i j)
108+
use p, hij.2 _ pB pG, hij.1 _ pG pB
109+
110+
end Imo2001Q3

Mathlib.lean

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1928,6 +1928,7 @@ import Mathlib.CategoryTheory.Bicategory.Functor.LocallyDiscrete
19281928
import Mathlib.CategoryTheory.Bicategory.Functor.Oplax
19291929
import Mathlib.CategoryTheory.Bicategory.Functor.Prelax
19301930
import Mathlib.CategoryTheory.Bicategory.Functor.Pseudofunctor
1931+
import Mathlib.CategoryTheory.Bicategory.Functor.Strict
19311932
import Mathlib.CategoryTheory.Bicategory.FunctorBicategory.Oplax
19321933
import Mathlib.CategoryTheory.Bicategory.Grothendieck
19331934
import Mathlib.CategoryTheory.Bicategory.Kan.Adjunction
@@ -2052,6 +2053,7 @@ import Mathlib.CategoryTheory.FiberedCategory.Cartesian
20522053
import Mathlib.CategoryTheory.FiberedCategory.Cocartesian
20532054
import Mathlib.CategoryTheory.FiberedCategory.Fiber
20542055
import Mathlib.CategoryTheory.FiberedCategory.Fibered
2056+
import Mathlib.CategoryTheory.FiberedCategory.Grothendieck
20552057
import Mathlib.CategoryTheory.FiberedCategory.HasFibers
20562058
import Mathlib.CategoryTheory.FiberedCategory.HomLift
20572059
import Mathlib.CategoryTheory.Filtered.Basic
@@ -4320,6 +4322,7 @@ import Mathlib.MeasureTheory.Integral.IntegrationByParts
43204322
import Mathlib.MeasureTheory.Integral.IntervalAverage
43214323
import Mathlib.MeasureTheory.Integral.IntervalIntegral
43224324
import Mathlib.MeasureTheory.Integral.IntervalIntegral.Basic
4325+
import Mathlib.MeasureTheory.Integral.IntervalIntegral.ContDiff
43234326
import Mathlib.MeasureTheory.Integral.IntervalIntegral.FundThmCalculus
43244327
import Mathlib.MeasureTheory.Integral.IntervalIntegral.IntegrationByParts
43254328
import Mathlib.MeasureTheory.Integral.IntervalIntegral.Periodic
@@ -5175,6 +5178,7 @@ import Mathlib.RingTheory.GradedAlgebra.Radical
51755178
import Mathlib.RingTheory.HahnSeries.Addition
51765179
import Mathlib.RingTheory.HahnSeries.Basic
51775180
import Mathlib.RingTheory.HahnSeries.HEval
5181+
import Mathlib.RingTheory.HahnSeries.Lex
51785182
import Mathlib.RingTheory.HahnSeries.Multiplication
51795183
import Mathlib.RingTheory.HahnSeries.PowerSeries
51805184
import Mathlib.RingTheory.HahnSeries.Summable
@@ -5358,6 +5362,7 @@ import Mathlib.RingTheory.Norm.Defs
53585362
import Mathlib.RingTheory.Norm.Transitivity
53595363
import Mathlib.RingTheory.NormTrace
53605364
import Mathlib.RingTheory.Nullstellensatz
5365+
import Mathlib.RingTheory.OrderOfVanishing
53615366
import Mathlib.RingTheory.OreLocalization.Basic
53625367
import Mathlib.RingTheory.OreLocalization.Cardinality
53635368
import Mathlib.RingTheory.OreLocalization.OreSet

Mathlib/Algebra/Order/Monoid/Unbundled/WithTop.lean

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -549,6 +549,17 @@ lemma addLECancellable_iff_ne_bot [Nonempty α] [Preorder α]
549549
mp := by rintro h rfl; exact (bot_lt_coe <| Classical.arbitrary _).not_ge <| h <| by simp
550550
mpr := addLECancellable_of_ne_bot
551551

552+
/--
553+
Addition in `WithBot (WithTop α)` is right cancellative provided the element
554+
being cancelled is not `⊤` or `⊥`.
555+
-/
556+
lemma add_le_add_iff_right' {α : Type*} [Add α] [LE α]
557+
[AddRightMono α] [AddRightReflectLE α]
558+
{a b c : WithBot (WithTop α)} (hc : c ≠ ⊥) (hc' : c ≠ ⊤) :
559+
a + c ≤ b + c ↔ a ≤ b := by
560+
induction a <;> induction b <;> induction c <;> norm_cast at * <;>
561+
aesop (add simp WithTop.add_le_add_iff_right)
562+
552563
-- There is no `WithBot.map_mul_of_mulHom`, since `WithBot` does not have a multiplication.
553564
@[simp]
554565
protected theorem map_add {F} [Add β] [FunLike F α β] [AddHomClass F α β]

Mathlib/AlgebraicGeometry/EllipticCurve/IsomOfJ.lean

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ private lemma exists_variableChange_of_char_two_of_j_eq_zero
8080
field_simp
8181
· field_simp [variableChange_a₄, a₁_of_isCharTwoJEqZeroNF, a₂_of_isCharTwoJEqZeroNF]
8282
linear_combination hs + (s ^ 4 - s * t - E.a₃ * s) * CharP.cast_eq_zero F 2
83-
· field_simp [variableChange_a, a₁_of_isCharTwoJEqZeroNF, a₂_of_isCharTwoJEqZeroNF]
83+
· field_simp [variableChange_a, a₁_of_isCharTwoJEqZeroNF, a₂_of_isCharTwoJEqZeroNF]
8484
linear_combination ht - (t ^ 2 + E.a₃ * t) * CharP.cast_eq_zero F 2
8585

8686
private lemma exists_variableChange_of_char_two (heq : E.j = E'.j) :
@@ -257,10 +257,10 @@ private lemma exists_variableChange_of_char_ne_two_or_three
257257
exact ⟨ha₆, ha₆'⟩
258258
use ⟨Units.mk0 u hu0, 0, 0, 0
259259
ext
260-
· simp
261-
· simp
262-
· simp
263-
· simp [ha₄, ha₄']
260+
· simp [variableChange_a₁]
261+
· simp [variableChange_a₂]
262+
· simp [variableChange_a₃]
263+
· simp [ha₄, ha₄', variableChange_a₄]
264264
· simp_rw [variableChange_a₆, a₁_of_isShortNF, a₂_of_isShortNF, a₃_of_isShortNF,
265265
ha₄, Units.val_inv_eq_inv_val, Units.val_mk0, inv_pow, inv_mul_eq_div, hu]
266266
field_simp
@@ -282,13 +282,13 @@ private lemma exists_variableChange_of_char_ne_two_or_three
282282
exact ⟨ha₄, ha₄'⟩
283283
use ⟨Units.mk0 u hu0, 0, 0, 0
284284
ext
285-
· simp
286-
· simp
287-
· simp
285+
· simp [variableChange_a₁]
286+
· simp [variableChange_a₂]
287+
· simp [variableChange_a₃]
288288
· simp_rw [variableChange_a₄, a₁_of_isShortNF, a₂_of_isShortNF, a₃_of_isShortNF,
289289
Units.val_inv_eq_inv_val, Units.val_mk0, inv_pow, inv_mul_eq_div, hu]
290290
field_simp
291-
· simp [ha₆, ha₆']
291+
· simp [ha₆, ha₆', variableChange_a₆]
292292
have ha₄' : E'.a₄ ≠ 0 := fun h ↦ by
293293
rw [h, zero_pow three_ne_zero, zero_mul, mul_eq_zero,
294294
pow_eq_zero_iff two_ne_zero, pow_eq_zero_iff three_ne_zero] at heq
@@ -311,9 +311,9 @@ private lemma exists_variableChange_of_char_ne_two_or_three
311311
exact ⟨ha₄, ha₄'⟩
312312
use ⟨Units.mk0 u hu0, 0, 0, 0
313313
ext
314-
· simp
315-
· simp
316-
· simp
314+
· simp [variableChange_a₁]
315+
· simp [variableChange_a₂]
316+
· simp [variableChange_a₃]
317317
· simp_rw [variableChange_a₄, a₁_of_isShortNF, a₂_of_isShortNF, a₃_of_isShortNF,
318318
Units.val_inv_eq_inv_val, Units.val_mk0, inv_pow, inv_mul_eq_div, hu4]
319319
field_simp

Mathlib/AlgebraicGeometry/EllipticCurve/NormalForms.lean

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ a normal form of characteristic ≠ 2, provided that 2 is invertible in the ring
163163
def toCharNeTwoNF : VariableChange R := ⟨1, 0, ⅟2 * -W.a₁, ⅟2 * -W.a₃⟩
164164

165165
instance toCharNeTwoNF_spec : (W.toCharNeTwoNF • W).IsCharNeTwoNF := by
166-
constructor <;> simp
166+
constructor <;> simp [variableChange_a₁, variableChange_a₃]
167167

168168
theorem exists_variableChange_isCharNeTwoNF : ∃ C : VariableChange R, (C • W).IsCharNeTwoNF :=
169169
⟨_, W.toCharNeTwoNF_spec⟩
@@ -265,7 +265,7 @@ def toShortNF : VariableChange R :=
265265

266266
instance toShortNF_spec : (W.toShortNF • W).IsShortNF := by
267267
rw [toShortNF, mul_smul]
268-
constructor <;> simp
268+
constructor <;> simp [variableChange_a₁, variableChange_a₂, variableChange_a₃]
269269

270270
theorem exists_variableChange_isShortNF : ∃ C : VariableChange R, (C • W).IsShortNF :=
271271
⟨_, W.toShortNF_spec⟩
@@ -420,10 +420,10 @@ theorem toCharThreeNF_spec_of_b₂_ne_zero (hb₂ : W.b₂ ≠ 0) :
420420
set W' := W.toShortNFOfCharThree • W
421421
haveI : W'.IsCharNeTwoNF := W.toCharNeTwoNF_spec
422422
constructor
423-
· simp
424-
· simp
423+
· simp [variableChange_a₁]
424+
· simp [variableChange_a₃]
425425
· have ha₂ : W'.a₂ ≠ 0 := W.toShortNFOfCharThree_a₂ ▸ hb₂
426-
field_simp [ha₂]
426+
field_simp [ha₂, variableChange_a₄]
427427
linear_combination (W'.a₄ * W'.a₂ ^ 2 + W'.a₄ ^ 2) * CharP.cast_eq_zero F 3
428428

429429
theorem toCharThreeNF_spec_of_b₂_eq_zero (hb₂ : W.b₂ = 0) : (W.toCharThreeNF • W).IsShortNF := by
@@ -651,7 +651,7 @@ def toCharTwoJEqZeroNF : VariableChange R := ⟨1, W.a₂, 0, 0⟩
651651
theorem toCharTwoJEqZeroNF_spec (ha₁ : W.a₁ = 0) :
652652
(W.toCharTwoJEqZeroNF • W).IsCharTwoJEqZeroNF := by
653653
constructor
654-
· simp [toCharTwoJEqZeroNF, ha₁]
654+
· simp [toCharTwoJEqZeroNF, ha₁, variableChange_a₁]
655655
· simp_rw [toCharTwoJEqZeroNF, variableChange_a₂, inv_one, Units.val_one]
656656
linear_combination 2 * W.a₂ * CharP.cast_eq_zero R 2
657657

@@ -666,10 +666,10 @@ def toCharTwoJNeZeroNF (W : WeierstrassCurve F) (ha₁ : W.a₁ ≠ 0) : Variabl
666666
theorem toCharTwoJNeZeroNF_spec (ha₁ : W.a₁ ≠ 0) :
667667
(W.toCharTwoJNeZeroNF ha₁ • W).IsCharTwoJNeZeroNF := by
668668
constructor
669-
· simp [toCharTwoJNeZeroNF, ha₁]
670-
· field_simp [toCharTwoJNeZeroNF]
669+
· simp [toCharTwoJNeZeroNF, ha₁, variableChange_a₁]
670+
· field_simp [toCharTwoJNeZeroNF, variableChange_a₃]
671671
linear_combination (W.a₃ * W.a₁ ^ 3 + W.a₁ ^ 2 * W.a₄ + W.a₃ ^ 2) * CharP.cast_eq_zero F 2
672-
· field_simp [toCharTwoJNeZeroNF]
672+
· field_simp [toCharTwoJNeZeroNF, variableChange_a₄]
673673
linear_combination (W.a₁ ^ 4 * W.a₃ ^ 2 + W.a₁ ^ 5 * W.a₃ * W.a₂) * CharP.cast_eq_zero F 2
674674

675675
/-- For a `WeierstrassCurve` defined over a field of characteristic = 2,

Mathlib/AlgebraicGeometry/EllipticCurve/VariableChange.lean

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -170,59 +170,47 @@ instance : MulAction (VariableChange R) (WeierstrassCurve R) where
170170
- C.r * C.t * C.u⁻¹ ^ 6 * ↑C'.u⁻¹ * (C'.s * 2 + W.a₁) * pow_mul_pow_eq_one 5 C'.u.inv_mul
171171
+ C.u⁻¹ ^ 6 * (C.r ^ 3 - C.t ^ 2) * pow_mul_pow_eq_one 6 C'.u.inv_mul
172172

173-
@[simp]
174173
lemma variableChange_a₁ : (C • W).a₁ = C.u⁻¹ * (W.a₁ + 2 * C.s) := rfl
175174

176-
@[simp]
177175
lemma variableChange_a₂ : (C • W).a₂ = C.u⁻¹ ^ 2 * (W.a₂ - C.s * W.a₁ + 3 * C.r - C.s ^ 2) := rfl
178176

179-
@[simp]
180177
lemma variableChange_a₃ : (C • W).a₃ = C.u⁻¹ ^ 3 * (W.a₃ + C.r * W.a₁ + 2 * C.t) := rfl
181178

182-
@[simp]
183179
lemma variableChange_a₄ : (C • W).a₄ =
184180
C.u⁻¹ ^ 4 * (W.a₄ - C.s * W.a₃ + 2 * C.r * W.a₂ - (C.t + C.r * C.s) * W.a₁ + 3 * C.r ^ 2
185181
- 2 * C.s * C.t) := rfl
186182

187-
@[simp]
188183
lemma variableChange_a₆ : (C • W).a₆ =
189184
C.u⁻¹ ^ 6 * (W.a₆ + C.r * W.a₄ + C.r ^ 2 * W.a₂ + C.r ^ 3 - C.t * W.a₃ - C.t ^ 2
190185
- C.r * C.t * W.a₁) := rfl
191186

192-
@[simp]
193187
lemma variableChange_b₂ : (C • W).b₂ = C.u⁻¹ ^ 2 * (W.b₂ + 12 * C.r) := by
194188
simp only [b₂, variableChange_a₁, variableChange_a₂]
195189
ring1
196190

197-
@[simp]
198191
lemma variableChange_b₄ : (C • W).b₄ = C.u⁻¹ ^ 4 * (W.b₄ + C.r * W.b₂ + 6 * C.r ^ 2) := by
199192
simp only [b₂, b₄, variableChange_a₁, variableChange_a₃, variableChange_a₄]
200193
ring1
201194

202-
@[simp]
203195
lemma variableChange_b₆ : (C • W).b₆ =
204196
C.u⁻¹ ^ 6 * (W.b₆ + 2 * C.r * W.b₄ + C.r ^ 2 * W.b₂ + 4 * C.r ^ 3) := by
205197
simp only [b₂, b₄, b₆, variableChange_a₃, variableChange_a₆]
206198
ring1
207199

208-
@[simp]
209200
lemma variableChange_b₈ : (C • W).b₈ = C.u⁻¹ ^ 8 *
210201
(W.b₈ + 3 * C.r * W.b₆ + 3 * C.r ^ 2 * W.b₄ + C.r ^ 3 * W.b₂ + 3 * C.r ^ 4) := by
211202
simp only [b₂, b₄, b₆, b₈, variableChange_a₁, variableChange_a₂, variableChange_a₃,
212203
variableChange_a₄, variableChange_a₆]
213204
ring1
214205

215-
@[simp]
216206
lemma variableChange_c₄ : (C • W).c₄ = C.u⁻¹ ^ 4 * W.c₄ := by
217207
simp only [c₄, variableChange_b₂, variableChange_b₄]
218208
ring1
219209

220-
@[simp]
221210
lemma variableChange_c₆ : (C • W).c₆ = C.u⁻¹ ^ 6 * W.c₆ := by
222211
simp only [c₆, variableChange_b₂, variableChange_b₄, variableChange_b₆]
223212
ring1
224213

225-
@[simp]
226214
lemma variableChange_Δ : (C • W).Δ = C.u⁻¹ ^ 12 * W.Δ := by
227215
simp only [b₂, b₄, b₆, b₈, Δ, variableChange_a₁, variableChange_a₂, variableChange_a₃,
228216
variableChange_a₄, variableChange_a₆]
@@ -235,7 +223,6 @@ instance : (C • W).IsElliptic := by
235223
exact (C.u⁻¹.isUnit.pow 12).mul W.isUnit_Δ
236224

237225
set_option linter.docPrime false in
238-
@[simp]
239226
lemma variableChange_Δ' : (C • W).Δ' = C.u⁻¹ ^ 12 * W.Δ' := by
240227
simp_rw [Units.ext_iff, Units.val_mul, coe_Δ', variableChange_Δ, Units.val_pow_eq_pow_val]
241228

0 commit comments

Comments
 (0)