Constraint / SMT / SAT Input Languages Family Index
type: language-family-index family: constraint-and-smt-input languages_catalogued: 40 tags: [language-reference, family-index, constraint-and-smt-input, sat, smt, qbf, minizinc, flatzinc, xcsp3, asp, aspcore2, milp, mps, lp, ampl, tptp, drat, lrat, qrat]
Constraint / SMT / SAT Input Languages — Family Index
Family overview
This family is defined by a deliberate inversion of the usual perspective: these are not languages humans want to write, they are the languages solvers actually consume. A modeller writes MiniZinc, Essence, OPL, AMPL, Python with PySAT, or s-expressions in a Z3 script — but the binary that grinds through millions of branching decisions is reading something flatter, simpler, and more boring. This family catalogues that flatter layer: the textual input formats of SAT, SMT, QBF, CSP, ASP, and MILP solvers, plus the proof formats those solvers emit on their way back out. The defining property is that every entry here has a competition or a standard committee behind it, not a programming-language community — these formats exist because two solver authors needed to compare results on the same instance.
The DIMACS CNF lineage is the spine. The format was finalised in May 1993 for the 2nd DIMACS Implementation Challenge (1992–1993, Maximum Clique / Graph Coloring / Satisfiability) and has run every SAT competition since. The header is one line — p cnf <vars> <clauses> — and clauses are space-separated literals terminated by 0. That napkin-scale simplicity is why DIMACS still wins: every SAT solver in 2026 (CaDiCaL, Kissat, Glucose, MapleSAT, IsaSAT, …) reads it natively, and every extension — WCNF (weighted MaxSAT), GCNF (groups), iCNF (incremental), QDIMACS (QBF, 2005) — kept the p <variant> header pattern so that a DIMACS instance is also a valid instance in every successor. SAT Competition 2025’s Main Track UNSAT was won by CaDiCaL-SC2025 (Biere et al., Freiburg) with Kissat-VSA second; both still parse the 1993 spec verbatim.
The SMT-LIB family is the deliberate antithesis. Where DIMACS optimises for parser-on-a-napkin, SMT-LIB optimises for portability across rich theories — bitvectors, arrays, reals, integers, datatypes, floating-point, strings — across Z3 (Microsoft), CVC5 (Stanford/Iowa/NYU), Yices 2 (SRI), MathSAT (FBK), and Boolector/Bitwuzla. The current standard is SMT-LIB 2.6 (reference v2.6-r2021-05-12, Barrett/Fontaine/Tinelli), with 2.7 released as a draft 2025-02-05 and 3.0 under active design as of 2025–2026. The cost of that portability is a verbose, parenthesis-heavy s-expression syntax that almost no one writes by hand — modellers use Python (PySMT), Rosette, or Z3’s Python API and serialise to SMT-LIB only at the wire boundary. Yices 2 also keeps its older native specification language alongside SMT-LIB 2 support.
The CSP / CP world solved the modelling–vs–solving tension with a two-language stack: humans write MiniZinc (high-level: array[1..n] of var 1..n: queens; constraint alldifferent(queens);), and the MiniZinc compiler flattens it to FlatZinc, which is what Gecode, Chuffed, OR-Tools’ CP-SAT, Choco, Picat-SAT, and HiGHS actually consume. The current MiniZinc release (2.9.7, 2026-04-30) ships handbooks for both layers; the FlatZinc spec is published as part of the MiniZinc Handbook (“Interfacing Solvers to FlatZinc”). XCSP3 (currently v3.2, xcsp.org) plays the same role at the XML layer, hosting the XCSP3 competition benchmarks; Essence (St Andrews / York, refined to Essence Prime by the Conjure 2.6 tool, 2024+) sits even higher up the abstraction ladder. ASP standardised on ASPCore-2 (formalised in arXiv:1911.04326, used since 2013 ASP Competitions) — gringo, Clingo, DLV, and WASP all consume it. MIP/LP has its own parallel universe inherited from IBM’s MPSX/360 in the late 1960s — MPS column-oriented, CPLEX LP row-oriented, AMPL .nl binary-or-text — read by Gurobi, CPLEX, HiGHS, SCIP, and COIN-OR. Finally, DRAT/LRAT/FRAT and QRAT are the proof-emission family that grew up alongside CNF/QDIMACS once “trust the solver” stopped being acceptable for safety-critical and journal-grade results.
In our deep library
None of the formats in this family have standalone deep-library notes — they live below the level at which the Languages library catalogues “languages.” Cross-link instead to the modelling and host layers above them:
- logic-and-constraint — Prolog, Datalog, MiniKanren, Mercury, ASP host languages. The modelling layer above these inputs.
- theorem-prover-dsls — TPTP and SMT-LIB both heavily used by ATP / ITP systems (Vampire, E, iProver, Lean, Coq/Rocq, Isabelle).
- notation-spec — these are notation-spec adjacent: machine-consumed serialisations rather than programming languages.
- python — host language for PySAT, PySMT, OR-Tools’ Python API, MiniZinc Python, PyCSP3, Pyomo, AMPL Python, Gurobipy.
- cpp — most solvers (CaDiCaL, Kissat, Z3, CVC5, Gurobi, CPLEX, OR-Tools, Gecode) are written in C++; their parsers define what “valid” means.
- rust — Bitwuzla bindings, IsaSAT (Isabelle-extracted), and several newer competition entrants now ship Rust frontends.
- scientific — Pyomo, JuMP, PuLP, GAMS, AMPL all live in this neighbourhood.
Tier 3 family table — SAT / QBF / proof formats
| Format | First appeared | Origin | Type | Status (2026) | URL |
|---|---|---|---|---|---|
| DIMACS CNF | 1993 (May) | 2nd DIMACS Implementation Challenge (Rutgers) | Plain-text CNF: p cnf V C header + clauses terminated by 0. The lingua franca of SAT for 30+ years | Universal, every SAT solver reads it | https://www21.in.tum.de/~lammich/2015_SS_Seminar_SAT/resources/dimacs-cnf.pdf |
| DIMACS WCNF (MaxSAT) | ~2006 (MaxSAT Eval era) | MaxSAT Evaluation working group | Weighted CNF: each clause prefixed by integer weight; top weight marks hard clauses. Header p wcnf V C top (older) | Active, used by MaxSAT Evaluations 2020+ “new format” variant drops the p line | https://maxsat-evaluations.github.io/2020/rules.html |
| DIMACS GCNF | 2003+ | Group-MUS / group-oriented SAT research | CNF with each clause tagged by a group ID {g}; used for group-MUS extraction | Niche, active in MUS research | http://www.satcompetition.org/2011/format-benchmarks2011.html |
| iCNF (incremental CNF) | ~2008 | IPASIR / incremental SAT community | Extends DIMACS with a-prefixed assumption lines for solve-under-assumptions | Active, used by IPASIR-compliant incremental solvers | https://github.com/biotomas/ipasir |
| QDIMACS | 2005-12-21 (v1.1) | QBFLIB / QBFEVAL working group | DIMACS extended with a (universal) and e (existential) quantifier prefix lines | Active, the QBF lingua franca; QBFEVAL since 2004 | https://www.qbflib.org/qdimacs.html |
| QCIR | 2014 | Klieber et al. (CMU) | Non-CNF QBF: circuit form with named gates, accepted at QBFEVAL alongside QDIMACS | Active | https://www.cs.cmu.edu/~wklieber/papers/bnp16-qcir.pdf |
| QAIGER | ~2017 | QBF competition working group | AIGER-based QBF input, used at QBFEVAL alongside QDIMACS / QCIR | Active | https://qbf.pages.sai.jku.at/ |
| DRAT | 2014 | Heule, Hunt, Wetzler (UT Austin) | Clausal proof: each line is a clause addition or d-prefixed deletion preserving satisfiability | De facto SAT proof standard; emitted by CaDiCaL, Kissat, Glucose, MapleSAT | https://github.com/marijnheule/drat-trim |
| LRAT | 2017 | Cruz-Filipe, Heule, Hunt, Kaufmann, Schneider-Kamp | DRAT plus per-step resolution hints; checkable in linear time, formally verified checkers exist (Coq, Isabelle, Agda) | Active, growing; the format of choice when a proof must itself be trusted | https://www.cs.utexas.edu/~marijn/publications/lrat.pdf |
| FRAT | 2021 | Tan, Heule, Hunt | DRAT-with-hints intermediate; >84% median reduction in elaboration-to-LRAT time, >94% peak-memory cut | Active, used as DRAT→LRAT pipeline stage | https://arxiv.org/html/2109.09665 |
| QRAT | 2014 | Heule, Seidl, Biere | QBF-level analogue of DRAT: ATA / QRATA / QRATU / EUR + clause deletion; can simulate all current QBF preprocessors | Active, candidate standard for QBF certification (QRAT-trim checker) | https://www.cs.utexas.edu/~marijn/publications/qrat.pdf |
Tier 3 family table — SMT
| Format | First appeared | Origin | Type | Status (2026) | URL |
|---|---|---|---|---|---|
| SMT-LIB 1.x | 2003 | SMT-LIB initiative (Barrett, Stump, Tinelli + working group) | First standardised SMT input; theory-typed, less expressive than 2.x | Legacy, no longer accepted at SMT-COMP | https://smt-lib.org/ |
| SMT-LIB 2.0 | 2010 | Barrett, Stump, Tinelli | Major redesign: s-expression command language (set-logic, declare-fun, assert, check-sat, get-model) | Legacy, superseded by 2.6 | https://smt-lib.org/papers/smt-lib-reference-v2.0-r10.12.21.pdf |
| SMT-LIB 2.6 | 2017-07-18 (initial), latest revision 2021-05-12 | Barrett, Fontaine, Tinelli + working group | Adds user-defined algebraic datatypes (declare-datatype(s)); current accepted standard at SMT-COMP through 2025 | Current standard as of 2026; 2.7 draft (2025-02-05) circulating | https://smt-lib.org/papers/smt-lib-reference-v2.6-r2021-05-12.pdf |
| SMT-LIB 2.7 (draft) | 2025-02-05 | SMT-LIB working group | Refinements to 2.6 ahead of the larger 2.x→3.0 redesign | Draft / under review | https://smt-lib.org/papers/smt-lib-reference-v2.7-r2025-02-05.pdf |
| SMT-LIB 3.0 (in design) | announced 2024–2025 | SMT-LIB working group | Larger redesign signalled by working-group communications; details TBD | Pre-release / under design | https://groups.google.com/g/smt-lib/ |
| Yices 2 native | 2014 (Yices 2.2 paper) | Bruno Dutertre et al., SRI International | Yices’s pre-SMT-LIB specification language (tuples, scalar types, distinct semantics for some theories); kept alongside SMT-LIB 2 support | Active but secondary to SMT-LIB 2 | https://yices.csl.sri.com/ |
| Z3 SMT-LIB extensions | 2008+ | Microsoft Research (de Moura, Bjørner) | SMT-LIB 2 plus Z3-specific commands: (simplify), (eval), (rule), fixed-point logic, optimisation (maximize)/(minimize) | Active, de facto extension subset many other solvers also accept | https://microsoft.github.io/z3guide/ |
| CVC5 SMT-LIB extensions | ~2018+ (CVC5 fork from CVC4) | Stanford / Iowa / NYU / SRI | SMT-LIB 2.6 plus syntax-guided synthesis SyGuS-IF, finite model finding extensions | Active | https://cvc5.github.io/ |
| MaxSMT extensions | ~2014+ | Bjørner, Phan (Z3) and OptiMathSAT (FBK) | (assert-soft …) over SMT-LIB; turns SMT into weighted optimisation analogous to MaxSAT-over-CNF | Active, used by Z3, OptiMathSAT, νZ | https://theory.stanford.edu/~nikolaj/programmingz3.html |
Tier 3 family table — CSP / ASP / CP
| Format | First appeared | Origin | Type | Status (2026) | URL |
|---|---|---|---|---|---|
| MiniZinc | 2007 (Nethercote et al., CP’07) | Monash + NICTA → MiniZinc Foundation | High-level CP modelling language; arrays, sets, generators, predicates, global constraints (alldifferent, circuit, cumulative) | Active, current 2.9.7 (2026-04-30) | https://www.minizinc.org/ |
| FlatZinc | 2007 (alongside MiniZinc) | MiniZinc compiler output | Low-level flat form: var int: x; constraint int_lin_le(...). The actual input most CP solvers consume | Active, spec maintained as part of the MiniZinc Handbook | https://docs.minizinc.dev/en/stable/fzn-spec.html |
| XCSP3 | 2016 (XCSP3 v3.0); current v3.2 | Lecoutre, Roussel et al. (CRIL) | XML-based constraint instance format; arrays of variables, groups, blocks, meta-constraints; hosts XCSP3 competition benchmarks | Active | https://xcsp.org/ |
| Essence | 2008 (Frisch et al., AIJ) | York / St Andrews | High-level abstract specification language with set, multiset, partition, function, relation types — closer to Z than to MiniZinc | Active, current Conjure 2.6 (2024+) | https://conjure.readthedocs.io/en/latest/essence.html |
| Essence Prime | 2008+ | St Andrews | Medium-level CP modelling language; the Conjure refinement target between abstract Essence and solver inputs | Active | https://conjure.readthedocs.io/en/latest/ |
| ASPCore-2 | 2012 draft, formalised in arXiv:1911.04326 (2019) | ASP Standardization Working Group (Calimeri, Faber, Gebser, Ianni, Kaminski, Krennwallner, Leone, Maratea, Ricca, Schaub) | Standardised ASP rules (normal/disjunctive/aggregate/choice), used at ASP Competition since 2013 | Current ASP standard | https://arxiv.org/abs/1911.04326 |
| Lparse format | 1996+ | Niemelä / Simons (Helsinki/Aalto) | Older ASP intermediate produced by lparse, consumed by smodels — predecessor to gringo’s intermediate | Legacy | https://www.tcs.hut.fi/Software/smodels/ |
| gringo intermediate | 2007+ | Potsdam (Gebser, Kaminski, Schaub) | Internal grounded intermediate produced by gringo, consumed by Clingo’s solver core (clasp) | Active, internal to Clingo pipeline | https://potassco.org/ |
| OPL | 1999 | Pascal Van Hentenryck (ILOG, then IBM) | Constraint + LP modelling language; commercial, ships with IBM ILOG CPLEX Optimization Studio | Active, IBM commercial | https://www.ibm.com/products/ilog-cplex-optimization-studio |
OR-Tools cp_model.proto | 2018+ | Protobuf serialisation of CP-SAT models; binary .pb or text .pb.txt | Active, the CP-SAT wire format | https://github.com/google/or-tools/blob/stable/ortools/sat/cp_model.proto | |
| PySAT formula objects | 2017+ | Ignatiev, Morgado, Marques-Silva | Python-level CNF/WCNF object model with serialisation to DIMACS / WCNF; bridges Python modelling to native C/C++ solvers | Active | https://pysathq.github.io/ |
Tier 3 family table — MIP / LP / mathematical programming
| Format | First appeared | Origin | Type | Status (2026) | URL |
|---|---|---|---|---|---|
| MPS | late 1960s (IBM MPS/360 → MPSX) | IBM (extending the earlier SHARE format) | Column-oriented, fixed-column ASCII; 8-character names (because 8 chars = double word on 360); the de facto LP interchange format | Active, every commercial and OSS LP solver still reads it | https://en.wikipedia.org/wiki/MPS_(format) |
| CPLEX LP format | ~1988 (CPLEX 1.0) | CPLEX Optimization (Bixby) → IBM | Row-oriented, algebraic, human-readable LP/MIP; backslash comments; complementary to MPS | Active, supported by Gurobi, CPLEX, HiGHS, SCIP, glpk | https://www.ibm.com/docs/en/icos/22.1.2?topic=cplex-lp-file-format-algebraic-representation |
AMPL .nl | ~1990 | Robert Fourer, David Gay, Brian Kernighan (Bell Labs) | Low-level postfix-tree representation of nonlinear models; both binary and ASCII variants; the AMPL→solver wire format | Active, dozens of solvers (CBC, CPLEX, IPOPT, KNITRO, MINOS, MOSEK, SNOPT) accept it | https://en.wikipedia.org/wiki/Nl_(format) |
| GAMS scalar | 1976+ | GAMS Development Corp. (Meeraus, Bisschop) | Older commercial modelling language predating AMPL; produces solver-specific scalar outputs | Active, commercial | https://www.gams.com/ |
| OSiL | 2004 | COIN-OR Optimization Services | XML-based optimisation instance format; sibling of XCSP3 in spirit, for MILP/NLP | Active but niche | https://projects.coin-or.org/OS |
Tier 3 family table — Theorem-prover input
| Format | First appeared | Origin | Type | Status (2026) | URL |
|---|---|---|---|---|---|
| TPTP CNF | 1993+ | Sutcliffe & Suttner (Miami / TU Munich) | Original TPTP form: clause normal form for first-order logic | Active, base layer of TPTP | https://tptp.org/ |
| TPTP FOF | ~1996+ | Sutcliffe et al. | Full first-order form, untyped | Active | https://tptp.org/UserDocs/TPTPWorldTutorial/LogicFOF.html |
| TPTP TFF (TF0/TF1) | 2011 (TF0) / 2014 (TF1) | Sutcliffe + theorem-prover community | Monomorphic / rank-1 polymorphic typed first-order with arithmetic | Active, primary CASC competition format | https://link.springer.com/chapter/10.1007/978-3-642-28717-6_32 |
| TPTP THF (TH0/TH1) | ~2010 (TH0) / 2017 (TH1) | Benzmüller, Sutcliffe et al. | Monomorphic / rank-1 polymorphic typed higher-order form | Active | https://tptp.org/UserDocs/TPTPWorldTutorial/LogicTHF.html |
| TPTP TFX | 2018 | Sutcliffe + Kaliszyk | Extended TFF with boolean terms, tuples, conditional expressions | Active | https://ceur-ws.org/Vol-2162/paper-07.pdf |
Notable threads
-
DIMACS CNF as the lingua franca that never needed a successor. The 1993 spec from the 2nd DIMACS Implementation Challenge fits on a postcard: one
p cnf V Cheader line, then space-separated literals terminated by0, comments prefixedc. Thirty-three years later it is still what every SAT solver reads. The format optimises for parser-on-a-napkin, which means any new C/C++/Rust solver can implement input parsing in an afternoon. WCNF, GCNF, iCNF, and QDIMACS all kept thep <variant>header pattern so existing parsers compose. The closest thing to a successor is AIGER (And-Inverter-Graph) for hardware verification problems, but for pure SAT, no replacement has stuck — and SAT Competition 2025 (CaDiCaL-SC2025 winning UNSAT, Kissat-VSA second) was decided on DIMACS instances exactly as in 1993. -
SMT-LIB 2.6 standardisation: portability across Z3 / CVC5 / Yices / MathSAT / Boolector at the cost of nobody loving the syntax. Before SMT-LIB, every SMT solver had its own input language and benchmarking required hand-translation. The Barrett–Stump–Tinelli initiative (started ~2003, hitting 2.0 in 2010, 2.5 in 2015, 2.6 in 2017, latest revision 2021-05-12) gave the field a portable theory-typed s-expression syntax. The 2.7 draft appeared 2025-02-05 and 3.0 is under active design. The cost: SMT-LIB 2.6 is verbose, parenthesis-heavy, and almost nobody writes it by hand — modellers use Python/Rosette/Lean front-ends and emit SMT-LIB 2 only at the wire boundary. But the wire-boundary win is decisive: a benchmark instance written today runs unchanged on Z3 (Microsoft), CVC5 (Stanford/Iowa/NYU), Yices 2 (SRI), MathSAT (FBK), and Bitwuzla.
-
The MiniZinc → FlatZinc compilation model. This is the cleanest two-language stack in the family. MiniZinc 2.9.7 (2026-04-30) is what humans write — generators, comprehensions, global constraints (
alldifferent,circuit,cumulative,bin_packing). The compiler flattens the model to FlatZinc, a much simpler language of typed variable declarations and primitive constraints (int_lin_le,array_int_element, …) — and that is what Gecode, Chuffed, OR-Tools’ CP-SAT, Choco, Picat-SAT, and HiGHS actually consume. The compilation is solver-aware: each backend ships a “solver library” (share/minizinc/gecode,share/minizinc/chuffed) telling MiniZinc which globals it natively supports, so the same.mznfile can run on a SAT-based, CP-based, or LP-based backend with different generated FlatZinc. -
ASPCore-2 settling the gringo/clingo vs DLV split. For most of the 1990s and 2000s the two ASP camps — Helsinki/Aalto (lparse → smodels) and Calabria (DLV) — had divergent input syntaxes. The ASP Standardization Working Group (Calimeri, Faber, Gebser, Ianni, Kaminski, Krennwallner, Leone, Maratea, Ricca, Schaub) shipped ASPCore-2 as the unified standard, used at ASP Competition since 2013 and formalised in Theory and Practice of Logic Programming / arXiv:1911.04326. Today gringo, Clingo, DLV, WASP, and most ASP teaching toolchains all read ASPCore-2; the format covers normal rules, disjunctive heads, aggregates (
#count,#sum,#min,#max), choice rules, weak constraints, and optimisation. -
DRAT / LRAT / FRAT and the rise of proof-producing SAT. The trust-crisis trigger was the Pythagorean triples / Schur-five-coloring results of 2016 — proofs that produced terabytes of resolution trace, with no human able to spot-check. DRAT (Heule/Hunt/Wetzler 2014) gave SAT a clausal proof format where each line is “add this clause” (preserving satisfiability) or
d-prefixed “delete this clause”; DRAT-trim can verify the proof. LRAT (Cruz-Filipe et al., 2017) added per-step resolution hints making verification linear-time and fast enough to mechanise — formally verified LRAT checkers now exist in Coq, Isabelle, Agda, and ACL2. FRAT (Tan/Heule/Hunt, 2021) is an intermediate that lets solvers emit richer hints, cutting elaboration-to-LRAT time by >84% median. Modern SAT competitions in the certified-track essentially require DRAT or LRAT emission — “trust the result” stopped being acceptable around 2017. -
MPS format archaeology: 80-column punchcards still visible in 2026. MPS originated with IBM MPS/360 in the late 1960s, extending the earlier SHARE format; column names were 8 characters because that was a double-word on System/360. Fixed-column field widths, column-oriented storage, the section markers (
NAME,ROWS,COLUMNS,RHS,RANGES,BOUNDS,ENDATA) — every artefact of the punchcard era is still there, and Gurobi / CPLEX / HiGHS / SCIP / glpk in 2026 all parse it. CPLEX LP format (~1988, Bixby) is the row-oriented, algebraic counterpoint: human-readable, easy to generate from a C application, but less standardised — which is why MPS, despite being uglier, is still the de facto interchange format. -
TPTP as the SMT-LIB equivalent for first-order theorem proving. While SMT-LIB anchors decision-procedure-based reasoning, TPTP (Sutcliffe & Suttner, 1993+) anchors saturation/resolution-based first-order theorem proving. The format hierarchy mirrors SMT-LIB’s logic hierarchy: CNF (clauses), FOF (full first-order, untyped), TFF (typed first-order: TF0 monomorphic, TF1 rank-1 polymorphic, with arithmetic), THF (higher-order: TH0/TH1), and TFX (TFF with booleans, tuples, conditionals, 2018). The format drives the CASC (CADE ATP System Competition) the way DIMACS drives the SAT Competition and SMT-LIB drives SMT-COMP — Vampire, E, iProver, Zipperposition, Leo-III, and the Lean/Coq automation tools all consume it.
-
OR-Tools’
cp_model.protoas the first protobuf-native solver input. Google’s CP-SAT (the dominant constraint-programming solver as of the mid-2020s, winning the MiniZinc Challenge multiple years running) broke from the ASCII-format tradition: its native serialisation is Protocol Buffers, with.pbbinary and.pb.txttext variants. This is faster to parse, schema-versioned, and trivially generated from any of CP-SAT’s six SDK languages (C++, Python, Java, .NET, Go, Swift bindings via OR-Tools). It points to a possible future where new solvers ship protobuf-or-flatbuffers schemas instead of bespoke ASCII formats — though the compatibility-with-30-years-of-benchmarks argument keeps DIMACS / SMT-LIB / FlatZinc dominant.
Citations
- DIMACS CNF spec (1993): https://www21.in.tum.de/~lammich/2015_SS_Seminar_SAT/resources/dimacs-cnf.pdf
- SMT-LIB 2.6 reference (rev 2021-05-12): https://smt-lib.org/papers/smt-lib-reference-v2.6-r2021-05-12.pdf
- SMT-LIB 2.7 draft (2025-02-05): https://smt-lib.org/papers/smt-lib-reference-v2.7-r2025-02-05.pdf
- SMT-LIB language portal: https://smt-lib.org/language.shtml
- MiniZinc home (2.9.7, 2026-04-30): https://www.minizinc.org/
- MiniZinc Handbook — FlatZinc spec: https://docs.minizinc.dev/en/stable/fzn-spec.html
- MiniZinc Challenge 2026: https://www.minizinc.org/challenge/2026/
- XCSP3 specification: https://xcsp.org/specifications/
- ASPCore-2 (arXiv:1911.04326): https://arxiv.org/abs/1911.04326
- Conjure / Essence documentation: https://conjure.readthedocs.io/en/latest/
- QDIMACS v1.1 standard: https://www.qbflib.org/qdimacs.html
- DRAT-trim proof checker: https://github.com/marijnheule/drat-trim
- LRAT paper (Cruz-Filipe et al.): https://www.cs.utexas.edu/~marijn/publications/lrat.pdf
- FRAT paper: https://arxiv.org/html/2109.09665
- QRAT paper: https://www.cs.utexas.edu/~marijn/publications/qrat.pdf
- MPS format (Wikipedia): https://en.wikipedia.org/wiki/MPS_(format)
- AMPL .nl format (Wikipedia): https://en.wikipedia.org/wiki/Nl_(format)
- AMPL book (Fourer/Gay/Kernighan): https://ampl.com/wp-content/uploads/BOOK.pdf
- Yices 2 home: https://yices.csl.sri.com/
- Z3 documentation: https://microsoft.github.io/z3guide/
- TPTP home: https://tptp.org/
- TPTP TFF with arithmetic: https://link.springer.com/chapter/10.1007/978-3-642-28717-6_32
- OR-Tools cp_model.proto: https://github.com/google/or-tools/blob/stable/ortools/sat/cp_model.proto
- PySAT formula module: https://pysathq.github.io/docs/html/api/formula.html
- MaxSAT Evaluations 2020 rules (WCNF format): https://maxsat-evaluations.github.io/2020/rules.html
- SAT Competition 2025 results: https://satcompetition.github.io/2025/satcomp25slides.pdf
- CaDiCaL/Kissat 2025 entrants: https://cca.informatik.uni-freiburg.de/papers/BiereFallerFleuryFroleyksPollitt-SAT-Competition-2025-solvers.pdf