Skip to content

linalg · PadicSmithInvariants

12 accepted declarations. Python and Rust forms, contracts, evidence, failure boundaries, and checked usages are kept together below.

Worked example

The complete checked program Lift a simple square root from F_5 to fixed-precision Z_5 uses this API directly.

# SPDX-License-Identifier: MIT
# Copyright (c) 2026 Benjamin Antieau and Deven Manam
"""Lift a simple square root from F_5 to fixed-precision Z_5."""

from noether.commalg import PolynomialRing
from noether.numthy import PadicRing


def main() -> None:
    integers = PadicRing(5, absolute_precision=6)
    polynomials = PolynomialRing(integers, ["x"])
    x = polynomials.generator("x")
    equation = x**2 - 6
    root = integers.hensel_lift(equation, integers.residue_field(1))
    assert equation.evaluate([root]) == integers.zero()
    print(f"sqrt(6) in Z_5 mod 5^6 is represented by {int(root)}")


if __name__ == "__main__":
    main()

Run it with .venv/bin/python examples/10_padic_hensel_lifting.py.

linalg.PadicSmithInvariants

Smith valuations visible below a fixed p-adic precision cap.

class PadicSmithInvariants

noether::linalg::PadicSmithInvariants · Direct Rust declaration

pub struct PadicSmithInvariants { /* private fields */ }
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, flint-core, m4rst, m4rst-distributed, m4rste, mzs, pwvla, spar-core, sparla, sparb, lattice-enum
GIL attached / bounded
Semantic ID noether/linalg/PadicSmithInvariants@1

Executable usage: validation/unit/linalg/test_padic_smith_facade.py:10 · validation/unit/linalg/test_padic_smith_facade.py:28 · validation/unit/linalg/test_padic_smith_facade.py:29 · validation/unit/linalg/test_padic_smith_facade.py:56 · validation/unit/linalg/test_padic_smith_facade.py:65

linalg.PadicSmithInvariants.exact_exponents

Exact valuations of Smith factors visible below the cap.

Detailed contract

Exact valuations of the visible nonzero Smith factors.

(self) -> list[int]

noether::linalg::PadicSmithInvariants::exact_exponents · Direct Rust declaration

pub fn exact_exponents(&self) -> &[u64]
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, flint-core, m4rst, m4rst-distributed, m4rste, mzs, pwvla, spar-core, sparla, sparb, lattice-enum
GIL attached / bounded
Semantic ID noether/linalg/PadicSmithInvariants@1

Executable usage: validation/unit/linalg/test_padic_smith_facade.py:33 · validation/unit/linalg/test_padic_smith_facade.py:50 · validation/unit/linalg/test_padic_smith_facade.py:60 · validation/unit/linalg/test_padic_smith_facade.py:75 · validation/unit/linalg/test_padic_smith_facade.py:77

linalg.PadicSmithInvariants.from_json

Deserialize and revalidate a PadicSmithInvariants from typed JSON.

Detailed contract

Deserialize and revalidate a p-adic Smith invariant summary.

(cls, value: str) -> PadicSmithInvariants

noether::linalg::PadicSmithInvariants::from_json · Direct Rust declaration

pub fn from_json(value: &str) -> Result<Self, NoetherError>
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, flint-core, m4rst, m4rst-distributed, m4rste, mzs, pwvla, spar-core, sparla, sparb, lattice-enum
GIL released
Semantic ID noether/linalg/PadicSmithInvariants@1

Executable usage: validation/unit/category/test_category.py:14 · validation/unit/combin/test_acceptance_workload.py:65 · validation/unit/combin/test_acceptance_workload.py:86 · validation/unit/combin/test_graph_facade.py:106 · validation/unit/combin/test_graph_facade.py:25 · validation/unit/combinatorics/test_kashiwara_crystal.py:32

linalg.PadicSmithInvariants.precision

Absolute p-adic precision cap.

Detailed contract

Absolute p-adic precision cap N.

(self) -> int

noether::linalg::PadicSmithInvariants::precision · Direct Rust declaration

pub fn precision(&self) -> u64
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, flint-core, m4rst, m4rst-distributed, m4rste, mzs, pwvla, spar-core, sparla, sparb, lattice-enum
GIL attached / bounded
Semantic ID noether/linalg/PadicSmithInvariants@1

Executable usage: examples/10_padic_hensel_lifting.py:3 · examples/11_qadic_witt_vectors.py:3 · examples/31_local_fields_and_precision.py:3 · examples/31_local_fields_and_precision.py:34 · examples/31_local_fields_and_precision.py:38 · validation/unit/commalg/test_polynomial_facade.py:102

linalg.PadicSmithInvariants.prime

Residue characteristic.

Detailed contract

Residue characteristic of the coefficient context.

(self) -> int

noether::linalg::PadicSmithInvariants::prime · Direct Rust declaration

pub fn prime(&self) -> &Integer
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, flint-core, m4rst, m4rst-distributed, m4rste, mzs, pwvla, spar-core, sparla, sparb, lattice-enum
GIL attached / bounded
Semantic ID noether/linalg/PadicSmithInvariants@1

Executable usage: examples/07_integer_factorization.py:12 · examples/12_number_field_ideals.py:16 · examples/12_number_field_ideals.py:19 · examples/18_finite_field_schemes.py:10 · examples/24_homology_and_persistence.py:22 · examples/33_simplicial_cohomology_operations.py:24

linalg.PadicSmithInvariants.rank_lower_bound

Certified lower rank bound for every compatible Z_p lift.

Detailed contract

Certified lower bound for the rank of every compatible Z_p lift.

(self) -> int

noether::linalg::PadicSmithInvariants::rank_lower_bound · Direct Rust declaration

pub fn rank_lower_bound(&self) -> usize
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, flint-core, m4rst, m4rst-distributed, m4rste, mzs, pwvla, spar-core, sparla, sparb, lattice-enum
GIL attached / bounded
Semantic ID noether/linalg/PadicSmithInvariants@1

Executable usage: validation/unit/linalg/test_padic_smith_facade.py:35 · validation/unit/linalg/test_padic_smith_facade.py:62

linalg.PadicSmithInvariants.rank_upper_bound

Upper rank bound for every compatible Z_p lift.

Detailed contract

Upper bound for the rank of every compatible Z_p lift.

(self) -> int

noether::linalg::PadicSmithInvariants::rank_upper_bound · Direct Rust declaration

pub fn rank_upper_bound(&self) -> usize
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, flint-core, m4rst, m4rst-distributed, m4rste, mzs, pwvla, spar-core, sparla, sparb, lattice-enum
GIL attached / bounded
Semantic ID noether/linalg/PadicSmithInvariants@1

Executable usage: validation/unit/linalg/test_padic_smith_facade.py:36 · validation/unit/linalg/test_padic_smith_facade.py:63

linalg.PadicSmithInvariants.shape

Source matrix shape.

Detailed contract

Shape of the source matrix.

(self) -> tuple[int, int]

noether::linalg::PadicSmithInvariants::shape · Direct Rust declaration

pub fn shape(&self) -> (usize, usize)
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, flint-core, m4rst, m4rst-distributed, m4rste, mzs, pwvla, spar-core, sparla, sparb, lattice-enum
GIL attached / bounded
Semantic ID noether/linalg/PadicSmithInvariants@1

Executable usage: examples/27_weight_characters.py:19 · examples/27_weight_characters.py:8 · examples/27_weight_characters.py:9 · examples/distributed/f2_linear_algebra.py:51 · examples/distributed/f2_linear_algebra.py:52 · validation/unit/combin/test_acceptance_workload.py:38

linalg.PadicSmithInvariants.to_json

Serialize this PadicSmithInvariants to its canonical typed JSON representation.

Detailed contract

Serialize the complete invariant summary as canonical typed JSON.

(self) -> str

noether::linalg::PadicSmithInvariants::to_json · Direct Rust declaration

pub fn to_json(&self) -> Result<String, NoetherError>
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, flint-core, m4rst, m4rst-distributed, m4rste, mzs, pwvla, spar-core, sparla, sparb, lattice-enum
GIL released
Semantic ID noether/linalg/PadicSmithInvariants@1

Executable usage: validation/unit/category/test_category.py:14 · validation/unit/category/test_category.py:15 · validation/unit/combin/test_acceptance_workload.py:30 · validation/unit/combin/test_acceptance_workload.py:65 · validation/unit/combin/test_acceptance_workload.py:86 · validation/unit/combin/test_graph_facade.py:106

linalg.PadicSmithInvariants.unresolved_pivots

Number of diagonal positions unresolved at the precision cap.

Detailed contract

Number of diagonal positions not resolved below the precision cap.

(self) -> int

noether::linalg::PadicSmithInvariants::unresolved_pivots · Direct Rust declaration

pub fn unresolved_pivots(&self) -> usize
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, flint-core, m4rst, m4rst-distributed, m4rste, mzs, pwvla, spar-core, sparla, sparb, lattice-enum
GIL attached / bounded
Semantic ID noether/linalg/PadicSmithInvariants@1

Executable usage: validation/unit/linalg/test_padic_smith_facade.py:34 · validation/unit/linalg/test_padic_smith_facade.py:51 · validation/unit/linalg/test_padic_smith_facade.py:61 · validation/unit/linalg/test_padic_smith_facade.py:76 · validation/unit/linalg/test_padic_smith_facade.py:78

linalg.PadicSmithInvariants.verify

Recheck the result's internal precision and rank invariants.

Detailed contract

Recheck the result’s precision, ordering, shape, and rank invariants.

(self) -> None

noether::linalg::PadicSmithInvariants::verify · Direct Rust declaration

pub fn verify(&self) -> Result<(), VerificationError>
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, flint-core, m4rst, m4rst-distributed, m4rste, mzs, pwvla, spar-core, sparla, sparb, lattice-enum
GIL released
Semantic ID noether/linalg/PadicSmithInvariants@1

Executable usage: examples/01_bezout_certificates.py:10 · examples/01_bezout_certificates.py:3 · examples/03_exact_linear_systems.py:13 · examples/03_exact_linear_systems.py:3 · examples/04_smith_normal_form.py:12 · examples/06_shortest_lattice_vectors.py:12

linalg.PadicSmithInvariants.verify_source

Recompute and compare against one dense or sparse p-adic source.

(self, source: Matrix[PadicRing] | SparseMatrix[PadicRing]) -> None

noether::linalg::PadicSmithInvariants · Python projection

Python projection convenience over this Rust mathematical type
Contract Value
Guarantee checked deterministic result
Determinism deterministic
Availability default CPU build
Domain implementation crates noether, flint-core, m4rst, m4rst-distributed, m4rste, mzs, pwvla, spar-core, sparla, sparb, lattice-enum
GIL released
Semantic ID noether/linalg/PadicSmithInvariants@1

Executable usage: validation/unit/linalg/test_padic_smith_facade.py:38 · validation/unit/linalg/test_padic_smith_facade.py:52