dalek-ed25519-verified/verification/Proofs
mrwulf 195eafcc16 NAF campaign stages 1-2: LE load walks + the digit loop's arithmetic core
- `Proofs/DsmNafLoadSpec.lean` (generated) — the byte-to-word LE load of
  `non_adjacent_form`: four 8-peel inner walks (t |= bytes[8k+bi] << 8bi)
  and the outer 4-peel filling x_u64[0..3]; x_u64[4] stays 0 (the pad word
  the cross-word window reads at positions >= 251).

- `Proofs/DsmNafMath.lean` — the pure arithmetic of the w=5 digit loop:
  `nafSum`/`nafSum_set`; window-read lemmas `naf_window_single` /
  `naf_window_cross` (cross-word disjoint-OR read sees (V >> pos) mod 32);
  invariant steps `naf_even_step` / `naf_odd_step` (Nat.mod_mul telescope:
  digit + promoted carry reconstruct the consumed bits EXACTLY, in ZZ);
  carry-kill `naf_carry_even` / `naf_carry_odd` (V < 2^253 forces the
  carry dead before bit 256); `naf_exit` (nafSum naf 256 = V exactly).

The digit-loop walk (stage 3) composes these next; its invariant is
    nafSum naf 256 + carry*2^pos = V mod 2^pos
with digits at k >= pos all zero and carry = 1 -> pos <= 254.

CERTS += naf_load_spec, naf_window_cross, naf_exit (axiom-clean).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-04 15:30:18 +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
ConstSpecs.lean field layer: 14 proofs pass, fieldImplementation axiom-clean 2026-07-02 14:17:44 +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
DsmNafLoadSpec.lean NAF campaign stages 1-2: LE load walks + the digit loop's arithmetic core 2026-07-04 15:30:18 +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
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
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 scalar layer: clean Scalar52 extraction + denotation foundation 2026-07-02 21:13:43 +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
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
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