> For the complete documentation index, see [llms.txt](https://docs.moduluszk.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.moduluszk.io/comparison-models/against-circuit-languages.md).

# Against circuit languages

Circuit languages such as Circom have no machine in the middle either; the author writes the constraint system directly. The comparison is therefore about what the author writes and what stands behind it. A hand-authored circuit reintroduces the two-artifact problem one level down: the intended rule and the circuit that encodes it are separate objects, the encoding is low-level and per-application, and the failure mode of a wrong constraint is famously invisible, since an under-constrained circuit accepts what it should refuse without any behaviour to observe \[A].&#x20;

On Modulus the author writes the rule in first-order logic, and the translation to polynomials is performed by a compiler whose semantics, soundness and completeness treatment are published \[S, eprint 2024/954]. The trust moves from every application's hand-built circuit to one compiler with one published semantics, reviewed once \[A]. Circuit toolkits are also toolkits: they produce proofs for a system someone still has to build. Modulus is the chain, and the predicate is the contract on it.
