-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMain.lean
More file actions
1131 lines (1020 loc) · 42.2 KB
/
Copy pathMain.lean
File metadata and controls
1131 lines (1020 loc) · 42.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
/-
Copyright (c) 2026 D. and Wise Wolf. All rights reserved.
Released under MIT license as described in the file LICENSE.
Authors: D. and Wise Wolf.
-/
-- cid: 697d62b5-312c-83a8-a917-f4aca8fa80ca
-- no-import DkMath.FLT.Basic 依存しないように外す
import DkMath.FLT.PetalDetect
import DkMath.FLT.OctagonCore
import DkMath.FLT.PhaseLift
import DkMath.FLT.CounterexamplePattern
import DkMath.FLT.GEisensteinBridge
import DkMath.NumberTheory.GcdNext
import DkMath.NumberTheory.ZsigmondyCyclotomic
import DkMath.ABC.PadicValNat
import DkMath.Algebra.DiffPow
#print "file: DkMath.FLT.Main" -- (別解:Zsigmondy + padicValNat)
set_option linter.style.longLine false
set_option linter.style.emptyLine false
/-!
# FLT Main: 別解による形式化証明
**ファイル位置づけ:**
```
理論モジュール (Basic, CosmicFormula, ZsigmondyCyclotomic, ...)
↓
Core.lean (基本補題:Cosmic Formula の因数分解)
↓
Basic.lean (FLT d=3 の既存証明)
↓
Main.lean (別解:Zsigmondy層A + PetalDetect層B)
```
**目的:**
- わっちたちの成果(Zsigmondy原始素因子 + padicValNat上界)による FLT d=3 の別解を形式化
- 既存の Cosmic Formula + coprimality アプローチとは異なる p-adic値評価による証明戦略
- 一般化への展開(d ≥ 5)への基盤構築
**証明方針(3層統合):**
1. **層A(Zsigmondy原始素因子)**: ZsigmondyCyclotomic.leanの既存補題を活用
- 原始素因子 q の存在保証
- q ∤ (a-b) の条件
2. **層B(PetalDetect + padicValNat評価)**: PetalDetect.leanの既存補題を活用
- S0(a,b) = a²+ab+b²the相対多角数構造
- (a+b)割り切り検出による φビット判定
- padicValNat上界 v_q(a³-b³) ≤ 1
3. **矛盾導出**: 層AとBの統合
- 層A: v_q(a³-b³) ≥ 3(完全3乗仮定)
- 層B: v_q(a³-b³) ≤ 1(padicValNat上界)
- 矛盾: 3 ≤ 1
-/
namespace DkMath.FLT
open scoped BigOperators
open DkMath.FLT.PetalDetect
open DkMath.NumberTheory.GcdNext
open DkMath.ABC
open DkMath.Algebra.DiffPow
/--
`descentClassify` だけを使う下流定理へ接続するための最小内部 bundle。
公開入口は `GEisensteinBaseInput` 側へ寄せ、こちらは内部の compatibility layer として扱う。
-/
structure DescentBaseInput (c b : ℕ) where
hbc : b < c
hcb_coprime : Nat.Coprime c b
hDescentClass : DescentClassifyImpossibleOnPrimitive c b
/--
`GEisensteinBaseInput` から、最小の `descentClassify` 束を回収する内部変換。
-/
def GEisensteinBaseInput.toDescentBaseInput {c b : ℕ}
(hIn : GEisensteinBaseInput c b) :
DescentBaseInput c b where
hbc := hIn.hbc
hcb_coprime := hIn.hcb_coprime
hDescentClass := descentClassifyImpossibleOnPrimitive_of_GEisensteinCore hIn.hCore
/--
`GEisensteinDescentCore` から `DescentBaseInput` を組み立てる内部 constructor。
`DescentBaseInput.hDescentClass` は、今後はこの constructor を経由して
`GEisenstein` 側の descent kernel から供給するのを標準ルートとみなす。
-/
def DescentBaseInput.ofGEisensteinCore {c b : ℕ}
(hbc : b < c)
(hcb_coprime : Nat.Coprime c b)
(hCore : GEisensteinDescentCore c b) :
DescentBaseInput c b := by
exact (GEisensteinBaseInput.mk hbc hcb_coprime hCore).toDescentBaseInput
-- ========================================
-- § 1. 層A(Zsigmondy原始素因子)
-- ========================================
-- ========================================
-- § 3. 矛盾導出(層A + 層B統合)
-- ========================================
section CoreRoute
/-- **メイン定理:別解による FLT d=3 証明**
Zsigmondy原始素因子 + padicValNat評価による背理法:
平方自由性仮定の下で、完全3乗仮定と矛盾を導出。
**入力(仮定):**
- `ha : 0 < a`, `hb : 0 < b`, `hc : 0 < c` - 正の整数
- `hab : Nat.Coprime a b` - a と b は互いに素
- `hS0_not_sq : ∀ {q : ℕ}, Nat.Prime q → q ∣ c^3 - b^3 → ¬ q ∣ c - b → ¬ q² ∣ S0_nat c b`
- 相対多角数S0(c,b) = c²+cb+b² は各原始素因子 q に対して平方自由
- すなわち:q が c³-b³ を割り、かつ q が (c-b) を割らない任意の素数 q について、
q² は S0(c,b) を割らない
**証明戦略(層統合):**
1. **層A(Zsigmondy原始素因子)**
- 存在補題により、q | (c³-b³) かつ ¬ q | (c-b) を満たす素数 q が存在
2. **層B(padicValNat上界)**
- 仮定 hS0_not_sq から ¬ q² ∣ S0(c,b)
- padicValNat上界:v_q(c³-b³) ≤ 1
3. **矛盾導出**
- 完全3乗仮定:q | a より v_q(a³-b³) ≥ 3
- 層B下界:v_q(c³-b³) = v_q(a³-b³)(cube_sub_eq_of_add_eq より)
- 矛盾:3 ≤ v_q(c³-b³) ≤ 1
**出力(結論):**
`a³ + b³ ≠ c³`(FLT d=3)
-/
theorem FLT_d3_by_padicValNat {a b c : ℕ}
(ha : 0 < a) (hb : 0 < b) (hc : 0 < c)
(hab : Nat.Coprime a b)
(hS0_not_sq :
∀ {q : ℕ}, Nat.Prime q → q ∣ c ^ 3 - b ^ 3 → ¬ q ∣ c - b → ¬ q ^ 2 ∣ S0_nat c b) :
a ^ 3 + b ^ 3 ≠ c ^ 3 := by
intro h_eq
have hcop_cb : Nat.Coprime c b := coprime_cb_of_eq hab h_eq
have hbc : b < c := by
by_contra hbc_not
have hcb : c ≤ b := Nat.not_lt.mp hbc_not
have hc3_le : c ^ 3 ≤ b ^ 3 := Nat.pow_le_pow_left hcb 3
have hsum_le : a ^ 3 + b ^ 3 ≤ b ^ 3 := by simpa [h_eq] using hc3_le
have ha3_pos : 0 < a ^ 3 := by positivity
omega
obtain ⟨q, hq_prime, hq_dvd_diff, hq_ndiv_diff⟩ :=
exists_prime_factor_cube_diff hbc hb hcop_cb
have hsub : c ^ 3 - b ^ 3 = a ^ 3 := cube_sub_eq_of_add_eq h_eq
have hq_dvd_a3 : q ∣ a ^ 3 := by simpa [hsub] using hq_dvd_diff
have hq_dvd_a : q ∣ a := hq_prime.dvd_of_dvd_pow hq_dvd_a3
have h_lower_a3 : 3 ≤ padicValNat q (a ^ 3) :=
padicValNat_lower_bound_of_dvd_d3 ha hq_prime hq_dvd_a
have h_lower : 3 ≤ padicValNat q (c ^ 3 - b ^ 3) := by
simpa [hsub] using h_lower_a3
have h_upper : padicValNat q (c ^ 3 - b ^ 3) ≤ 1 :=
padicValNat_upper_bound_d3 hbc hc hb hq_prime hq_dvd_diff hq_ndiv_diff
(hS0_not_sq hq_prime hq_dvd_diff hq_ndiv_diff)
have : (3 : ℕ) ≤ 1 := le_trans h_lower h_upper
omega
/--
`NoSqOnS0 c b` を入力にした `FLT_d3_by_padicValNat` の派生版。
`Main` 内の NoSq 系 canonical entry。
以後の adapter 群は、最終的にこの定理へ接続する。
-/
theorem FLT_d3_by_padicValNat_of_NoSqOnS0 {a b c : ℕ}
(ha : 0 < a) (hb : 0 < b) (hc : 0 < c)
(hab : Nat.Coprime a b)
(hNoSq : NoSqOnS0 c b) :
a ^ 3 + b ^ 3 ≠ c ^ 3 := by
apply FLT_d3_by_padicValNat ha hb hc hab
intro q hq hq_dvd_diff hq_ndiv_diff
exact hS0_not_sq_of_NoSqOnS0 (c := c) (b := b) hNoSq hq hq_dvd_diff hq_ndiv_diff
end CoreRoute
section NoSqRecoveryAdapters
/--
phase-04: 非例外調和条件(skeleton)から
`AllNonLiftableOnS0` -> `NoSqOnS0` を経由して供給する版。
-/
theorem FLT_d3_by_padicValNat_of_nonExceptionalHarmonic {a b c : ℕ}
(ha : 0 < a) (hb : 0 < b) (hc : 0 < c)
(hab : Nat.Coprime a b)
(hNH : NonExceptionalHarmonicOnS0 c b) :
a ^ 3 + b ^ 3 ≠ c ^ 3 := by
have hAll : AllNonLiftableOnS0 c b :=
AllNonLiftableOnS0_of_nonExceptionalHarmonic hNH
have hNoSq : NoSqOnS0 c b := NoSqOnS0_of_AllNonLiftableOnS0 hAll
exact FLT_d3_by_padicValNat_of_NoSqOnS0 ha hb hc hab
hNoSq
/--
phase-04: `ExceptThree + mod3分離 + harmonic witness` から
`NoSqOnS0` を経由して供給する版。
現在は互換レイヤー(推奨は `..._coprime` 系)。
-/
theorem FLT_d3_by_padicValNat_of_exceptThree_mod3_separated_harmonic {a b c : ℕ}
(ha : 0 < a) (hb : 0 < b) (hc : 0 < c)
(hab : Nat.Coprime a b)
(hHarm : ∃ u : PetalCoreUnit, HarmonicPoint u ∧ ¬ isExceptionalPhase u)
(hSuppEx3 : S0PrimeSupportExceptThree c b)
(hNonLift : ∀ q : ℕ, NonLiftableS0 c b q)
(hc_nz : c % 3 ≠ 0)
(hb_nz : b % 3 ≠ 0)
(hsep : c % 3 ≠ b % 3) :
a ^ 3 + b ^ 3 ≠ c ^ 3 := by
have hNoSq : NoSqOnS0 c b :=
NoSqOnS0_of_exceptThree_mod3_separated_harmonic
hHarm hSuppEx3 hNonLift hc_nz hb_nz hsep
exact FLT_d3_by_padicValNat_of_NoSqOnS0 ha hb hc hab hNoSq
/--
phase-08: `hSuppEx3 + hNonLift + mod3分離` から
`NoSqOnS0` を直接回復して供給する版。
現在は互換レイヤー(推奨は `..._coprime` 系)。
-/
theorem FLT_d3_by_padicValNat_of_support_nonLiftable_mod3_separated {a b c : ℕ}
(ha : 0 < a) (hb : 0 < b) (hc : 0 < c)
(hab : Nat.Coprime a b)
(hSuppEx3 : S0PrimeSupportExceptThree c b)
(hNonLift : ∀ q : ℕ, NonLiftableS0 c b q)
(hc_nz : c % 3 ≠ 0)
(hb_nz : b % 3 ≠ 0)
(hsep : c % 3 ≠ b % 3) :
a ^ 3 + b ^ 3 ≠ c ^ 3 := by
have hNoSq : NoSqOnS0 c b :=
NoSqOnS0_of_support_nonLiftable_mod3_separated
hSuppEx3 hNonLift hc_nz hb_nz hsep
exact FLT_d3_by_padicValNat_of_NoSqOnS0 ha hb hc hab hNoSq
/--
`hNonLift` と `coprime(c,b)` から `NoSqOnS0` を回復して供給する版。
`mod3` 分離仮定を使わない。
-/
theorem FLT_d3_by_padicValNat_of_support_nonLiftable_coprime {a b c : ℕ}
(ha : 0 < a) (hb : 0 < b) (hc : 0 < c)
(hab : Nat.Coprime a b)
(hbc : b ≤ c)
(hcb_coprime : Nat.Coprime c b)
(hNonLift : ∀ q : ℕ, NonLiftableS0 c b q) :
a ^ 3 + b ^ 3 ≠ c ^ 3 := by
have hNoSq : NoSqOnS0 c b :=
NoSqOnS0_of_support_nonLiftable_coprime hbc hcb_coprime hNonLift
exact FLT_d3_by_padicValNat_of_NoSqOnS0 ha hb hc hab hNoSq
/--
`hNonLiftAll` と `coprime(c,b)` から直接供給する共通入口。
`NoSqOnS0` を直接持たない場合の canonical recovery point。
`nonLiftable` family から `NoSqOnS0` を回復する役をこの定理に集約する。
-/
theorem FLT_d3_by_padicValNat_of_nonLiftable_coprimeSupport {a b c : ℕ}
(ha : 0 < a) (hb : 0 < b) (hc : 0 < c)
(hab : Nat.Coprime a b)
(hbc : b < c)
(hcb_coprime : Nat.Coprime c b)
(hNonLiftAll : ∀ q : ℕ, NonLiftableS0 c b q) :
a ^ 3 + b ^ 3 ≠ c ^ 3 := by
exact FLT_d3_by_padicValNat_of_support_nonLiftable_coprime
ha hb hc hab hbc.le hcb_coprime hNonLiftAll
/--
phase-08: `NoSqOnS0` を分岐軸にした A+B 合流版。
- A: `NoSqOnS0 c b` なら `...of_NoSqOnS0`
- B: `¬ NoSqOnS0 c b` でも `coprime(c,b) + hNonLift` から供給可能
-/
theorem FLT_d3_by_padicValNat_by_cases_NoSq {a b c : ℕ}
(ha : 0 < a) (hb : 0 < b) (hc : 0 < c)
(hab : Nat.Coprime a b)
(hbc : b ≤ c)
(hcb_coprime : Nat.Coprime c b)
(hNonLift : ∀ q : ℕ, NonLiftableS0 c b q) :
a ^ 3 + b ^ 3 ≠ c ^ 3 := by
by_cases hNoSq : NoSqOnS0 c b
· exact FLT_d3_by_padicValNat_of_NoSqOnS0 ha hb hc hab hNoSq
· exact FLT_d3_by_padicValNat_of_support_nonLiftable_coprime
ha hb hc hab hbc hcb_coprime hNonLift
/--
phase-04: `harmonic envelope + nonLiftable family` から
`AllNonLiftableOnS0` を経由して供給する版。
-/
theorem FLT_d3_by_padicValNat_of_harmonicEnvelope_nonLiftable {a b c : ℕ}
(ha : 0 < a) (hb : 0 < b) (hc : 0 < c)
(hab : Nat.Coprime a b)
(hbc : b < c)
(hHarm : ∃ u : PetalCoreUnit, HarmonicPoint u ∧ ¬ isExceptionalPhase u)
(hNoExcAll : ∀ x : CounterexampleInput, ¬ exceptionalPhaseGate x)
(hSuppEx3 : S0PrimeSupportExceptThree c b)
(hNonLiftAll : ∀ q : ℕ, NonLiftableS0 c b q)
(hc_nz : c % 3 ≠ 0)
(hb_nz : b % 3 ≠ 0)
(hsep : c % 3 ≠ b % 3) :
a ^ 3 + b ^ 3 ≠ c ^ 3 := by
have hAll : AllNonLiftableOnS0 c b :=
allNonLiftableOnS0_of_harmonicEnvelope_nonLiftable hbc
hasPhaseUnitInfrastructure hHarm hNoExcAll
hSuppEx3 hNonLiftAll hc_nz hb_nz hsep
have hNoSq : NoSqOnS0 c b := NoSqOnS0_of_AllNonLiftableOnS0 hAll
exact FLT_d3_by_padicValNat_of_NoSqOnS0 ha hb hc hab hNoSq
/--
phase-05: `hSuppEx3` を `Coprime c b` から自動生成して
`harmonicEnvelope_nonLiftable` 版へ接続する。
-/
theorem FLT_d3_by_padicValNat_of_harmonicEnvelope_nonLiftable_coprimeSupport {a b c : ℕ}
(ha : 0 < a) (hb : 0 < b) (hc : 0 < c)
(hab : Nat.Coprime a b)
(hbc : b < c)
(hcb_coprime : Nat.Coprime c b)
(hNonLiftAll : ∀ q : ℕ, NonLiftableS0 c b q) :
a ^ 3 + b ^ 3 ≠ c ^ 3 := by
exact FLT_d3_by_padicValNat_of_nonLiftable_coprimeSupport
ha hb hc hab hbc hcb_coprime hNonLiftAll
end NoSqRecoveryAdapters
section DescentAdapters
/--
phase-05: `classifyLift = impossible` family から `hNonLiftAll` を生成して
`harmonicEnvelope_nonLiftable_coprimeSupport` 版へ接続する。
-/
theorem FLT_d3_by_padicValNat_of_harmonicEnvelope_classify_coprimeSupport {a b c : ℕ}
(ha : 0 < a) (hb : 0 < b) (hc : 0 < c)
(hab : Nat.Coprime a b)
(hbc : b < c)
(hcb_coprime : Nat.Coprime c b)
(hClassPrim :
∀ {q : ℕ}, PrimitiveOnS0 c b q →
classifyLift ({ c := c, b := b, q := q } : CounterexampleInput) = LiftStatus.impossible)
:
a ^ 3 + b ^ 3 ≠ c ^ 3 := by
have hNonLiftAll : ∀ q : ℕ, NonLiftableS0 c b q :=
nonLiftableS0_family_of_classifyLift_impossible hbc hClassPrim
exact FLT_d3_by_padicValNat_of_nonLiftable_coprimeSupport
ha hb hc hab hbc hcb_coprime hNonLiftAll
/--
phase-10 橋渡し入口:
下降法側から `PrimitiveOnS0 -> classifyLift = impossible` を供給できれば、
`NonLiftable` 経由で FLT 入口に接続できる。
descent 系の canonical bridge。
`DescentClassifyImpossibleOnPrimitive` を `nonLiftable` family へ落とし、
そこから先は NoSq recovery 側へ委譲する。
-/
theorem FLT_d3_by_padicValNat_of_descentClassify_coprimeSupport {a b c : ℕ}
(ha : 0 < a) (hb : 0 < b) (hc : 0 < c)
(hab : Nat.Coprime a b)
(hbc : b < c)
(hcb_coprime : Nat.Coprime c b)
(hDescentClass : DescentClassifyImpossibleOnPrimitive c b) :
a ^ 3 + b ^ 3 ≠ c ^ 3 := by
have hNonLiftAll : ∀ q : ℕ, NonLiftableS0 c b q :=
nonLiftableS0_family_of_descentClassify hbc hDescentClass
exact FLT_d3_by_padicValNat_of_nonLiftable_coprimeSupport
ha hb hc hab hbc hcb_coprime hNonLiftAll
/--
phase-11 入口:
`PrimitiveOnS0` 上の strict descent ステップを与え、
`NoSq` 仮定なしで `GEisenstein` kernel を組み立てて接続する。
-/
theorem FLT_d3_by_padicValNat_of_harmonicEnvelope_descentStep_coprimeSupport {a b c : ℕ}
(ha : 0 < a) (hb : 0 < b) (hc : 0 < c)
(hab : Nat.Coprime a b)
(hbc : b < c)
(hcb_coprime : Nat.Coprime c b)
(hInfra : HasPhaseUnitInfrastructure)
(hHarm : ∃ u : PetalCoreUnit, HarmonicPoint u ∧ ¬ isExceptionalPhase u)
(hNoExcAll : ∀ x : CounterexampleInput, ¬ exceptionalPhaseGate x)
(hStep : PrimitiveSquareDescentStep c b) :
a ^ 3 + b ^ 3 ≠ c ^ 3 := by
let hCore : GEisensteinDescentCore c b :=
GEisensteinDescentCore_of_harmonicEnvelope_descentStep
hbc hInfra hHarm hNoExcAll hStep
let hIn : GEisensteinBaseInput c b := {
hbc := hbc
hcb_coprime := hcb_coprime
hCore := hCore
}
exact FLT_d3_by_padicValNat_of_descentClassify_coprimeSupport
ha hb hc hab hIn.hbc hIn.hcb_coprime hIn.toDescentBaseInput.hDescentClass
/--
phase-11 直結入口:
`strict descent + coprime(c,b)` から `NoSqOnS0` を回復して接続する。
-/
theorem FLT_d3_by_padicValNat_of_descentStep_coprimeSupport_direct {a b c : ℕ}
(ha : 0 < a) (hb : 0 < b) (hc : 0 < c)
(hab : Nat.Coprime a b)
(hbc : b < c)
(hcb_coprime : Nat.Coprime c b)
(hStep : PrimitiveSquareDescentStep c b) :
a ^ 3 + b ^ 3 ≠ c ^ 3 := by
have hNoSq : NoSqOnS0 c b :=
NoSqOnS0_of_descentStep_coprime hbc.le hcb_coprime hStep
exact FLT_d3_by_padicValNat_of_NoSqOnS0 ha hb hc hab hNoSq
/--
phase-11 入口(engine 入力版):
strict descent を構造体で受け取り、`GEisenstein` kernel 経由で接続する。
-/
theorem FLT_d3_by_padicValNat_of_harmonicEnvelope_descentEngine_coprimeSupport {a b c : ℕ}
(ha : 0 < a) (hb : 0 < b) (hc : 0 < c)
(hab : Nat.Coprime a b)
(hbc : b < c)
(hcb_coprime : Nat.Coprime c b)
(hInfra : HasPhaseUnitInfrastructure)
(hHarm : ∃ u : PetalCoreUnit, HarmonicPoint u ∧ ¬ isExceptionalPhase u)
(hNoExcAll : ∀ x : CounterexampleInput, ¬ exceptionalPhaseGate x)
(hEngine : PrimitiveSquareDescentEngine c b) :
a ^ 3 + b ^ 3 ≠ c ^ 3 := by
let hCore : GEisensteinDescentCore c b :=
GEisensteinDescentCore_of_harmonicEnvelope_descentEngine
hbc hInfra hHarm hNoExcAll hEngine
let hIn : GEisensteinBaseInput c b := {
hbc := hbc
hcb_coprime := hcb_coprime
hCore := hCore
}
exact FLT_d3_by_padicValNat_of_descentClassify_coprimeSupport
ha hb hc hab hIn.hbc hIn.hcb_coprime hIn.toDescentBaseInput.hDescentClass
/--
phase-11 直結入口(engine 版):
`descent engine + coprime(c,b)` から `NoSqOnS0` を回復して接続する。
-/
theorem FLT_d3_by_padicValNat_of_descentEngine_coprimeSupport_direct {a b c : ℕ}
(ha : 0 < a) (hb : 0 < b) (hc : 0 < c)
(hab : Nat.Coprime a b)
(hbc : b < c)
(hcb_coprime : Nat.Coprime c b)
(hEngine : PrimitiveSquareDescentEngine c b) :
a ^ 3 + b ^ 3 ≠ c ^ 3 := by
have hNoSq : NoSqOnS0 c b :=
NoSqOnS0_of_descentEngine_coprime hbc.le hcb_coprime hEngine
exact FLT_d3_by_padicValNat_of_NoSqOnS0 ha hb hc hab hNoSq
end DescentAdapters
section ProviderCompatibility
/--
phase-11 直結入口(reduce 版):
局所縮小関数 `reduce` から `NoSqOnS0` を回復して接続する。
-/
theorem FLT_d3_by_padicValNat_of_reduce_coprimeSupport_direct {a b c : ℕ}
(ha : 0 < a) (hb : 0 < b) (hc : 0 < c)
(hab : Nat.Coprime a b)
(hbc : b < c)
(hcb_coprime : Nat.Coprime c b)
(reduce : ∀ {q : ℕ}, PrimitiveOnS0 c b q → q ^ 2 ∣ S0_nat c b →
PrimitiveSquareReduction c b q) :
a ^ 3 + b ^ 3 ≠ c ^ 3 := by
have hNoSq : NoSqOnS0 c b :=
NoSqOnS0_of_reduce_coprime hbc.le hcb_coprime reduce
exact FLT_d3_by_padicValNat_of_NoSqOnS0 ha hb hc hab hNoSq
/--
phase-11 最小 reduce 実装確認:
`step` から `reduce` を生成して、reduce 直結入口へ流す。
-/
theorem FLT_d3_by_padicValNat_of_step_via_reduce_coprimeSupport_direct {a b c : ℕ}
(ha : 0 < a) (hb : 0 < b) (hc : 0 < c)
(hab : Nat.Coprime a b)
(hbc : b < c)
(hcb_coprime : Nat.Coprime c b)
(hStep : PrimitiveSquareDescentStep c b) :
a ^ 3 + b ^ 3 ≠ c ^ 3 := by
exact FLT_d3_by_padicValNat_of_reduce_coprimeSupport_direct
ha hb hc hab hbc hcb_coprime
(primitiveSquareReduce_of_step hStep)
/--
`reduce` 候補(数論系)を直接刺す入口。
-/
theorem FLT_d3_by_padicValNat_of_numberTheoryReduce_coprimeSupport_direct {a b c : ℕ}
(ha : 0 < a) (hb : 0 < b) (hc : 0 < c)
(hab : Nat.Coprime a b)
(hbc : b < c)
(hcb_coprime : Nat.Coprime c b)
(reduceNT : NumberTheoryReduce c b) :
a ^ 3 + b ^ 3 ≠ c ^ 3 := by
exact FLT_d3_by_padicValNat_of_reduce_coprimeSupport_direct
ha hb hc hab hbc hcb_coprime reduceNT
/--
`reduce` 候補(トロミノ/幾何系)を直接刺す入口。
-/
theorem FLT_d3_by_padicValNat_of_trominoReduce_coprimeSupport_direct {a b c : ℕ}
(ha : 0 < a) (hb : 0 < b) (hc : 0 < c)
(hab : Nat.Coprime a b)
(hbc : b < c)
(hcb_coprime : Nat.Coprime c b)
(reduceGeom : TrominoReduce c b) :
a ^ 3 + b ^ 3 ≠ c ^ 3 := by
exact FLT_d3_by_padicValNat_of_reduce_coprimeSupport_direct
ha hb hc hab hbc hcb_coprime reduceGeom
/--
数論系ルート専用入口:
`PrimitiveSquareDescentStep` を数論 `reduce` として解釈し、
`numberTheoryReduce` 直結入口へ接続する。
-/
theorem FLT_d3_by_padicValNat_of_numberTheoryStep_coprimeSupport_direct {a b c : ℕ}
(ha : 0 < a) (hb : 0 < b) (hc : 0 < c)
(hab : Nat.Coprime a b)
(hbc : b < c)
(hcb_coprime : Nat.Coprime c b)
(hStep : PrimitiveSquareDescentStep c b) :
a ^ 3 + b ^ 3 ≠ c ^ 3 := by
exact FLT_d3_by_padicValNat_of_numberTheoryReduce_coprimeSupport_direct
ha hb hc hab hbc hcb_coprime (numberTheoryReduce_of_step hStep)
/--
数論系最小実装(`numberTheoryReduce_basic`)を使う入口。
-/
theorem FLT_d3_by_padicValNat_of_numberTheoryReduce_basic_coprimeSupport_direct {a b c : ℕ}
(ha : 0 < a) (hb : 0 < b) (hc : 0 < c)
(hab : Nat.Coprime a b)
(hbc : b < c)
(hcb_coprime : Nat.Coprime c b)
(hStep : PrimitiveSquareDescentStep c b) :
a ^ 3 + b ^ 3 ≠ c ^ 3 := by
exact FLT_d3_by_padicValNat_of_numberTheoryReduce_coprimeSupport_direct
ha hb hc hab hbc hcb_coprime (numberTheoryReduce_basic hStep)
/--
数論状態遷移仕様 `StepExists`(global)から直接接続する入口。
-/
theorem FLT_d3_by_padicValNat_of_numberTheoryStepExists_coprimeSupport_direct {a b c : ℕ}
(ha : 0 < a) (hb : 0 < b) (hc : 0 < c)
(hab : Nat.Coprime a b)
(hbc : b < c)
(hcb_coprime : Nat.Coprime c b)
(hex : NumberTheoryDescentState.StepExists) :
a ^ 3 + b ^ 3 ≠ c ^ 3 := by
have hNoSq : NoSqOnS0 c b :=
NoSqOnS0_of_numberTheoryStepExists_coprime hex hbc hcb_coprime
exact FLT_d3_by_padicValNat_of_NoSqOnS0 ha hb hc hab hNoSq
/--
固定 `(c,b)` の数論状態遷移仕様 `StepExists` から接続する入口。
-/
theorem FLT_d3_by_padicValNat_of_numberTheoryStepExistsOn_coprimeSupport_direct {a b c : ℕ}
(ha : 0 < a) (hb : 0 < b) (hc : 0 < c)
(hab : Nat.Coprime a b)
(hbc : b < c)
(hcb_coprime : Nat.Coprime c b)
(hex : NumberTheoryDescentOn.StepExists c b) :
a ^ 3 + b ^ 3 ≠ c ^ 3 := by
have hNoSq : NoSqOnS0 c b := by
exact NoSqOnS0_of_numberTheoryHasKernel_coprime
(numberTheoryHasKernel_of_stepExistsOn hbc hcb_coprime hex)
hbc hcb_coprime
exact FLT_d3_by_padicValNat_of_NoSqOnS0 ha hb hc hab hNoSq
/--
固定 `(c,b)` の数論 `step` から、`StepExistsOn` 経由で接続する入口。
-/
theorem FLT_d3_by_padicValNat_of_numberTheoryStepOn_coprimeSupport_direct {a b c : ℕ}
(ha : 0 < a) (hb : 0 < b) (hc : 0 < c)
(hab : Nat.Coprime a b)
(hbc : b < c)
(hcb_coprime : Nat.Coprime c b)
(hStep : PrimitiveSquareDescentStep c b) :
a ^ 3 + b ^ 3 ≠ c ^ 3 := by
have hNoSq : NoSqOnS0 c b := by
exact NoSqOnS0_of_numberTheoryHasKernel_coprime
(numberTheoryHasKernel_of_step hStep) hbc hcb_coprime
exact FLT_d3_by_padicValNat_of_NoSqOnS0 ha hb hc hab hNoSq
/--
固定 `(c,b)` の数論 `reduce` から、`StepExistsOn` 経由で接続する入口。
-/
theorem FLT_d3_by_padicValNat_of_numberTheoryReduceOn_coprimeSupport_direct {a b c : ℕ}
(ha : 0 < a) (hb : 0 < b) (hc : 0 < c)
(hab : Nat.Coprime a b)
(hbc : b < c)
(hcb_coprime : Nat.Coprime c b)
(reduceNT : NumberTheoryReduce c b) :
a ^ 3 + b ^ 3 ≠ c ^ 3 := by
have hNoSq : NoSqOnS0 c b := by
exact NoSqOnS0_of_numberTheoryHasKernel_coprime
(numberTheoryHasKernel_of_reduce reduceNT) hbc hcb_coprime
exact FLT_d3_by_padicValNat_of_NoSqOnS0 ha hb hc hab hNoSq
/--
固定 `(c,b)` の数論 `ReductionKernel` から、`StepExistsOn` 経由で接続する入口。
-/
theorem FLT_d3_by_padicValNat_of_numberTheoryKernel_coprimeSupport_direct {a b c : ℕ}
(ha : 0 < a) (hb : 0 < b) (hc : 0 < c)
(hab : Nat.Coprime a b)
(hbc : b < c)
(hcb_coprime : Nat.Coprime c b)
(ker : NumberTheoryDescentOn.ReductionKernel c b) :
a ^ 3 + b ^ 3 ≠ c ^ 3 := by
have hNoSq : NoSqOnS0 c b := by
exact NoSqOnS0_of_numberTheoryHasKernel_coprime ⟨ker⟩ hbc hcb_coprime
exact FLT_d3_by_padicValNat_of_NoSqOnS0 ha hb hc hab hNoSq
/--
固定 `(c,b)` の数論 kernel の存在だけを受ける入口。
-/
theorem FLT_d3_by_padicValNat_of_numberTheoryHasKernel_coprimeSupport_direct {a b c : ℕ}
(ha : 0 < a) (hb : 0 < b) (hc : 0 < c)
(hab : Nat.Coprime a b)
(hbc : b < c)
(hcb_coprime : Nat.Coprime c b)
(hker : Nonempty (NumberTheoryDescentOn.ReductionKernel c b)) :
a ^ 3 + b ^ 3 ≠ c ^ 3 := by
rcases hker with ⟨ker⟩
exact FLT_d3_by_padicValNat_of_numberTheoryKernel_coprimeSupport_direct
ha hb hc hab hbc hcb_coprime ker
/--
数論 kernel provider(全 `(c,b)` 供給)から接続する入口。
-/
theorem FLT_d3_by_padicValNat_of_numberTheoryKernelProvider_coprimeSupport_direct {a b c : ℕ}
(ha : 0 < a) (hb : 0 < b) (hc : 0 < c)
(hab : Nat.Coprime a b)
(hbc : b < c)
(hcb_coprime : Nat.Coprime c b)
(prov : NumberTheoryKernelProvider) :
a ^ 3 + b ^ 3 ≠ c ^ 3 := by
have hNoSq : NoSqOnS0 c b :=
NoSqOnS0_of_numberTheoryKernelProvider prov hbc hcb_coprime
exact FLT_d3_by_padicValNat_of_NoSqOnS0 ha hb hc hab hNoSq
/--
数論 kernel family(全 `(c,b)` で `ReductionKernel` 存在)を直接受ける入口。
-/
theorem FLT_d3_by_padicValNat_of_numberTheoryHasKernelFamily_coprimeSupport_direct
{a b c : ℕ}
(ha : 0 < a) (hb : 0 < b) (hc : 0 < c)
(hab : Nat.Coprime a b)
(hbc : b < c)
(hcb_coprime : Nat.Coprime c b)
(hasKernel :
∀ {c b : ℕ}, b < c → Nat.Coprime c b →
Nonempty (NumberTheoryDescentOn.ReductionKernel c b)) :
a ^ 3 + b ^ 3 ≠ c ^ 3 := by
have hNoSq : NoSqOnS0 c b :=
NoSqOnS0_of_numberTheoryHasKernelFamily hbc hcb_coprime hasKernel
exact FLT_d3_by_padicValNat_of_NoSqOnS0 ha hb hc hab hNoSq
/--
数論 step provider(全 `(c,b)` で `PrimitiveSquareDescentStep` 供給)から接続する入口。
-/
theorem FLT_d3_by_padicValNat_of_numberTheoryStepProvider_coprimeSupport_direct {a b c : ℕ}
(ha : 0 < a) (hb : 0 < b) (hc : 0 < c)
(hab : Nat.Coprime a b)
(hbc : b < c)
(hcb_coprime : Nat.Coprime c b)
(provStep : NumberTheoryStepProvider) :
a ^ 3 + b ^ 3 ≠ c ^ 3 := by
have hNoSq : NoSqOnS0 c b :=
NoSqOnS0_of_numberTheoryStepProvider provStep hbc hcb_coprime
exact FLT_d3_by_padicValNat_of_NoSqOnS0 ha hb hc hab hNoSq
/--
数論 step family(全 `(c,b)` で `PrimitiveSquareDescentStep` 供給)を直接受ける入口。
-/
theorem FLT_d3_by_padicValNat_of_numberTheoryHasStepFamily_coprimeSupport_direct
{a b c : ℕ}
(ha : 0 < a) (hb : 0 < b) (hc : 0 < c)
(hab : Nat.Coprime a b)
(hbc : b < c)
(hcb_coprime : Nat.Coprime c b)
(hasStep :
∀ {c b : ℕ}, b < c → Nat.Coprime c b →
PrimitiveSquareDescentStep c b) :
a ^ 3 + b ^ 3 ≠ c ^ 3 := by
have hNoSq : NoSqOnS0 c b :=
NoSqOnS0_of_numberTheoryHasStepFamily hbc hcb_coprime hasStep
exact FLT_d3_by_padicValNat_of_NoSqOnS0 ha hb hc hab hNoSq
/--
数論 reduce provider(全 `(c,b)` で `NumberTheoryReduce` 供給)から接続する入口。
-/
theorem FLT_d3_by_padicValNat_of_numberTheoryReduceProvider_coprimeSupport_direct {a b c : ℕ}
(ha : 0 < a) (hb : 0 < b) (hc : 0 < c)
(hab : Nat.Coprime a b)
(hbc : b < c)
(hcb_coprime : Nat.Coprime c b)
(provReduce : NumberTheoryReduceProvider) :
a ^ 3 + b ^ 3 ≠ c ^ 3 := by
have hNoSq : NoSqOnS0 c b :=
NoSqOnS0_of_numberTheoryReduceProvider provReduce hbc hcb_coprime
exact FLT_d3_by_padicValNat_of_NoSqOnS0 ha hb hc hab hNoSq
/--
数論 reduce family(全 `(c,b)` で `NumberTheoryReduce` 供給)を直接受ける入口。
-/
theorem FLT_d3_by_padicValNat_of_numberTheoryHasReduceFamily_coprimeSupport_direct
{a b c : ℕ}
(ha : 0 < a) (hb : 0 < b) (hc : 0 < c)
(hab : Nat.Coprime a b)
(hbc : b < c)
(hcb_coprime : Nat.Coprime c b)
(hasReduce :
∀ {c b : ℕ}, b < c → Nat.Coprime c b →
NumberTheoryReduce c b) :
a ^ 3 + b ^ 3 ≠ c ^ 3 := by
have hNoSq : NoSqOnS0 c b :=
NoSqOnS0_of_numberTheoryHasReduceFamily hbc hcb_coprime hasReduce
exact FLT_d3_by_padicValNat_of_NoSqOnS0 ha hb hc hab hNoSq
/--
数論 stepExists provider(全 `(c,b)` で `StepExistsOn` 供給)から接続する入口。
-/
theorem FLT_d3_by_padicValNat_of_numberTheoryStepExistsProvider_coprimeSupport_direct
{a b c : ℕ}
(ha : 0 < a) (hb : 0 < b) (hc : 0 < c)
(hab : Nat.Coprime a b)
(hbc : b < c)
(hcb_coprime : Nat.Coprime c b)
(provExists : NumberTheoryStepExistsProvider) :
a ^ 3 + b ^ 3 ≠ c ^ 3 := by
have hNoSq : NoSqOnS0 c b :=
NoSqOnS0_of_numberTheoryStepExistsProvider provExists hbc hcb_coprime
exact FLT_d3_by_padicValNat_of_NoSqOnS0 ha hb hc hab hNoSq
/--
数論 stepExists family(全 `(c,b)` で `StepExistsOn` 供給)を直接受ける入口。
-/
theorem FLT_d3_by_padicValNat_of_numberTheoryHasStepExistsFamily_coprimeSupport_direct
{a b c : ℕ}
(ha : 0 < a) (hb : 0 < b) (hc : 0 < c)
(hab : Nat.Coprime a b)
(hbc : b < c)
(hcb_coprime : Nat.Coprime c b)
(hasStepExists :
∀ {c b : ℕ}, b < c → Nat.Coprime c b →
NumberTheoryDescentOn.StepExists c b) :
a ^ 3 + b ^ 3 ≠ c ^ 3 := by
have hNoSq : NoSqOnS0 c b :=
NoSqOnS0_of_numberTheoryHasStepExistsFamily hbc hcb_coprime hasStepExists
exact FLT_d3_by_padicValNat_of_NoSqOnS0 ha hb hc hab hNoSq
/--
数論 localReduce provider(全 `(c,b)` で `LocalReduce` 供給)から接続する入口。
-/
theorem FLT_d3_by_padicValNat_of_numberTheoryLocalReduceProvider_coprimeSupport_direct
{a b c : ℕ}
(ha : 0 < a) (hb : 0 < b) (hc : 0 < c)
(hab : Nat.Coprime a b)
(hbc : b < c)
(hcb_coprime : Nat.Coprime c b)
(provLocal : NumberTheoryLocalReduceProvider) :
a ^ 3 + b ^ 3 ≠ c ^ 3 := by
have hNoSq : NoSqOnS0 c b :=
NoSqOnS0_of_numberTheoryLocalReduceProvider provLocal hbc hcb_coprime
exact FLT_d3_by_padicValNat_of_NoSqOnS0 ha hb hc hab hNoSq
/--
数論 localReduce family(全 `(c,b)` で `LocalReduce` 供給)を直接受ける入口。
-/
theorem FLT_d3_by_padicValNat_of_numberTheoryHasLocalReduceFamily_coprimeSupport_direct
{a b c : ℕ}
(ha : 0 < a) (hb : 0 < b) (hc : 0 < c)
(hab : Nat.Coprime a b)
(hbc : b < c)
(hcb_coprime : Nat.Coprime c b)
(hasLocalReduce :
∀ {c b : ℕ}, b < c → Nat.Coprime c b →
NumberTheoryDescentOn.LocalReduce c b) :
a ^ 3 + b ^ 3 ≠ c ^ 3 := by
have hNoSq : NoSqOnS0 c b :=
NoSqOnS0_of_numberTheoryHasLocalReduceFamily hbc hcb_coprime hasLocalReduce
exact FLT_d3_by_padicValNat_of_NoSqOnS0 ha hb hc hab hNoSq
/--
数論 nonLiftable family(全 `(c,b,q)` で `NonLiftableS0`)を直接受ける入口。
-/
theorem FLT_d3_by_padicValNat_of_numberTheoryHasNonLiftableFamily_coprimeSupport_direct
{a b c : ℕ}
(ha : 0 < a) (hb : 0 < b) (hc : 0 < c)
(hab : Nat.Coprime a b)
(hbc : b < c)
(hcb_coprime : Nat.Coprime c b)
(hasNonLift :
∀ {c b : ℕ}, b < c → Nat.Coprime c b →
∀ q : ℕ, NonLiftableS0 c b q) :
a ^ 3 + b ^ 3 ≠ c ^ 3 := by
have hNoSq : NoSqOnS0 c b :=
NoSqOnS0_of_numberTheoryHasNonLiftableFamily hbc hcb_coprime hasNonLift
exact FLT_d3_by_padicValNat_of_NoSqOnS0 ha hb hc hab hNoSq
/--
数論 NoSq family(全 `(c,b)` で `NoSqOnS0`)を直接受ける入口。
-/
theorem FLT_d3_by_padicValNat_of_numberTheoryHasNoSqFamily_coprimeSupport_direct
{a b c : ℕ}
(ha : 0 < a) (hb : 0 < b) (hc : 0 < c)
(hab : Nat.Coprime a b)
(hbc : b < c)
(hcb_coprime : Nat.Coprime c b)
(hasNoSq :
∀ {c b : ℕ}, b < c → Nat.Coprime c b →
NoSqOnS0 c b) :
a ^ 3 + b ^ 3 ≠ c ^ 3 := by
have hNoSq : NoSqOnS0 c b :=
NoSqOnS0_of_numberTheoryHasNoSqFamily hbc hcb_coprime hasNoSq
exact FLT_d3_by_padicValNat_of_NoSqOnS0 ha hb hc hab hNoSq
/--
トロミノ系 `NoSq` family(全 `(c,b)`)から接続する入口。
`TriominoFLT` 側で `hasNoSq` を構成したら、この入口にそのまま接続する。
-/
theorem FLT_d3_by_padicValNat_of_triominoHasNoSqFamily_coprimeSupport_direct
{a b c : ℕ}
(ha : 0 < a) (hb : 0 < b) (hc : 0 < c)
(hab : Nat.Coprime a b)
(hbc : b < c)
(hcb_coprime : Nat.Coprime c b)
(hasNoSqTriomino :
∀ {c b : ℕ}, b < c → Nat.Coprime c b →
NoSqOnS0 c b) :
a ^ 3 + b ^ 3 ≠ c ^ 3 := by
exact FLT_d3_by_padicValNat_of_numberTheoryHasNoSqFamily_coprimeSupport_direct
ha hb hc hab hbc hcb_coprime hasNoSqTriomino
/--
トロミノ系 `NonLiftable` family(全 `(c,b,q)`)から接続する入口。
-/
theorem FLT_d3_by_padicValNat_of_triominoHasNonLiftableFamily_coprimeSupport_direct
{a b c : ℕ}
(ha : 0 < a) (hb : 0 < b) (hc : 0 < c)
(hab : Nat.Coprime a b)
(hbc : b < c)
(hcb_coprime : Nat.Coprime c b)
(hasNonLiftTriomino :
∀ {c b : ℕ}, b < c → Nat.Coprime c b →
∀ q : ℕ, NonLiftableS0 c b q) :
a ^ 3 + b ^ 3 ≠ c ^ 3 := by
exact FLT_d3_by_padicValNat_of_numberTheoryHasNonLiftableFamily_coprimeSupport_direct
ha hb hc hab hbc hcb_coprime hasNonLiftTriomino
/--
固定 `(c,b)` の数論ローカル降下入力 (`LocalReduce`) から接続する入口。
-/
theorem FLT_d3_by_padicValNat_of_numberTheoryLocalReduceOn_coprimeSupport_direct {a b c : ℕ}
(ha : 0 < a) (hb : 0 < b) (hc : 0 < c)
(hab : Nat.Coprime a b)
(hbc : b < c)
(hcb_coprime : Nat.Coprime c b)
(reduce : NumberTheoryDescentOn.LocalReduce c b) :
a ^ 3 + b ^ 3 ≠ c ^ 3 := by
exact FLT_d3_by_padicValNat_of_numberTheoryHasKernel_coprimeSupport_direct
ha hb hc hab hbc hcb_coprime
(numberTheoryHasKernel_of_localReduce hbc hcb_coprime reduce)
/--
互換入口:
旧 global 版 `LocalReduce` を受ける場合は従来の global `StepExists` 入口に委譲する。
-/
theorem FLT_d3_by_padicValNat_of_numberTheoryLocalReduce_coprimeSupport_direct {a b c : ℕ}
(ha : 0 < a) (hb : 0 < b) (hc : 0 < c)
(hab : Nat.Coprime a b)
(hbc : b < c)
(hcb_coprime : Nat.Coprime c b)
(reduce : NumberTheoryDescentState.LocalReduce) :
a ^ 3 + b ^ 3 ≠ c ^ 3 := by
have hex : NumberTheoryDescentState.StepExists :=
NumberTheoryDescentState.stepExists_of_localReduce reduce
exact FLT_d3_by_padicValNat_of_numberTheoryStepExists_coprimeSupport_direct
ha hb hc hab hbc hcb_coprime hex
end ProviderCompatibility
section DescentBridgeAdapters
/--
GEisenstein 下降法コア述語を直接受ける入口。
-/
theorem FLT_d3_by_padicValNat_of_GEisensteinCore_coprimeSupport {a b c : ℕ}
(ha : 0 < a) (hb : 0 < b) (hc : 0 < c)
(hab : Nat.Coprime a b)
(hbc : b < c)
(hcb_coprime : Nat.Coprime c b)
(hGECore : GEisensteinDescentCore c b) :
a ^ 3 + b ^ 3 ≠ c ^ 3 := by
let hIn : GEisensteinBaseInput c b := {
hbc := hbc
hcb_coprime := hcb_coprime
hCore := hGECore
}
exact FLT_d3_by_padicValNat_of_descentClassify_coprimeSupport
ha hb hc hab hIn.hbc hIn.hcb_coprime hIn.toDescentBaseInput.hDescentClass
/--
`GEisensteinCore` に加えて停止到達情報を受け取る補助版。
現段階では `core` 版に委譲し、到達情報は将来拡張の受け口として保持する。
-/
theorem FLT_d3_by_padicValNat_of_GEisensteinCore_with_reachability_coprimeSupport
{a b c : ℕ}
(ha : 0 < a) (hb : 0 < b) (hc : 0 < c)
(hab : Nat.Coprime a b)
(hbc : b < c)
(hcb_coprime : Nat.Coprime c b)
(hGECore : GEisensteinDescentCore c b)
(_hReach :
∀ s : hGECore.frame.State,
∃ n : ℕ,
hGECore.frame.measure (GEisensteinDescentFrame.descend hGECore.frame s n) = 0) :
a ^ 3 + b ^ 3 ≠ c ^ 3 := by
exact FLT_d3_by_padicValNat_of_GEisensteinCore_coprimeSupport
ha hb hc hab hbc hcb_coprime hGECore
/--
`GEisenstein_descent_reaches_zero_of_core` を使って
reachability 受け口付き定理へ接続するラッパー。
-/
theorem FLT_d3_by_padicValNat_of_GEisensteinCore_via_reachability_coprimeSupport
{a b c : ℕ}
(ha : 0 < a) (hb : 0 < b) (hc : 0 < c)
(hab : Nat.Coprime a b)
(hbc : b < c)
(hcb_coprime : Nat.Coprime c b)
(hGECore : GEisensteinDescentCore c b) :
a ^ 3 + b ^ 3 ≠ c ^ 3 := by
have hReach :
∀ s : hGECore.frame.State,
∃ n : ℕ,
hGECore.frame.measure (GEisensteinDescentFrame.descend hGECore.frame s n) = 0 := by
intro s
exact GEisensteinDescentCore.exists_descend_measure_eq_zero_of_step_pred hGECore s
exact FLT_d3_by_padicValNat_of_GEisensteinCore_with_reachability_coprimeSupport
ha hb hc hab hbc hcb_coprime hGECore hReach
/--
`GEisensteinDescentCore` から、任意初期状態での停止到達(`measure = 0`)を取り出す API。
-/
theorem GEisenstein_descent_reaches_zero_of_core {c b : ℕ}
(hCore : GEisensteinDescentCore c b)
(s : hCore.frame.State) :
∃ n : ℕ,
hCore.frame.measure (GEisensteinDescentFrame.descend hCore.frame s n) = 0 := by
exact GEisensteinDescentCore.exists_descend_measure_eq_zero_of_step_pred hCore s
/--
`primitiveSized` 非empty core 橋の公開 API 版。
-/
theorem GEisenstein_descent_reaches_zero_of_descentClassify_primitiveSized
{c b q size : ℕ}
(hDescent : DescentClassifyImpossibleOnPrimitive c b)
(hPrim : PrimitiveOnS0 c b q)
(hsize : size ≤ q) :
∃ n : ℕ,
(primitiveSizedCandidateGEisensteinDescentFrame c b).measure
(GEisensteinDescentFrame.descend
(primitiveSizedCandidateGEisensteinDescentFrame c b)
(GEisensteinPrimitiveSizedCandidate.ofPrimitiveWithSize hPrim size hsize)
n) = 0 := by
exact exists_descend_measure_eq_zero_of_descentClassify_primitiveSized
hDescent hPrim size hsize
/--
`DescentBaseInput` を入口にした薄いラッパー。
`descentClassify` だけを持つ内部 compatibility entry。
公開の canonical entry は後段の `FLT_d3_by_padicValNat_of_GEisensteinBaseInput` とする。
-/
theorem FLT_d3_by_padicValNat_of_DescentBaseInput {a b c : ℕ}
(ha : 0 < a) (hb : 0 < b) (hc : 0 < c)
(hab : Nat.Coprime a b)
(hIn : DescentBaseInput c b) :
a ^ 3 + b ^ 3 ≠ c ^ 3 := by
exact FLT_d3_by_padicValNat_of_descentClassify_coprimeSupport
ha hb hc hab hIn.hbc hIn.hcb_coprime hIn.hDescentClass
/--
`GEisensteinBaseInput` を入口にした public canonical entry。
本件で「どの仮定を証明しに行くか」を追うときの基準点は、この定理の
入力束 `GEisensteinBaseInput` である。
-/