# Arithmetic garbling

Mixed-modulus labels and projection gates over bounded arithmetic values.

[View canonical HTML](https://pllm.run/sdk/pipeline/protocols/garbling/arithmetic/)

Document ID: `pllm.docs.protocols.garbling.arithmetic`  
Release: `0.1.0`

Arithmetic garbling represents values with labels per modulus. Free compatible arithmetic can avoid tables; nonlinear projection reconstructs signed values jointly from a coprime residue bundle and emits output labels. Gate material is shape-bound, strictly serialized, and consumed once.

PLLM's method configurations are clean-room adaptations informed by
[Garbling Gadgets for Boolean and Arithmetic Circuits](/research/papers/r03-garbling-gadgets/),
not wrappers around its implementation.

Reference exhaustive correctness, tamper rejection, plan commitments, and one-use
process-local issuance checks establish implementation behavior only. The compiler
authorizes the bounded primitive from explicit nonlinear and protected-scheduler
components; baseline masked-linear components cannot activate it. Cryptographic review, cross-process or durable
replay protection, complete-model coverage, and deployment assurance are not
recorded.

The stable Python facade exposes method and scheduler configuration, but not raw
labels or the arithmetic-garbling evaluator. The evaluator remains internal to the
native compiled-plan boundary. See [nonlinear methods](/sdk/reference/python/pllm/nonlinear/),
[schedulers](/sdk/reference/python/pllm/schedulers/), and
[research evidence](/research/evidence/).

API: [Nonlinear objects and signatures](/sdk/reference/python/pllm/nonlinear/#objects-and-signatures)

## Python SDK example

```python
from pllm.nonlinear import ArithmeticGarblingSiluQ7
from pllm.schedulers import BoundedIndependentElementsProtectedTensorSchedule

method = ArithmeticGarblingSiluQ7()
schedule = BoundedIndependentElementsProtectedTensorSchedule(max_elements=128)

assert method.to_spec() == {
    "component": "pllm/arithmetic-garbling-silu-q7/v1",
    "params": {},
}
assert schedule.component == "pllm/bounded-independent-elements/v1"
```

These are immutable compilation choices. They do not expose or execute one-use
evaluator material directly.
