Four products, one artifact passing through them

A specification is written in LOGOS, the compiler places it onto a dataflow fabric and emits the obligations that placement raises, the prover discharges them into certificates, and the codec carries those certificates to whoever checks them. Each is useful on its own. Together they are one pipeline with no untyped gap in it.

Why these four and not a single tool

Where the specification, the reference implementation and the compiled artifact are three separate things, agreement between them is something you test for. Where they are one artifact viewed at different levels, agreement is something you prove.

That is the reason the toolchain has a language of its own rather than a pass over someone else's, a prover of its own rather than a dependency on Z3, and a wire format of its own rather than JSON between stages. Each boundary between two tools is a place where a proof can be lost in translation, and each of these products exists to remove one of those boundaries.

Where these are pointed at a device

These four are the toolchain. Aiming it at one customer's silicon is an engagement rather than a product, and which engagement depends on where that silicon is in its life. Model bring-up is for a part that has already been bought and is waiting to carry traffic. Design signoff is for a part that is still a netlist. The technical argument is the same in both. What differs is how much has already been committed by the time it's made.

Want the argument before the parts? How we prove it

Not sure which of these answers the problem in front of you?