TauLib · API Book III

TauLib.BookIII.Spectral.HenselLifting

TauLib.BookIII.Spectral.HenselLifting

Constructive Hensel Lifting: modular Newton iteration without signed arithmetic.

Registry Cross-References

  • [III.T11] Constructive Hensel Lifting – hensel_lift, hensel_check

Mathematical Content

III.T11 (Constructive Hensel Lifting): Given a root r of f mod p, lift to a root mod p^n by modular Newton iteration. No signed arithmetic: correction via modular complement. Lifting is unique (p-adic contraction).


Tau.BookIII.Spectral.is_prime_naive

source def Tau.BookIII.Spectral.is_prime_naive (n : ℕ) :Bool

Simple primality check by trial division. Equations

  • Tau.BookIII.Spectral.is_prime_naive n = if n < 2 then false else Tau.BookIII.Spectral.is_prime_naive.go n 2 (n + 1) Instances For

Tau.BookIII.Spectral.is_prime_naive.go

source@[irreducible]

def Tau.BookIII.Spectral.is_prime_naive.go (n d fuel : ℕ) :Bool

Equations

  • One or more equations did not get rendered due to their size. Instances For

Tau.BookIII.Spectral.poly_eval

source def Tau.BookIII.Spectral.poly_eval (a x m : Denotation.TauIdx) :Denotation.TauIdx

[III.T11] Evaluate a polynomial f(x) = x² - a mod m. This is the canonical test case: lifting square roots. Equations

  • Tau.BookIII.Spectral.poly_eval a x m = if (m == 0) = true then 0 else (x * x + m - a % m) % m Instances For

Tau.BookIII.Spectral.poly_deriv

source def Tau.BookIII.Spectral.poly_deriv (x m : Denotation.TauIdx) :Denotation.TauIdx

[III.T11] Modular derivative of f(x) = x² - a: f’(x) = 2x mod m. Equations

  • Tau.BookIII.Spectral.poly_deriv x m = if (m == 0) = true then 0 else 2 * x % m Instances For

Tau.BookIII.Spectral.hensel_step

source def Tau.BookIII.Spectral.hensel_step (a x _p _pk pk1 : Denotation.TauIdx) :Denotation.TauIdx

[III.T11] Hensel step: lift a root from mod p^k to mod p^(k+1). Newton correction: x_{k+1} = x_k - f(x_k) · f’(x_k)⁻¹ mod p^(k+1). Uses modular complement to avoid signed arithmetic: x - t ≡ x + (m - t) mod m. Equations

  • One or more equations did not get rendered due to their size. Instances For

Tau.BookIII.Spectral.hensel_lift

source def Tau.BookIII.Spectral.hensel_lift (a root p n : Denotation.TauIdx) :Denotation.TauIdx

[III.T11] Full Hensel lift: iterate from mod p to mod p^n. Starts by reducing root mod p (ensures canonical starting point). Equations

  • Tau.BookIII.Spectral.hensel_lift a root p n = if p < 2 then root else Tau.BookIII.Spectral.hensel_lift.go a p n (root % p) p 1 n Instances For

Tau.BookIII.Spectral.hensel_lift.go

source@[irreducible]

**def Tau.BookIII.Spectral.hensel_lift.go (a p n : Denotation.TauIdx)

(x pk exp fuel : ℕ) :Denotation.TauIdx**

Equations

  • One or more equations did not get rendered due to their size. Instances For

Tau.BookIII.Spectral.hensel_check

source def Tau.BookIII.Spectral.hensel_check (bound : Denotation.TauIdx) :Bool

[III.T11] Hensel lifting check: verify that lifted root satisfies f(x) ≡ 0 mod p^n for test cases. Equations

  • Tau.BookIII.Spectral.hensel_check bound = Tau.BookIII.Spectral.hensel_check.go bound 3 (bound + 1) Instances For

Tau.BookIII.Spectral.hensel_check.go

source@[irreducible]

**def Tau.BookIII.Spectral.hensel_check.go (bound : Denotation.TauIdx)

(p fuel : ℕ) :Bool**

Equations

  • One or more equations did not get rendered due to their size. Instances For

Tau.BookIII.Spectral.hensel_uniqueness_check

source def Tau.BookIII.Spectral.hensel_uniqueness_check (bound : Denotation.TauIdx) :Bool

[III.T11] Hensel uniqueness: the lifted root is unique mod p^n. Starting from any root r with r ≡ 1 mod p, the lift produces the same result as starting from 1. Equations

  • Tau.BookIII.Spectral.hensel_uniqueness_check bound = Tau.BookIII.Spectral.hensel_uniqueness_check.go bound 3 (bound + 1) Instances For

Tau.BookIII.Spectral.hensel_uniqueness_check.go

source@[irreducible]

**def Tau.BookIII.Spectral.hensel_uniqueness_check.go (bound : Denotation.TauIdx)

(p fuel : ℕ) :Bool**

Equations

  • One or more equations did not get rendered due to their size. Instances For

Tau.BookIII.Spectral.hensel_tower_check

source def Tau.BookIII.Spectral.hensel_tower_check (bound : Denotation.TauIdx) :Bool

[III.T11] Tower coherence of Hensel lifting: lift_n(r) mod p^k = lift_k(r) for k < n. Equations

  • Tau.BookIII.Spectral.hensel_tower_check bound = Tau.BookIII.Spectral.hensel_tower_check.go bound 3 (bound + 1) Instances For

Tau.BookIII.Spectral.hensel_tower_check.go

source@[irreducible]

**def Tau.BookIII.Spectral.hensel_tower_check.go (bound : Denotation.TauIdx)

(p fuel : ℕ) :Bool**

Equations

  • One or more equations did not get rendered due to their size. Instances For

Tau.BookIII.Spectral.hensel_20

source theorem Tau.BookIII.Spectral.hensel_20 :hensel_check 20 = true


Tau.BookIII.Spectral.hensel_unique_11

source theorem Tau.BookIII.Spectral.hensel_unique_11 :hensel_uniqueness_check 11 = true


Tau.BookIII.Spectral.hensel_tower_11

source theorem Tau.BookIII.Spectral.hensel_tower_11 :hensel_tower_check 11 = true


Tau.BookIII.Spectral.one_is_root_3

source theorem Tau.BookIII.Spectral.one_is_root_3 :poly_eval 1 1 3 = 0

[III.T11] Structural: 1 is a root of x²-1 mod any p.


Tau.BookIII.Spectral.one_is_root_5

source theorem Tau.BookIII.Spectral.one_is_root_5 :poly_eval 1 1 5 = 0


Tau.BookIII.Spectral.one_is_root_7

source theorem Tau.BookIII.Spectral.one_is_root_7 :poly_eval 1 1 7 = 0


Tau.BookIII.Spectral.hensel_1_mod_9

source theorem Tau.BookIII.Spectral.hensel_1_mod_9 :hensel_lift 1 1 3 2 = 1

[III.T11] Structural: Hensel lift of 1 mod 3² = 1.


Tau.BookIII.Spectral.hensel_correct_3_2

source theorem Tau.BookIII.Spectral.hensel_correct_3_2 :poly_eval 1 (hensel_lift 1 1 3 2) 9 = 0

[III.T11] Structural: poly_eval is zero at the lifted root.


Tau.BookIII.Spectral.hensel_correct_5_2

source theorem Tau.BookIII.Spectral.hensel_correct_5_2 :poly_eval 1 (hensel_lift 1 1 5 2) 25 = 0