Assurance · for auditors & risk owners

Confidence you can
inspect.

Modernization fails when the new system quietly behaves differently from the old one. You find out in production, in an audit, or in court. Constat is built so "it behaves the same" is something you can check, not something you have to believe.

44

public NIST COBOL-85 programs run byte-exact on real IBM i V7R5. Not our corpus, programs anyone can look up, and run themselves.

See one run on both

How the guarantee is built

Three mechanisms, not one promise

01

Run both, compare

The original runs on IBM i. The modernized system runs in Rust. Both process the same real inputs, and we compare the resulting business state directly. Equivalence is measured, not assumed from tests that happen to pass.

02

A verified engine

The engine that generates the Rust is backed by machine-checked mathematical proofs, with a small trust boundary we state explicitly. It is a verified transpiler, not a best-effort tool that hopes the output matches.

03

Evidence you can audit

Every modernized program ships with an evidence package: what was produced, how, and the proof it behaves like the original. Your team and your auditors inspect it on their own terms.

The evidence, in three layers

How far each claim is actually proven

We report assurance at three separate levels, widest to narrowest. Most tools blur them together. We keep them apart, so you can see exactly where a guarantee ends and a roadmap begins.

Implemented
4
IBM i languages, read end to end
RPG · COBOL · DDS · CL

The pipeline parses the languages an IBM i estate is written in and emits idiomatic Rust. This is the widest layer and the weakest guarantee: transpiling code is not, on its own, proof that behavior is preserved.

Kernel-proven
33,784
machine-checked theorems
0 sorry · 0 admit · 4 named axioms

The engine that writes the Rust is checked inside the Lean 4 kernel, with a small, explicitly named axiom footprint. Nothing load-bearing is assumed off the record.

Iron-sealed
53
programs run on real IBM i, compared
53/240 ~22% · 1,020 tracked artifacts

The narrowest and strongest layer: each program runs on live IBM i hardware while its modern twin runs on the same inputs, compared byte for byte, with a dossier anyone can re-check. This is what we mean by proven.

L2 BISIMILAR vs live IBM i V7R5

Every figure here is generated from the artifacts of record. A number without a source does not ship.

The audit trail

Every step is kept, so every step can be checked

Modernization is only trustworthy if you can retrace it. Constat keeps the full trail from your source to the running Rust, and hands it to you. Nothing about the transpilation is a black box.

Formal proofs (Lean 4)

The engine's correctness is proved in the Lean 4 theorem prover. The proofs are machine-checked, and they travel with the result.

Two solvers, cross-checked

The operations we model are discharged by the Z3 SMT solver and independently re-checked by CVC5, so a mistake in one solver does not slip through. The SMT-LIB2 formulas can be emitted for a third party to re-check.

The transpilation trail

We keep the abstract syntax tree and every intermediate representation from each stage. How your code became Rust is open, not hidden.

Source-to-Rust map

Each line of generated Rust links back to the COBOL or RPG it came from. You read the new code against the old, line by line.

Provenance on every artifact

Every artifact is recorded with its provenance, so a third party can confirm nothing was swapped or edited after the fact.

Re-audit it yourself

One command re-checks the whole record end to end: the artifacts, the proofs, and a record of exactly which generator produced them. The process is deterministic, so two runs are byte-identical and directly comparable. Nothing here needs your trust, only your check.

re-audit
$ axiom audit --json{ "verdict": "COHERENT" }

Honest by default

What we don't claim

Equivalence is established per program, on your inputs. It is not a blanket product guarantee. A program we haven't modernized and validated is not covered, and we say so. Where a result is a modernization target rather than a proven lane, it is labelled as one. The scope is always explicit. One more line, on the proofs themselves: the code generator is machine-checked in the Lean kernel, but the final Rust passes through an audited post-processing step. Until that step is folded into the verified generator, it sits in the trusted computing base, and we count it there rather than call it proven.

We keep IBM i (which runs on IBM Power) distinct from the mainframe (IBM Z). Our behavioral validation runs against real IBM i hardware; other targets are validated within each engagement.

Due diligence

Go as deep as you need

For technical evaluation we walk your engineers and auditors through the proof and the evidence for real programs, under NDA. Bring your hardest questions.