anza-ed25519-verified/verification/Proofs
mrwulf 931126218e Double-scalar-mul proof campaign, bricks 1-3: table, digit step, loop
Three new proof files over the CurveField extraction, composing the proven
group-law layer (no new axioms, no associativity assumed — computational
layering over the abstract `edAdd`):

- `Proofs/DsmTableSpec.lean` — `NafLookupTable5::from(&A)`: the 8 entries
  are valid `ProjectiveNielsPoint` caches of valid on-curve points denoting
  the odd multiples A, 3A, ..., 15A as the `edOdd` double-and-add recursion.
  7 explicit loop peels over edwards_as_projective_niels_spec /
  add_projniels_law / compl_as_extended_law, seeded by edwards_double_law.
  `select`: both masserts (x odd, x < 16) DISCHARGED — panic-freedom is
  proven, not assumed; post enumerates all 8 digit cases.

- `Proofs/DsmStepSpec.lean` — `proj_double_law` (the projective doubling
  denotes `edAdd P P`; same Z^2-scaled linear_combination discipline as the
  extended-coordinate law), `compl_as_projective_law` ((X:Z),(Y:T) to
  (XT:YZ:ZT) preserves the point), `naf_select_entry` (digit-indexed lookup
  returns THE entry: NafEntryOf r A ((x-1)/2)), and `dsm_step_p_law` /
  `dsm_step_b_law`: the three-way NAF digit step denotes `edDigit` — add
  the d-th odd multiple, add its negation, or pass through.

- `Proofs/DsmLoopSpec.lean` — the 256-iteration Straus loop by GENUINE
  induction on the counter (one symbolic body walk, no unrolling):
  `dsm_loop_spec` — from the identity, the loop returns a valid on-curve
  point denoting `dsmFold ... edId 256`, the abstract double-and-add fold
  of both digit arrays over the table points. Digit and table hypotheses
  are exactly what the NAF spec and naf_table_spec provide (layering).

check.sh wired: PROOFS + AUDIT_IMPORTS + 7 new CERTS (naf_table_spec,
naf_select_spec, proj_double_law, compl_as_projective_law, dsm_step_p_law,
dsm_step_b_law, dsm_loop_spec), each `#print axioms`-audited to exactly
[propext, Classical.choice, Quot.sound]. Full check.sh green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 15:07:56 +02:00
..
AddSpec.lean field layer: 14 proofs pass, fieldImplementation axiom-clean 2026-07-02 14:42:46 +02:00
Basic.lean field layer: 14 proofs pass, fieldImplementation axiom-clean 2026-07-02 14:42:46 +02:00
ConstSpecs.lean field layer: 14 proofs pass, fieldImplementation axiom-clean 2026-07-02 14:42:46 +02:00
Denote.lean field layer: 14 proofs pass, fieldImplementation axiom-clean 2026-07-02 14:42:46 +02:00
DsmLoopSpec.lean Double-scalar-mul proof campaign, bricks 1-3: table, digit step, loop 2026-07-04 15:07:56 +02:00
DsmStepSpec.lean Double-scalar-mul proof campaign, bricks 1-3: table, digit step, loop 2026-07-04 15:07:56 +02:00
DsmTableSpec.lean Double-scalar-mul proof campaign, bricks 1-3: table, digit step, loop 2026-07-04 15:07:56 +02:00
EdAddAffNiels.lean group-law layer: complete twisted Edwards addition law proven 2026-07-02 15:04:25 +02:00
EdAddProjNiels.lean group-law layer: complete twisted Edwards addition law proven 2026-07-02 15:04:25 +02:00
EdConvert.lean group-law layer: complete twisted Edwards addition law proven 2026-07-02 15:04:25 +02:00
EdCurve.lean group-law layer: complete twisted Edwards addition law proven 2026-07-02 15:04:25 +02:00
EdDenote.lean group-law layer: complete twisted Edwards addition law proven 2026-07-02 15:04:25 +02:00
EdDouble.lean group-law layer: complete twisted Edwards addition law proven 2026-07-02 15:04:25 +02:00
EdMain.lean group-law layer: complete twisted Edwards addition law proven 2026-07-02 15:04:25 +02:00
FeQ.lean field layer: 14 proofs pass, fieldImplementation axiom-clean 2026-07-02 14:42:46 +02:00
Field.lean field layer: 14 proofs pass, fieldImplementation axiom-clean 2026-07-02 14:42:46 +02:00
FieldMain.lean field layer: 14 proofs pass, fieldImplementation axiom-clean 2026-07-02 14:42:46 +02:00
InvertSpec.lean field layer: 14 proofs pass, fieldImplementation axiom-clean 2026-07-02 14:42:46 +02:00
MulSpec.lean field layer: 14 proofs pass, fieldImplementation axiom-clean 2026-07-02 14:42:46 +02:00
P25519.lean field layer: 14 proofs pass, fieldImplementation axiom-clean 2026-07-02 14:42:46 +02:00
ReduceSpec.lean field layer: 14 proofs pass, fieldImplementation axiom-clean 2026-07-02 14:42:46 +02:00
ScalarAddSpec.lean Signature layer, first bricks: canonicity closure + hash-to-scalar foundation 2026-07-03 23:18:31 +02:00
ScalarBytesSpec.lean Hash-to-scalar PROVEN: from_bytes_wide_spec - Scalar::from_hash's reduction is exact mod l 2026-07-04 11:00:49 +02:00
ScalarDenote.lean Add scalar-layer foundation (Scalar52 arithmetic mod ℓ) 2026-07-02 21:19: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 11:00:49 +02:00
ScalarFullMulSpec.lean Signature layer, first bricks: canonicity closure + hash-to-scalar foundation 2026-07-03 23:18:31 +02:00
ScalarLoop.lean scalar layer: add+sub fully proven mod l (port from dalek, own extraction) 2026-07-03 18:17:30 +02:00
ScalarMain.lean Signature layer, first bricks: canonicity closure + hash-to-scalar foundation 2026-07-03 23:18:31 +02:00
ScalarMontSpec.lean Signature layer, first bricks: canonicity closure + hash-to-scalar foundation 2026-07-03 23:18:31 +02:00
ScalarMulSpec.lean Scalar layer complete: Montgomery reduction + full mul ported, scalarImplementation aggregate 2026-07-03 21:36:35 +02:00
ScalarReduceSpec.lean Signature layer, first bricks: canonicity closure + hash-to-scalar foundation 2026-07-03 23:18:31 +02:00
ScalarSubSpec.lean Signature layer, first bricks: canonicity closure + hash-to-scalar foundation 2026-07-03 23:18:31 +02:00
ScalarUnpackSpec.lean Hash-to-scalar PROVEN: from_bytes_wide_spec - Scalar::from_hash's reduction is exact mod l 2026-07-04 11:00:49 +02:00
ScalarWideSpec.lean Signature layer, first bricks: canonicity closure + hash-to-scalar foundation 2026-07-03 23:18:31 +02:00
Square2Spec.lean field layer: 14 proofs pass, fieldImplementation axiom-clean 2026-07-02 14:42:46 +02:00
SquareSpec.lean field layer: 14 proofs pass, fieldImplementation axiom-clean 2026-07-02 14:42:46 +02:00
SubNegSpec.lean field layer: 14 proofs pass, fieldImplementation axiom-clean 2026-07-02 14:42:46 +02:00