Expand description
Proof-carrying place-and-route.
A dataflow compiler that only reports a mapping — the way a spatial-architecture toolchain validates a
placement with performance counters — asks you to TRUST that the placed grid computes the intended
datapath. We instead SHIP A CERTIFICATE: a machine-checkable refutation that the placed grid equals its
datapath specification for every bounded input. The recipient (e.g. the silicon vendor) re-verifies it
with PlacementCertificate::recheck, trusting only the tiny PR/RUP checker in
logicaffeine_proof::pr — never our prover, our placer, or our word. That is the difference between
“we validated it” and “here is the proof; check it yourself.”
The obligation is the same grid ≡ datapath biconditional the SAT-certified placer already discharges;
here we keep the witness (the propagation-redundancy + RUP steps) instead of discarding it, so the
certificate travels with the emitted RTL.
Structs§
- Placement
Certificate - A machine-checkable certificate that a placed mapping
gridcomputes its datapath spec for every bounded assignment. It carries the refuted CNF (¬(grid ≡ datapath)) and the propagation-redundancy + RUP refutation of it. It is self-contained:recheckneeds nothing but the certificate.
Enums§
- Certify
Refusal - Why a mapping earned no certificate. The three answers are genuinely different — “we cannot
express this obligation”, “we will not pay to materialise it”, and “it is not true” — and a
caller that prints
Uncertified { reason }must not collapse them into one sentence.
Constants§
- GATE_
BUDGET_ NODES - How large a SHARED GATE DAG the certificate path will pay to refute.
Functions§
- certify_
external_ placement - Import-and-certify — the SDK-facing seam. Certify a placement PRODUCED BY AN EXTERNAL TOOL (e.g. the
SambaFlow place-and-route) against the English
sourcedatapath: lower the externalplacementgrid and thesourcespec to the same bounded fragment, then prove they agree for every input and keep the re-checkable witness. ReturnsNone(fail-closed) if the placement is NOT equivalent to the source, or the obligation escapes the propositional fragment. We need nothing from the vendor but the placed grid — no config format, no trust in their placer: the certificate stands on its own viaPlacementCertificate::recheck. This is how a vendor mapping earns a proof it computes the intended program. - certify_
gates - Certify a placement whose grid and datapath are ALREADY blasted into the shared gate DAG — the
path that never materialises a
ProofExprtree, and therefore the only one that can certify a reconvergent datapath (a multiply chain’s tree is exponentially larger than its circuit). Fail-closed exactly likecertify_mapping: a grid that is not equivalent to its spec earns no certificate. - certify_
gates_ bounded certify_gateswith the refusal NAMED, against the productionGATE_BUDGET_NODES.- certify_
gates_ within certify_gates_boundedagainst an EXPLICIT gate ceiling — the seam a lock shrinks to prove the budget is live code and not a constant nobody reads.- certify_
mapping - Emit a proof-carrying certificate that the placed
gridequals thedatapathspec for every bounded input, by refuting¬(grid ≡ datapath)and KEEPING the checkable refutation. Fail-closed: returnsNonewhen the equivalence does not actually hold (a wrong mapping earns no certificate) or the obligation leaves the propositional fragment (bit-blast the datapath first). A returned certificate is guaranteedrecheck-valid by construction — the underlying prover only hands back a refutation it has already PR/RUP-verified. - certify_
mapping_ bounded certify_mappingwith the refusal NAMED. The obligation is PRICED in the shared gate DAG before anyProofExpris materialised, so an encoding too big to hold fails as a typed refusal in milliseconds instead of walking the allocator off a cliff.- certify_
mapping_ within certify_mapping_boundedagainst an EXPLICIT bit-blast ceiling — the seam a lock shrinks to prove the budget is live code and not a constant nobody reads.