Skip to content

Commit a579275

Browse files
committed
more tinkering
1 parent d6d9de2 commit a579275

File tree

2 files changed

+17
-10
lines changed

2 files changed

+17
-10
lines changed

FLT/Basic/Reductions.lean

+15-9
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ of the proof of Fermat's Last Theorem.
3434
3535
We start by reducing the version of Fermat's Last Theorem for positive naturals to
3636
Lean's version `FermatLastTheorem` of the theorem.
37+
3738
-/
3839

3940
/-- Fermat's Last Theorem as stated in mathlib (a statement `FermatLastTheorem` about naturals)
@@ -269,7 +270,7 @@ def of_not_FermatLastTheorem_coprime_p_ge_5 {a b c : ℤ} (ha : a ≠ 0) (hb : b
269270
c := (of_not_FermatLastTheorem.aux₁ a b c).2.2
270271
ha0 := by
271272
unfold of_not_FermatLastTheorem.aux₁
272-
split <;> split <;> try split
273+
split <;> split <;> try split -- how come `split` doesn't do this all in one go?
273274
· exact ha
274275
· rwa [← Int.neg_ne_zero] at ha
275276
· exact hb
@@ -283,17 +284,20 @@ def of_not_FermatLastTheorem_coprime_p_ge_5 {a b c : ℤ} (ha : a ≠ 0) (hb : b
283284
hFLT := by
284285
have negonepow : (-1 : ℤ) ^ p = -1 := by
285286
rw [neg_one_pow_eq_pow_mod_two]
286-
sorry
287+
have := Fact.mk hpprime
288+
rw [Nat.Prime.mod_two_eq_one_iff_ne_two.2]
289+
· simp
290+
· linarith
287291
unfold of_not_FermatLastTheorem.aux₁
288292
split <;> split <;> try split
289293
· exact h
290294
· linear_combination (-1)^p * h
291295
· linear_combination h
292296
· linear_combination (-1)^p * h
293-
· rw [neg_pow c, neg_pow b]
294-
simp
295-
sorry
296-
· sorry
297+
· rw [neg_pow c, neg_pow b, negonepow]
298+
linear_combination h
299+
· rw [neg_pow a, negonepow]
300+
linear_combination -h
297301
hgcdab := sorry
298302
ha4 := of_not_FermatLastTheorem.aux₁.ha4 b c hab
299303
hb2 := sorry
@@ -389,12 +393,14 @@ abbrev Qbar := AlgebraicClosure ℚ
389393

390394
open WeierstrassCurve
391395

392-
abbrev p_torsion (P : FreyPackage) : Type := sorry -- (FreyCurve P)⟮Qbar⟯[p]
396+
-- this is wrong, it's the full group of points, not the p-torsion
397+
abbrev p_torsion (P : FreyPackage) : Type := ((FreyCurve P).toWeierstrassCurve ⟮Qbar⟯) -- need p-torsion
393398

394399
variable (P : FreyPackage)
395400

396401
instance : AddCommGroup (FreyCurve.p_torsion P) := sorry
397-
instance : Module (ZMod P.p) (FreyCurve.p_torsion P) := sorry
402+
instance : Module (ZMod P.p) (FreyCurve.p_torsion P) := sorry -- definition above needs to be
403+
-- fixed before this can be done
398404

399405
def mod_p_Galois_representation (P : FreyPackage) :
400406
Representation (ZMod P.p) (Qbar ≃ₗ[ℚ] Qbar) (FreyCurve.p_torsion P) := sorry
@@ -434,7 +440,7 @@ theorem FreyPackage.false (P : FreyPackage) : False := by
434440
apply FreyCurve.Wiles_Frey P
435441
exact FreyCurve.Mazur_Frey P
436442

437-
443+
-- Fermat's Last Theorem is true
438444
theorem Wiles_Taylor_Wiles : FermatLastTheorem := by
439445
-- assume FLT is false
440446
by_contra h

FLT/TateCurve.lean FLT/TateCurve/TateCurve.lean

+2-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ we skip it. This enables the entire argument to be run over a field complete wit
1111
to a nontrivial nonarchimedean real-valued norm.
1212
1313
Key thing we want: injection from K^* / <q> into E(K) where K is a field complete wrt
14-
a nontriv nonarch norm, E is the Frey curve and q is chosen appropriately; proof that the injection is functorial in the sense that if K -> L
14+
a nontriv nonarch norm, E is the Frey curve and q is chosen appropriately; proof that the injection
15+
is functorial in the sense that if K -> L
1516
is an injection of fields and the norm on L restricts to the norm on K then the obvious
1617
diagram commutes.
1718
-/

0 commit comments

Comments
 (0)