dalek-ed25519-verified/verification/Proofs
mrwulf 32d3c05495 Phase 2, decompress part 2a: fe conditional-select + THE SQUARE-ROOT CORE
(kernel-audited)

- fe_cond_assign_spec: the per-limb constant-time selection on field
  elements (real extracted code: five index_mut rounds over the u64
  select) keeps self iff the choice is 0 - the operation sqrt_ratio_i
  uses for both the root flip and the sign normalization. Walked with
  backfun-rewrite hygiene; the u64 model lemma restated locally
  (Proofs.Basic is a parallel root that clashes with ConstSpecs).
- sqrt_core: THE ALGEBRAIC HEART - for square u/v (witness x, v nonzero)
  the candidate r = (u*v^3)*(u*v^7)^((p-5)/8) satisfies v*r^2 = +/-u.
  The v-part of the exponent collapses by Fermat (8*(2^253-5) = 2(p-1));
  the residual x^((p-1)/2) is +/-1 by factoring its square. Exponent
  bookkeeping: (p-5)/8 = 2^252-3, (p-1)/2 = 2^254-10, all closed by
  norm_num after pow_mul merges.

Both certificates exact standard three. Full button green fresh.
Remaining: the sqrt_ratio_i walk composing these, from_bytes,
decompress_of_canonical.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-05 21:16:05 +02:00
..
AddSpec.lean field layer: 14 proofs pass, fieldImplementation axiom-clean 2026-07-02 14:17:44 +02:00
Basic.lean field layer: 14 proofs pass, fieldImplementation axiom-clean 2026-07-02 14:17:44 +02:00
CompressSpec.lean Phase 2, brick 1 complete: ed_compress_spec - compress emits the canonical 2026-07-05 13:33:58 +02:00
ConstSpecs.lean field layer: 14 proofs pass, fieldImplementation axiom-clean 2026-07-02 14:17:44 +02:00
DecompressSpec.lean Phase 2, decompress part 2a: fe conditional-select + THE SQUARE-ROOT CORE 2026-07-05 21:16:05 +02:00
Denote.lean field layer: 14 proofs pass, fieldImplementation axiom-clean 2026-07-02 14:17:44 +02:00
DsmLoopSpec.lean Double-scalar-mul proof campaign, bricks 1-3: table, digit step, loop 2026-07-04 15:30:18 +02:00
DsmMulSpec.lean NAF encoder proven end-to-end + the phase-1 double-scalar-mul apex 2026-07-04 16:52:06 +02:00
DsmNafLoadSpec.lean NAF campaign stages 1-2: LE load walks + the digit loop's arithmetic core 2026-07-04 15:30:18 +02:00
DsmNafLoopSpec.lean NAF encoder proven end-to-end + the phase-1 double-scalar-mul apex 2026-07-04 16:52:06 +02:00
DsmNafMath.lean NAF campaign stages 1-2: LE load walks + the digit loop's arithmetic core 2026-07-04 15:30:18 +02:00
DsmNafSpec.lean NAF encoder proven end-to-end + the phase-1 double-scalar-mul apex 2026-07-04 16:52:06 +02:00
DsmStepSpec.lean Double-scalar-mul proof campaign, bricks 1-3: table, digit step, loop 2026-07-04 15:30:18 +02:00
DsmTableSpec.lean Double-scalar-mul proof campaign, bricks 1-3: table, digit step, loop 2026-07-04 15:30:18 +02:00
EdAddAffNiels.lean group-law layer: complete twisted Edwards addition law proven 2026-07-02 14:50:42 +02:00
EdAddProjNiels.lean group-law layer: complete twisted Edwards addition law proven 2026-07-02 14:50:42 +02:00
EdConvert.lean group-law layer: complete twisted Edwards addition law proven 2026-07-02 14:50:42 +02:00
EdCurve.lean group-law layer: complete twisted Edwards addition law proven 2026-07-02 14:50:42 +02:00
EdDenote.lean group-law layer: complete twisted Edwards addition law proven 2026-07-02 14:50:42 +02:00
EdDouble.lean group-law layer: complete twisted Edwards addition law proven 2026-07-02 14:50:42 +02:00
EdMain.lean group-law layer: complete twisted Edwards addition law proven 2026-07-02 14:50:42 +02:00
FeQ.lean field layer: 14 proofs pass, fieldImplementation axiom-clean 2026-07-02 14:17:44 +02:00
Field.lean field layer: 14 proofs pass, fieldImplementation axiom-clean 2026-07-02 14:17:44 +02:00
FieldMain.lean field layer: 14 proofs pass, fieldImplementation axiom-clean 2026-07-02 14:17:44 +02:00
InvertSpec.lean field layer: 14 proofs pass, fieldImplementation axiom-clean 2026-07-02 14:17:44 +02:00
MulSpec.lean field layer: 14 proofs pass, fieldImplementation axiom-clean 2026-07-02 14:17:44 +02:00
P25519.lean field layer: 14 proofs pass, fieldImplementation axiom-clean 2026-07-02 14:17:44 +02:00
PointEqSpec.lean THE POINT-LEVEL VERIFICATION EQUATION: verify_accepts_iff_point_eq, 2026-07-05 18:27:25 +02:00
PointLiftSpec.lean PHASE 2 HALF-LIFT PROVEN: verify_accepts_iff_point, button-enforced 2026-07-05 16:06:23 +02:00
ReduceSpec.lean field layer: 14 proofs pass, fieldImplementation axiom-clean 2026-07-02 14:17:44 +02:00
ScalarAddSpec.lean Signature layer, first bricks: canonicity closure + hash-to-scalar foundation 2026-07-03 23:18:29 +02:00
ScalarBytesSpec.lean Hash-to-scalar PROVEN: from_bytes_wide_spec - Scalar::from_hash's reduction is exact mod l 2026-07-04 10:31:32 +02:00
ScalarDenote.lean Merge scalar into CurveField; integrate the verify glue against the model 2026-07-04 18:13:58 +02:00
ScalarFromBytesSpec.lean Hash-to-scalar PROVEN: from_bytes_wide_spec - Scalar::from_hash's reduction is exact mod l 2026-07-04 10:31:32 +02:00
ScalarFullMulSpec.lean Signature layer, first bricks: canonicity closure + hash-to-scalar foundation 2026-07-03 23:18:29 +02:00
ScalarLoop.lean scalar: generic loop-combinator lemmas (loop_step, range_next_lt/ge_spec) 2026-07-02 21:47:47 +02:00
ScalarMain.lean Signature layer, first bricks: canonicity closure + hash-to-scalar foundation 2026-07-03 23:18:29 +02:00
ScalarMontSpec.lean Signature layer, first bricks: canonicity closure + hash-to-scalar foundation 2026-07-03 23:18:29 +02:00
ScalarMulSpec.lean scalar layer: mul_internal proven — Montgomery frontier phase A down 2026-07-03 18:56:04 +02:00
ScalarPackSpec.lean Phase 2, half-lift prerequisite: the hash-to-scalar entry is canonical 2026-07-05 14:10:09 +02:00
ScalarReduceSpec.lean Signature layer, first bricks: canonicity closure + hash-to-scalar foundation 2026-07-03 23:18:29 +02:00
ScalarSubSpec.lean Signature layer, first bricks: canonicity closure + hash-to-scalar foundation 2026-07-03 23:18:29 +02:00
ScalarUnpackSpec.lean Hash-to-scalar PROVEN: from_bytes_wide_spec - Scalar::from_hash's reduction is exact mod l 2026-07-04 10:31:32 +02:00
ScalarWideSpec.lean Signature layer, first bricks: canonicity closure + hash-to-scalar foundation 2026-07-03 23:18:29 +02:00
SigApexSpec.lean THE SIGNATURE APEX: the EdDSA verification equation, proven and audited 2026-07-04 19:45:55 +02:00
Square2Spec.lean field layer: 14 proofs pass, fieldImplementation axiom-clean 2026-07-02 14:17:44 +02:00
SquareSpec.lean field layer: 14 proofs pass, fieldImplementation axiom-clean 2026-07-02 14:17:44 +02:00
SubNegSpec.lean field layer: 14 proofs pass, fieldImplementation axiom-clean 2026-07-02 14:17:44 +02:00
ToBytesMath.lean Phase 2, half-lift prerequisite: the hash-to-scalar entry is canonical 2026-07-05 14:10:09 +02:00
ToBytesSpec.lean Phase 2, brick 1a: to_bytes canonicity proven (to_bytes_spec, kernel-audited) 2026-07-05 13:10:43 +02:00