Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,14 @@ cargo run -p akita-sis-estimator --release --features parallel \
--example infinity_width_table -- --format rust-split --profile local-minimum
```

The opt-in LaBinius runtime table is emitted from the certified checked-in CSV,
without rerunning the lattice search:

```bash
cargo run -p akita-sis-estimator --no-default-features --features labinius-sis \
--example labinius_infinity_width_table -- --from-csv
```

Sage workflows in [`scripts/sis_golden/README.md`](scripts/sis_golden/README.md)
remain useful for pinned-estimator goldens and Euclidean comparison artifacts,
but must not overwrite the production L-infinity table.
2 changes: 1 addition & 1 deletion crates/akita-params/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ blake2 = "0.11.0"
sha3 = "0.12.0"

[features]
labinius-sis = []
labinius-sis = ["akita-challenges/labinius-challenges"]
# Selects the dev protocol: every wire-format change `dev` carries that `main`
# does not, together. Off by default. Schedules priced for it live in
# `artifacts/schedules-dev`. See docs/branches.md.
Expand Down
21 changes: 17 additions & 4 deletions crates/akita-params/src/sis/labinius.rs
Original file line number Diff line number Diff line change
@@ -1,9 +1,22 @@
//! LaBinius binary-source SIS identities and exact collision accounting.
//!
//! This module deliberately stops at the security-table boundary. It does not
//! make any binary ring a native Akita runtime ring and it does not admit a
//! schedule. Challenge sampling and its certified multiplication bound belong
//! to `akita-challenges`; callers pass that bound here explicitly.
//! The opt-in root profile and shape admit binary root geometry against the
//! certified runtime width table and exact challenge/response bounds. This does
//! not select a protocol or admit a complete schedule. Challenge sampling and
//! its certified multiplication bound belong to `akita-challenges`.

mod generated_width_table;
mod root_profile;
mod root_shape;
mod width_table;

pub use root_profile::LabiniusRootProfile;
pub use root_shape::{
LabiniusDigitBase, LabiniusRootEncoding, LabiniusRootShape, LabiniusSignedDigitRange,
};
pub use width_table::{
labinius_min_secure_rank, LabiniusWidthCell, LABINIUS_WIDTH_TABLE, LABINIUS_WIDTH_TABLE_DIGEST,
};

use akita_error::AkitaError;

Expand Down
81 changes: 81 additions & 0 deletions crates/akita-params/src/sis/labinius/generated_width_table.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
// AUTO-GENERATED by labinius_infinity_width_table --from-csv -- do not edit by hand.
// Source: crates/akita-sis-estimator/data/labinius_infinity_width.csv

use super::width_table::LabiniusWidthCell;
use super::{LabiniusCoefficientPrime, LabiniusRingDegree};

#[rustfmt::skip]
pub const LABINIUS_WIDTH_TABLE: &[LabiniusWidthCell] = &[
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P64Offset23703, ring_degree: LabiniusRingDegree::D162, rank: 1, coeff_linf_bound: 24116880, max_width: 2 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P64Offset23703, ring_degree: LabiniusRingDegree::D162, rank: 1, coeff_linf_bound: 24641160, max_width: 2 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P64Offset23703, ring_degree: LabiniusRingDegree::D162, rank: 2, coeff_linf_bound: 24116880, max_width: 5 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P64Offset23703, ring_degree: LabiniusRingDegree::D162, rank: 2, coeff_linf_bound: 24641160, max_width: 5 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P64Offset23703, ring_degree: LabiniusRingDegree::D162, rank: 2, coeff_linf_bound: 1580547964560, max_width: 3 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P64Offset23703, ring_degree: LabiniusRingDegree::D162, rank: 2, coeff_linf_bound: 1614907702920, max_width: 3 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P64Offset23703, ring_degree: LabiniusRingDegree::D162, rank: 3, coeff_linf_bound: 24116880, max_width: 9 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P64Offset23703, ring_degree: LabiniusRingDegree::D162, rank: 3, coeff_linf_bound: 24641160, max_width: 9 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P64Offset23703, ring_degree: LabiniusRingDegree::D162, rank: 3, coeff_linf_bound: 1580547964560, max_width: 4 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P64Offset23703, ring_degree: LabiniusRingDegree::D162, rank: 3, coeff_linf_bound: 1614907702920, max_width: 4 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P64Offset23703, ring_degree: LabiniusRingDegree::D324, rank: 1, coeff_linf_bound: 24116880, max_width: 2 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P64Offset23703, ring_degree: LabiniusRingDegree::D324, rank: 1, coeff_linf_bound: 24641160, max_width: 2 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P64Offset23703, ring_degree: LabiniusRingDegree::D324, rank: 2, coeff_linf_bound: 24116880, max_width: 8 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P64Offset23703, ring_degree: LabiniusRingDegree::D324, rank: 2, coeff_linf_bound: 24641160, max_width: 8 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P64Offset23703, ring_degree: LabiniusRingDegree::D324, rank: 2, coeff_linf_bound: 1580547964560, max_width: 3 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P64Offset23703, ring_degree: LabiniusRingDegree::D324, rank: 2, coeff_linf_bound: 1614907702920, max_width: 3 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P64Offset23703, ring_degree: LabiniusRingDegree::D324, rank: 3, coeff_linf_bound: 24116880, max_width: 338378 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P64Offset23703, ring_degree: LabiniusRingDegree::D324, rank: 3, coeff_linf_bound: 24641160, max_width: 322958 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P64Offset23703, ring_degree: LabiniusRingDegree::D324, rank: 3, coeff_linf_bound: 1580547964560, max_width: 5 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P64Offset23703, ring_degree: LabiniusRingDegree::D324, rank: 3, coeff_linf_bound: 1614907702920, max_width: 5 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P64Offset23703, ring_degree: LabiniusRingDegree::D486, rank: 1, coeff_linf_bound: 13107000, max_width: 3 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P64Offset23703, ring_degree: LabiniusRingDegree::D486, rank: 2, coeff_linf_bound: 13107000, max_width: 842036 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P64Offset23703, ring_degree: LabiniusRingDegree::D486, rank: 2, coeff_linf_bound: 858993459000, max_width: 3 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P64Offset23703, ring_degree: LabiniusRingDegree::D486, rank: 3, coeff_linf_bound: 13107000, max_width: 93729198805 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P64Offset23703, ring_degree: LabiniusRingDegree::D486, rank: 3, coeff_linf_bound: 858993459000, max_width: 7 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P64Offset23703, ring_degree: LabiniusRingDegree::D648, rank: 1, coeff_linf_bound: 24116880, max_width: 4 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P64Offset23703, ring_degree: LabiniusRingDegree::D648, rank: 1, coeff_linf_bound: 24641160, max_width: 4 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P64Offset23703, ring_degree: LabiniusRingDegree::D648, rank: 2, coeff_linf_bound: 24116880, max_width: 542538891 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P64Offset23703, ring_degree: LabiniusRingDegree::D648, rank: 2, coeff_linf_bound: 24641160, max_width: 518564323 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P64Offset23703, ring_degree: LabiniusRingDegree::D648, rank: 2, coeff_linf_bound: 1580547964560, max_width: 4 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P64Offset23703, ring_degree: LabiniusRingDegree::D648, rank: 2, coeff_linf_bound: 1614907702920, max_width: 4 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P64Offset23703, ring_degree: LabiniusRingDegree::D648, rank: 3, coeff_linf_bound: 1580547964560, max_width: 21782 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P64Offset23703, ring_degree: LabiniusRingDegree::D648, rank: 3, coeff_linf_bound: 1614907702920, max_width: 20775 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P64Offset23703, ring_degree: LabiniusRingDegree::D972, rank: 1, coeff_linf_bound: 13107000, max_width: 421018 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P64Offset23703, ring_degree: LabiniusRingDegree::D972, rank: 2, coeff_linf_bound: 858993459000, max_width: 55205 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P64Offset23703, ring_degree: LabiniusRingDegree::D1944, rank: 1, coeff_linf_bound: 858993459000, max_width: 27602 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P128OffsetA7F7, ring_degree: LabiniusRingDegree::D162, rank: 1, coeff_linf_bound: 24116880, max_width: 5 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P128OffsetA7F7, ring_degree: LabiniusRingDegree::D162, rank: 1, coeff_linf_bound: 24641160, max_width: 5 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P128OffsetA7F7, ring_degree: LabiniusRingDegree::D162, rank: 1, coeff_linf_bound: 1580547964560, max_width: 3 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P128OffsetA7F7, ring_degree: LabiniusRingDegree::D162, rank: 1, coeff_linf_bound: 1614907702920, max_width: 3 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P128OffsetA7F7, ring_degree: LabiniusRingDegree::D162, rank: 2, coeff_linf_bound: 24116880, max_width: 17 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P128OffsetA7F7, ring_degree: LabiniusRingDegree::D162, rank: 2, coeff_linf_bound: 24641160, max_width: 16 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P128OffsetA7F7, ring_degree: LabiniusRingDegree::D162, rank: 2, coeff_linf_bound: 1580547964560, max_width: 6 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P128OffsetA7F7, ring_degree: LabiniusRingDegree::D162, rank: 2, coeff_linf_bound: 1614907702920, max_width: 6 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P128OffsetA7F7, ring_degree: LabiniusRingDegree::D162, rank: 3, coeff_linf_bound: 24116880, max_width: 676757 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P128OffsetA7F7, ring_degree: LabiniusRingDegree::D162, rank: 3, coeff_linf_bound: 24641160, max_width: 645916 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P128OffsetA7F7, ring_degree: LabiniusRingDegree::D162, rank: 3, coeff_linf_bound: 1580547964560, max_width: 10 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P128OffsetA7F7, ring_degree: LabiniusRingDegree::D162, rank: 3, coeff_linf_bound: 1614907702920, max_width: 10 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P128OffsetA7F7, ring_degree: LabiniusRingDegree::D324, rank: 1, coeff_linf_bound: 24116880, max_width: 8 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P128OffsetA7F7, ring_degree: LabiniusRingDegree::D324, rank: 1, coeff_linf_bound: 24641160, max_width: 8 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P128OffsetA7F7, ring_degree: LabiniusRingDegree::D324, rank: 1, coeff_linf_bound: 1580547964560, max_width: 3 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P128OffsetA7F7, ring_degree: LabiniusRingDegree::D324, rank: 1, coeff_linf_bound: 1614907702920, max_width: 3 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P128OffsetA7F7, ring_degree: LabiniusRingDegree::D324, rank: 2, coeff_linf_bound: 24116880, max_width: 1085077782 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P128OffsetA7F7, ring_degree: LabiniusRingDegree::D324, rank: 2, coeff_linf_bound: 24641160, max_width: 1037128646 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P128OffsetA7F7, ring_degree: LabiniusRingDegree::D324, rank: 2, coeff_linf_bound: 1580547964560, max_width: 8 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P128OffsetA7F7, ring_degree: LabiniusRingDegree::D324, rank: 2, coeff_linf_bound: 1614907702920, max_width: 8 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P128OffsetA7F7, ring_degree: LabiniusRingDegree::D324, rank: 3, coeff_linf_bound: 1580547964560, max_width: 43565 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P128OffsetA7F7, ring_degree: LabiniusRingDegree::D324, rank: 3, coeff_linf_bound: 1614907702920, max_width: 41550 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P128OffsetA7F7, ring_degree: LabiniusRingDegree::D486, rank: 1, coeff_linf_bound: 13107000, max_width: 842036 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P128OffsetA7F7, ring_degree: LabiniusRingDegree::D486, rank: 1, coeff_linf_bound: 858993459000, max_width: 3 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P128OffsetA7F7, ring_degree: LabiniusRingDegree::D486, rank: 2, coeff_linf_bound: 858993459000, max_width: 110411 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P128OffsetA7F7, ring_degree: LabiniusRingDegree::D486, rank: 3, coeff_linf_bound: 858993459000, max_width: 1526290668749 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P128OffsetA7F7, ring_degree: LabiniusRingDegree::D648, rank: 1, coeff_linf_bound: 24116880, max_width: 542538891 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P128OffsetA7F7, ring_degree: LabiniusRingDegree::D648, rank: 1, coeff_linf_bound: 24641160, max_width: 518564323 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P128OffsetA7F7, ring_degree: LabiniusRingDegree::D648, rank: 1, coeff_linf_bound: 1580547964560, max_width: 4 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P128OffsetA7F7, ring_degree: LabiniusRingDegree::D648, rank: 1, coeff_linf_bound: 1614907702920, max_width: 4 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P128OffsetA7F7, ring_degree: LabiniusRingDegree::D648, rank: 2, coeff_linf_bound: 1580547964560, max_width: 2043422581 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P128OffsetA7F7, ring_degree: LabiniusRingDegree::D648, rank: 2, coeff_linf_bound: 1614907702920, max_width: 1953388126 },
LabiniusWidthCell { coefficient_prime: LabiniusCoefficientPrime::P128OffsetA7F7, ring_degree: LabiniusRingDegree::D972, rank: 1, coeff_linf_bound: 858993459000, max_width: 55205 },
];

#[rustfmt::skip]
pub const LABINIUS_WIDTH_TABLE_DIGEST: [u8; 32] = [5, 134, 238, 98, 148, 132, 109, 17, 141, 30, 110, 243, 100, 241, 12, 64, 248, 229, 103, 143, 19, 95, 17, 220, 222, 66, 176, 251, 97, 168, 155, 253];
Loading
Loading