ALT-ERGO(1)

๐Ÿ“ฆ
version 2.4.3 ยท 3 versions
, in fedora 44

๐Ÿฆ‹ ALT-ERGO(1) ๐Ÿฆ‹

Okay bestie, welcome to the Alt-ergo Manual ๐ŸŒธ This is the ALT-ERGO(1) page, and it's the one that explains how to run the solver on a file. Let's get into it ๐Ÿ’…

โœจ NAME โœจ

okay so the name is alt-ergo, and its whole job is to execute Alt-Ergo on the given file ๐Ÿ”ฅ

โœจ SYNOPSIS โœจ

alt-ergo [OPTION]โ€ฆ [FILE]

โœจ ARGUMENTS โœจ

  • FILE โ€” this is your source file ๐Ÿ“„ It has to end in .ae, .smt2, or .psmt2. .mlw and .why are deprecated, so maybe don't start new stuff with those ๐Ÿ™ˆ

โœจ OPTIONS โœจ

  • -d, --debug โ€” flips on the debugging flag ๐Ÿ›
  • -i FMT, --input=FMT โ€” sets the default input format to FMT. It has to be one of native, altergo, alt-ergo, smtlib2, smt-lib2, or why3 โœจ This is super handy when the file extension can't tell Alt-Ergo which parser to use, like in JS mode, GUI mode, etc.
  • -m VAL, --model=VAL (absent=none) โ€” experimental model support on labeled terms ๐Ÿ”ฌ VAL must be none, default, complete, or all. complete shows one full model, and all shows every model ๐Ÿ’œ
  • -o FMT, --output=FMT โ€” controls the solver's output format ๐ŸŽ€ FMT must be native or smtlib. The native format prints Valid, Invalid, or I don't know, while the smtlib format prints unsat, sat, or unknown. If you don't pick one, Alt-Ergo uses its heuristics to figure out the right format based on the input format. And heads up: if you skip this flag, Alt-Ergo will set the output format based on the input file's extension ๐Ÿ‘€
  • -p, --pretty-output โ€” prints output with formatting rules, headers, and colors ๐ŸŒˆ
  • -r, --replay-used-context โ€” replays using the axioms and predicates saved in a .used file ๐Ÿ”
  • -S STEPS, --steps-bound=STEPS (absent=-1) โ€” sets the maximum number of steps ๐Ÿชœ
  • -s, --save-used-context โ€” saves the used axioms and predicates in a .used file ๐Ÿ’พ This one implies --unsat-core, so it comes with that too ๐Ÿซถ
  • -t VAL, --timelimit=VAL โ€” sets the time limit to VAL seconds โฐ Heads up, this isn't supported on Windows ๐Ÿ’€
  • -u, --unsat-core โ€” experimental support for computing and printing unsat-cores ๐Ÿงช
  • -v, --verbose โ€” turns on verbose mode ๐Ÿ“ฃ

โœจ EXECUTION OPTIONS โœจ

  • --add-parser=VAL โ€” registers a brand new parser for Alt-Ergo ๐Ÿงš
  • --colors-in-output โ€” prints output with colors ๐ŸŒˆ
  • --frontend=FTD (absent=legacy) โ€” picks the parsing and typing frontend ๐Ÿงฉ
  • --no-forced-flush-in-output โ€” prints output without the forced flush at the end of each print โœจ
  • --no-formatting-in-output โ€” don't use formatting rules in the output ๐Ÿ™…โ€โ™€๏ธ
  • --no-headers-in-output โ€” prints output without headers ๐ŸŽ€
  • --no-locs-in-answers โ€” doesn't show the locations of goals when the solver prints its answers ๐Ÿ“
  • --parse-only โ€” stops right after parsing ๐Ÿ›‘
  • --prelude=VAL โ€” adds a file that gets loaded as a prelude ๐Ÿ“š This one is cumulative, and the order of successive preludes is kept, so the order you list them in matters ๐Ÿซถ
  • --type-only โ€” stops right after typing ๐Ÿ›‘
  • --type-smt2 โ€” stops right after SMT2 typing ๐Ÿ›‘

โœจ LIMIT OPTIONS โœจ

  • --age-bound=AGE (absent=50) โ€” sets the age limit bound โณ
  • --fm-cross-limit=VAL (absent=10000) โ€” skips the Fourier-Motzkin variable elimination steps that might produce more inequalities than the given limit ๐Ÿšซ Unit eliminations always happen though, no matter what ๐Ÿ’…
  • --timelimit-interpretation=SEC โ€” sets the time limit to SEC seconds for model generation โฑ๏ธ Also not supported on Windows, sorry bestie ๐Ÿ˜ญ
  • --timelimit-per-goal โ€” the time limit you gave with --timelimit gets applied to each goal when a file has multiple goals ๐ŸŽฏ In that case, preprocessing time is counted separately from resolution time. This doesn't matter in GUI mode ๐Ÿ–ฅ๏ธ

โœจ INTERNAL OPTIONS โœจ

  • --disable-weaks โ€” stops the GC from collecting hashconsed data structures that aren't reachable ๐Ÿ—‘๏ธ This is useful if you want more determinism ๐Ÿค“
  • --enable-assertions โ€” turns on verification of some heavy invariants ๐Ÿ”
  • --gc-policy=PLCY (absent=0) โ€” sets the GC allocation policy ๐Ÿง  0 is next-fit, 1 is first-fit, and 2 is best-fit. Check out the Gc module of the OCaml distribution if you want more info ๐Ÿ“–
  • --warning-as-error โ€” treats warnings as errors โš ๏ธ

โœจ OUTPUT OPTIONS โœจ

  • --interpretation=VAL (absent=0) โ€” experimental counter-example generation ๐Ÿ•ต๏ธ The possible values are 1, 2, or 3, which compute an interpretation before returning Unknown, before instantiation (1), before every decision (2), or before every instantiation (3). A negative value (-1, -2, or -3) turns off interpretation display ๐Ÿ™ˆ Also, note that the --max-split limitation gets ignored during the model generation phase โœจ

โœจ CONTEXT OPTIONS โœจ

  • --replay โ€” replays a session that was saved in file_name.agr ๐ŸŽฌ
  • --replay-all-used-context โ€” replays using all the axioms and predicates saved in the .used files in the current directory ๐Ÿ“‚

โœจ PROFILING OPTIONS โœจ

  • --cumulative-time-profiling โ€” records the time spent in called functions inside their callers โณ
  • --profiling=DELAY โ€” activates the profiling module at the given frequency ๐Ÿ“Š Press Ctrl-C to switch between different views, and press Ctrl + AltGr + \ to exit ๐Ÿฆ‹
  • --profiling-plugin=PGN โ€” uses the given profiling plugin ๐Ÿ”Œ

๐Ÿ› DEBUG OPTIONS ๐Ÿ›

okay so these are the debug flags ๐Ÿ” each one prints debug info for one specific part of the solver. heads up though, bestie: they are not for checking internal consistency, so don't expect them to double-check the solver's homework ๐Ÿ’…

  • --dac โ€” turns on the debug flag for ac ๐ŸŽ€
  • --dadt โ€” turns on the debug flag for ADTs
  • --darith โ€” turns on the debug flag for Arith (without fm) โœจ
  • --darrays โ€” turns on the debug flag for arrays
  • --dbitv โ€” turns on the debug flag for bitv
  • --dcc โ€” turns on the debug flag for cc
  • --dcombine โ€” turns on the debug flag for combine
  • --dconstr โ€” turns on the debug flag for constructors
  • --debug-interpretation โ€” turns on the debug flag for interpretation generation ๐Ÿ”ฎ
  • --debug-unsat-core โ€” replays the unsat-cores produced by --unsat-core. this one also implies --unsat-core, so you don't have to add it yourself ๐Ÿซถ
  • --dexplanations โ€” turns on the debug flag for explanations
  • --dfm โ€” turns on the debug flag for inequalities
  • --dfpa=INT (absent=0) โ€” turns on the debug flag for floating-point ๐ŸŒธ
  • --dgc โ€” prints some debug info about the GC's activity ๐Ÿ—‘๏ธ
  • --dite โ€” turns on the debug flag for ite
  • --dmatching=FLAG (absent=0) โ€” turns on the debug flag for E-matching. 0 is disabled, 1 is light, and 2 is full ๐Ÿฆ‹
  • --dsat โ€” turns on the debug flag for sat
  • --dsplit โ€” turns on the debug flag for case-split analysis
  • --dsum โ€” turns on the debug flag for Sum
  • --dtriggers โ€” turns on the debug flag for triggers
  • --dtypes โ€” turns on the debug flag for types
  • --dtyping โ€” turns on the debug flag for typing (not the same as types, so don't mix them up ๐Ÿ‘€)
  • --duf โ€” turns on the debug flag for uf
  • --duse โ€” turns on the debug flag for use
  • --dwarnings โ€” turns on the debug flag for warnings
  • --rule=TR (absent=none) โ€” TR is one of parsing|typing|sat|cc|arith, and it prints the rule that got used on stderr ๐Ÿ“ฃ

๐ŸŽ€ COMMON OPTIONS ๐ŸŽ€

  • --help[=FMT] (default=auto) โ€” shows this help in the format FMT. FMT has to be one of auto, pager, groff or plain. with auto, you get pager or plain whenever the TERM env var is dumb or undefined ๐Ÿ’–
  • --version โ€” shows the version info โœจ

๐Ÿšช EXIT STATUS ๐Ÿšช

alt-ergo exits with:

  • 0 โ€” on success ๐ŸŽ‰
  • 1 โ€” on default errors
  • 123 โ€” on indiscriminate errors reported on standard error
  • 124 โ€” on command line parsing errors
  • 125 โ€” on unexpected internal errors (bugs) ๐Ÿ’€
  • 142 โ€” on timeout errors โฐ

๐Ÿž BUGS ๐Ÿž

You can open an issue on: https://github.com/OCamlPro/alt-ergo/issues ๐Ÿซถ

Or you can write to: alt-ergo@ocamlpro.com ๐Ÿ’Œ


๐Ÿ‘‘ AUTHORS ๐Ÿ‘‘

โœจ CURRENT AUTHORS โœจ

  • Sylvain Conchon
  • Albin Coquereau
  • Guillaume Bury
  • Mattias Roux

๐ŸŒˆ ORIGINAL AUTHORS ๐ŸŒˆ

  • Sylvain Conchon
  • Evelyne Contejean
  • Mohamed Iguernlala
  • Stephane Lescuyer
  • Alain Mebsout

That's the whole page, bestie ๐Ÿฆ‹ Alt-Ergo 2.4.3-free, manual page ALT-ERGO(1), all wrapped up and slay ๐Ÿ’…๐ŸŒธ

๐Ÿ“ฆ where this page comes from