CLI Tools
The aria.cli package provides command-line entrypoints for several user-facing
reasoning workflows. After pip install -e ., these tools are exposed both as
console scripts such as aria-mc and as Python module entrypoints such as
python -m aria.cli.mc_cli.
Registered console scripts
The current pyproject.toml registers these commands:
Console command |
Module entrypoint |
Purpose |
|---|---|---|
|
|
Format conversion, validation, and analysis |
|
|
Model counting for Boolean, bit-vector, and arithmetic inputs |
|
|
Optimization modulo theories and MaxSMT frontends |
|
|
Exists-forall SMT solving |
|
|
Weighted partial MaxSAT from WCNF input |
|
|
UNSAT core, MUS, and MSS workflows |
|
|
AllSMT enumeration |
|
|
IPC-based SMT server |
|
|
Transition-system verification |
|
|
Legacy EFMC-oriented EFSMT frontend |
|
|
Polynomial Horn solving |
Quick start
python -m aria.cli.fmldoc_cli translate -i input.cnf -o output.smt2
python -m aria.cli.mc_cli formula.smt2
python -m aria.cli.pyomt_cli problem.smt2
python -m aria.cli.efsmt_cli problem.smt2
aria-maxsat formula.wcnf --solver rc2
aria-unsat-core formula.smt2
aria-allsmt formula.smt2 --limit 100
python -m aria.cli.smt_server_cli
python -m aria.cli.efmc_cli --help
python -m aria.cli.polyhorn_cli --help
Tool summaries
fmldoc
Translate, validate, and analyze supported logic-constraint files.
python -m aria.cli.fmldoc_cli translate -i input.cnf -o output.smt2
python -m aria.cli.fmldoc_cli validate -i input.smt2 -f smtlib2
python -m aria.cli.fmldoc_cli analyze -i input.cnf
python -m aria.cli.fmldoc_cli formats
mc
Count satisfying models for DIMACS or SMT-LIB2 inputs.
python -m aria.cli.mc_cli formula.smt2
python -m aria.cli.mc_cli formula.cnf --theory bool
python -m aria.cli.mc_cli formula.smt2 --theory bv
python -m aria.cli.mc_cli formula.smt2 --theory arith
Key options: --theory, --method, --project, --timeout,
--log-level.
pyomt
Solve optimization problems from SMT-LIB2 input.
python -m aria.cli.pyomt_cli problem.smt2
python -m aria.cli.pyomt_cli problem.smt2 --engine qsmt
python -m aria.cli.pyomt_cli problem.smt2 --engine iter
python -m aria.cli.pyomt_cli problem.smt2 --engine maxsat
Key options: --type, --theory, --engine, --solver,
--log-level.
efsmt
Solve exists-forall SMT problems with multiple backends.
python -m aria.cli.efsmt_cli problem.smt2
python -m aria.cli.efsmt_cli problem.smt2 --parser z3
python -m aria.cli.efsmt_cli problem.smt2 --theory bv
python -m aria.cli.efsmt_cli problem.smt2 --engine efbv-par
Key options include --parser, --theory, --engine, --timeout,
--max-loops, plus theory-specific solver options for bit-vectors and
LIA/LRA.
Current CLI split:
aria-efsmtis the general-purpose EFSMT frontend for standalone.smt2exists-forall problems.aria-efmc-efsmtis a legacy EFMC-adjacent frontend that exposes the solver stack underaria.efmc.engines.ef.efsmt.aria-efmcis the transition-system verifier and should be used for CHC, SyGuS, Boogie, and C verification workflows rather than raw EFSMT queries.
maxsat
Solve weighted partial MaxSAT problems from WCNF input.
aria-maxsat formula.wcnf
aria-maxsat formula.wcnf --solver rc2
aria-maxsat formula.wcnf --print-model
unsat_core
Compute one UNSAT core or enumerate MUSes from SMT-LIB2 input.
aria-unsat-core formula.smt2
aria-unsat-core formula.smt2 --algorithm musx
aria-unsat-core formula.smt2 --all-mus
allsmt
Enumerate satisfying models, optionally projected to selected variables.
aria-allsmt formula.smt2
aria-allsmt formula.smt2 --limit 50
aria-allsmt formula.smt2 --project x,y,z
aria-allsmt formula.smt2 --count-only
smt_server
Run an IPC-based SMT server with commands such as assert, check-sat,
get-model, allsmt, unsat-core, and backbone.
python -m aria.cli.smt_server_cli
python -m aria.cli.smt_server_cli --input-pipe /tmp/in --output-pipe /tmp/out
efmc / efmc_efsmt / polyhorn
These entrypoints expose the verification and quantified-reasoning stacks:
aria-efmcfor verification over CHC, SyGuS, Boogie, and C-style inputsaria-efmc-efsmtfor the legacy EFMC-oriented EFSMT frontendaria-polyhornfor polynomial Horn solving
The boundary between aria-efsmt and aria-efmc-efsmt is currently
historical rather than perfectly clean. In practice:
choose
aria-efsmtfor new standalone EFSMT solving workflowschoose
aria-efmcfor verification problemsuse
aria-efmc-efsmtonly when you need the EFMC backend’s solver or dump behavior specifically
Validation
For the current command surface, see:
aria/cli/README.mdpyproject.tomlunder[project.scripts]the parser definitions in
aria/cli/*_cli.py