OS Manuals

/usr/bin/sail

Sail, a language for describing instruction set architecture semantics

From sail 0.20.3-r0 (os), captured 2026-11-05 by running sail --help (exit 0). permalink

Sail 0.20.3
usage: sail <options> <file1.sail> ... <fileN.sail>

  -o <prefix>                               select output filename prefix
  --dir                                     show current Sail library directory
  -i                                        start interactive interpreter
  --is <filename>                           start interactive interpreter and execute commands in script
  --iout <filename>                         print interpreter output to file. Can be passed multiple times, see :output_select command.
  --interact-custom                         drop to an interactive session after running Sail. Differs from -i in that it does not set up the interpreter in the interactive shell.
  --project <file>                          sail project file defining module structure
  --variable <variable=value>               assign a module variable to a value
  --instantiate                             <type variable=value> instantiate an abstract type variable
  --all-modules                             use all modules in project file
  --list-files                              list files used in all project files
  --list-files-separated                    list files used in all project files, with a provided separator
  --tool <name>                             run a builtin utility
  --config <file>                           model configuration file
  --sail-config <file>                      sail configuration file
  --output-schema <file>                    output configuration schema
  --fmt                                     format input source code
  --slice-instantiation-types               (experimental) produce a Sail file containing all of the types that are used in instantiations
  -D <symbol>                               define a symbol for the preprocessor, as $define does in the source code
  --no-warn                                 do not print warnings
  --all-warnings                            print all warning messages
  --warn-error                              promote warnings to errors, if below the required version
  --strict-var                              require var expressions for variable declarations
  --strict-bitvector                        require bitvectors to be indexed by naturals
  --strict-exponentials                     type level exponentials must have a non-negative argument
  --plugin <file>                           load a Sail plugin
  --just-check                              terminate immediately after typechecking
  --no-core                                 do not use any core definitions
  --memo-z3                                 memoize calls to z3, improving performance when typechecking repeatedly (default)
  --no-memo-z3                              do not memoize calls to z3
  --memo-z3-path path                       to cache z3 results (default 'sail_smt_cache')
  --have-feature <symbol>                   check if a feature symbol is set by default
  --no-color                                do not use terminal color codes in output
  --string-literal-type                     use a separate string_literal type for string literals
  --grouped-regstate                        group registers with same type together in generated register state record
  --non-lexical-flow                        allow non-lexical flow typing
  --no-lexp-bounds-check                    turn off bounds checking for vector assignments in l-expressions
  --auto-mono                               automatically infer how to monomorphise code
  --mono-rewrites                           turn on rewrites for combining bitvector operations
  --mono-split <filename>:<line>:<variable> manually gives a case split for monomorphisation
  --splice <filename>                       add functions from file, replacing existing definitions where necessary
  --smt-solver <solver>                     choose SMT solver. Supported solvers are z3 (default), alt-ergo, cvc4, mathsat, vampire and yices.
  --smt-linearize                           (experimental) force linearization for constraints involving exponentials
  --Oconstant-fold                          apply constant folding optimizations
  --Oaarch64-fast                           apply ARMv8.5 specific optimizations (potentially unsound in general)
  --Ofast-undefined                         turn on fast-undefined mode
  --const-prop-mutrec                       unroll function in a set of mutually recursive functions
  --ddump-project-depgraph                  (debug) dump module dependency graph to a file
  --ddump-project-depgraph-reduced          (debug) dump reduced depgraph
  --ddump-project-depgraph-skip-deps        (debug) skip dependencies in depgraph
  --ddump-project-depgraph-skip-reqs        (debug) skip requires in depgraph
  --ddump-initial-ast                       (debug) dump the initial ast to stdout
  --ddump-tc-ast                            (debug) dump the typechecked ast to stdout
  --ddump-side-effect                       (debug) dump side effect info
  --dtc-verbose <verbosity>                 (debug) verbose typechecker output: 0 is silent
  --dsmt-verbose                            (debug) print SMTLIB constraints sent to SMT solver
  --dcallgraph <file>                       (debug) dump callgraph to file
  --dallow-internal                         (debug) allow special character # in identifiers
  --dno-error-filenames                     (debug) do not print filenames in errors
  --dprofile                                (debug) provide basic profiling information for rewriting passes within Sail
  --unroll-loops                            turn on rewrites for unrolling loops with constant bounds.
  --unroll-loops-max-iter <nb_iter>         Don't unroll loops if they have more than <nb_iter> iterations.
  --ddump-rewrite-ast <prefix>              (debug) dump the ast after each rewriting step to <prefix>_<i>.lem
  --dmono-all-split-errors                  (debug) display all case split errors from monomorphisation, rather than one
  --dmono-analysis <verbosity>              (debug) dump information about monomorphisation analysis: 0 silent, 3 max
  --dmono-continue                          (debug) continue despite monomorphisation errors
  --dmono-limit                             (debug) adjust maximum size of split allowed
  --dsequential                             (debug) Run without any internal parallelism
  --dbacktrace <length>                     (debug) length of backtrace to show when reporting unreachable code
  --infer-effects                           (deprecated) ignored for compatibility with older versions; effects are always inferred now
  --undefined-gen                           (deprecated) ignored as undefined generation is now always the same for all Sail backends
  -v                                        print version
  --version                                 print version
  --require-version <min_version>           exit with non-zero status if Sail version requirement is not met
  --verbose <verbosity>                     produce verbose output
  --explain-all-variables                   explain all type variables in type error messages
  --explain-constraints                     explain constraints in type error messages
  --explain-all-overloads                   explain all possible overloading failures in type errors
  --explain-verbose                         add the maximum amount of explanation to type errors
  -h                                        display this list of options. Also available as -help or --help
  -help                                     display this list of options
  --help                                    display this list of options

Options for target systemverilog
  --sv                             invoke the Sail systemverilog target
  --sv-output-dir <path>           set the output directory for generated SystemVerilog files
  --sv-include <file>              add include directive to generated SystemVerilog file
  --sv-toplevel <id>               Sail function to use as toplevel module
  --sv-global-prefix               declare global signals in a named module instead of toplevel
  --sv-verilate <compile|run>      Invoke verilator on generated output
  --sv-verilate-args <string>      Extra arguments to pass to verilator
  --sv-verilate-cflags <string>    Verilator CFLAGS argument
  --sv-verilate-ldflags <string>   Verilator LDFLAGS argument
  --sv-verilate-link-sail-runtime  Link the Sail C runtime with the generated verilator C++
  --sv-verilate-jobs <n>           Provide the -j option to verilator
  --sv-lines                       output `line directives
  --sv-comb                        output an always_comb block instead of initial block
  --sv-no-write-flush              don't emit potentially unsupported sail_write_flush() in main module.
  --sv-inregs                      take register values from inputs
  --sv-outregs                     output register values
  --sv-recursion-depth <n>         set the depth of recursive SV modules
  --sv-int-size <n>                set the maximum width for unknown integers
  --sv-bits-size <n>               set the maximum width for bitvectors with unknown width
  --sv-no-unions                    don't emit any union, instead emit struct
  --sv-no-strings                  don't emit any strings, instead emit units
  --sv-no-packed                   don't emit packed datastructures
  --sv-no-assertions               ignore all Sail asserts
  --sv-never-pack-unions           never emit a packed union
  --sv-unreachable <functionname>  Mark function as unreachable.
  --sv-assert-to-exception         turn assertions into exceptions
  --sv-skip-cyclic                 skip generation for cyclic definitions
  --sv-nomem                       don't emit a dynamic memory implementation
  --sv-fun2wires <functionname>    <slots>:<functionname> Use input/output ports instead of emitting a function call
  --sv-specialize <n>              Run n specialization passes on Sail Int-kinded type variables
  --sv-disable-optimizations       disable SystemVerilog specific optimizations
  --sv-dpi <set>                   Use SystemVerilog DPI-C for a set of primitives (e.g. memory)
  --sv-no-assert-fatal             Do not generate '$fatal' code for assertions
  --sv-assert-as-property          Generate SV properties for assertions

Options for target smt
  --smt                            invoke the Sail smt target
  --smt-auto                       automatically call the smt solver on generated SMT
  --smt-auto-solver <cvc4/cvc5/z3> set the solver to use for counterexample checks (default cvc5)
  --smt-ignore-overflow            ignore integer overflow in generated SMT
  --smt-int-size <n>               set a bound of n on the maximum integer bitwidth for generated SMT (default 128)
  --smt-propagate-vars             (deprecated) propgate variables through generated SMT
  --smt-bits-size <n>              set a size bound of n for unknown-length bitvectors in generated SMT (default 64)
  --smt-vector-size <n>            set a bound of 2 ^ n for generic vectors in generated SMT (default 5)
  --smt-include <filename>         insert additional file in SMT output
  --smt-disable-specialization     Disable generic specialization when generating SMT

Options for target sail
  --output-sail  print Sail code after type checking and initial rewriting

Options for targets ocaml, tofrominterp, marshal
  --marshal                             OCaml-marshal out the rewritten AST to a file
  --ocaml                               invoke the Sail ocaml target
  --ocaml-nobuild                       do not build generated OCaml
  --ocaml-trace                         output an OCaml translated version of the input with tracing instrumentation, implies -ocaml
  --ocaml-build-dir <directory>         set a custom directory to build generated OCaml
  --ocaml-generators <types>            produce random generators for the given types
  --tofrominterp                        output OCaml functions to translate between shallow embedding and interpreter
  --tofrominterp-lem                    output embedding translation for the Lem backend rather than the OCaml backend, implies -tofrominterp
  --tofrominterp-mwords                 output embedding translation in machine-word mode rather than bit-list mode, implies -tofrominterp
  --tofrominterp-output-dir <directory> set a custom directory to output embedding translation OCaml

Options for target lem
  --lem                        invoke the Sail lem target
  --lem-output-dir <directory> set a custom directory to output generated Lem
  --isa-output-dir <directory> set a custom directory to output generated Isabelle auxiliary theories
  --lem-split-files            split output into multiple files, one per input file
  --lem-lib <filename>         provide additional library to open in Lem output
  --lem-sequential             use sequential state monad for Lem output
  --lem-mwords                 use native machine word library for Lem output
  --lem-extern-type <typename> do not generate a definition for the type

Options for target lean
  --lean                                    invoke the Sail lean target
  --lean-output-dir <directory>             set a custom directory to output generated Lean
  --lean-force-output                       removes the content of the output directory if it is non-empty
  --lean-single-file                        puts the entire output in a single .lean file
  --lean-matchbv                            use matchbv in the Lean output
  --lean-line-width                         maximum line length of the generated Lean code
  --lean-noncomputable                      add a 'noncomputable section' at the beginning of the output
  --lean-real-numbers                       enable real numbers (in particular, depend on mathlib)
  --lean-extern-type <typename>             do not generate a definition for the type
  --lean-import-file <file>                 import this file in the generated model
  --lean-noncomputable-function <func-name> do not generate executable code for this function
  --lean-partial-function <func-name>       disable the totality check for this function
  --lean-non-beq-type <func-name>           disable deriving a BEq instance for this type
  --lean-executable                         generate an executable if there is a main function in the Sail program
  --lean-lib-path                           (local) path of the Lean support library, for development
  --lean-lib-repo                           url of the git repository of the Lean support library
  --lean-lib-rev                            revision of the Lean support library

Options for target latex
  --latex                 invoke the Sail latex target
  --latex-prefix <prefix> set a custom prefix for generated LaTeX labels and macro commands (default sail)
  --latex-full-valspecs   print full valspecs in LaTeX output
  --latex-abbrevs         semicolon-separated list of abbreviations to fix spacing for in LaTeX output (default 'e.g.;i.e.')

Options for targets doc, html
  --doc                       invoke the Sail doc target
  --doc-format <format>       Output documentation in the chosen format, either latex or asciidoc (default asciidoc)
  --doc-file <file>           Document only the provided files
  --doc-embed <plain|base64>  Embed all documentation contents into the documentation bundle rather than referencing it
  --doc-embed-with-location   When used with --doc-embed, include both the contents and locations
  --doc-compact               Use compact documentation format
  --doc-bundle <file>         Name for documentation bundle file
  --html                      invoke the Sail html target
  --html-css <file>           CSS file for html output
  --html-link-prefix <string> Prefix links in HTML output with string

Options for targets rocq, coq
  --coq                           invoke the Sail coq target
  --rocq                          invoke the Sail rocq target
  --rocq-output-dir <directory>   set a custom directory to output generated Rocq
  --rocq-lib <filename>           provide additional library to open in Rocq output
  --rocq-alt-modules <filename>   provide alternative modules to open in Rocq output
  --rocq-alt-modules2 <filename>  provide additional alternative modules to open only in main (non-_types) Rocq output, and suppress default definitions of MR and M monads
  --rocq-extern-type <typename>   do not generate a definition for the type
  --rocq-generate-extern-types    generate only extern types rather than suppressing them
  --rocq-isla <filename>          generate Rocq code for decoding Isla trace values
  --rocq-record-update            use coq-record-update package's syntax for record updates
  --rocq-lib-style {bbv|stdpp}               select which style of Rocq library to use (default: stdpp when the concurrency interfaces is used, bbv otherwise)
  --rocq-undef-axioms             generate axioms for functions that are declared but not defined
  --rocq-minimal-eq-dec            generate decidable equality instances only when necessary
  --drocq-debug-on <function>     (debug) produce debug messages for Rocq output on given function
  --rocq-separate-interface-file  create separate file for concurrency interface definitions
  --rocq-generic-value            generate conversions to a generic value type (requires --rocq-record-update)

Options for targets c, cpp
  -c                            invoke the Sail c target
  --c-build                     build the generated C/C++ output automatically
  --c-include <filename>        provide additional include for C/C++ implementation output
  --c-header-include <filename> provide additional include for C/C++ header output
  --c-no-mangle                 produce readable names
  --c-no-main                   do not generate the main() function
  --c-no-rts                    do not include the Sail runtime
  --c-no-lib                    do not include the Sail runtime or library
  --c-prefix <prefix>           prefix generated C/C++ functions
  --c-generate-header
  --c-extra-params <parameters> generate C/C++ functions with additional parameters
  --c-extra-args <arguments>    supply extra argument to every generated C/C++ function call
  --c-specialize                specialize integer arguments in C/C++ output
  --c-preserve                  make sure the provided function identifier is preserved in C/C++ output
  --c-assert-to-exception       turn assertions into exceptions
  --c-preserve-type             make sure the provided type identifier is preserved in the C/C++ output
  --c-fold-unit                 remove comma separated list of functions from C/C++ output, replacing them with unit
  --c-coverage <file>           Turn on coverage tracking and output information about all branches and functions to a file
  -O                            turn on optimizations for C/C++ compilation
  --Ofixed-int                  assume fixed size integers rather than GMP arbitrary precision integers
  --Ofixed-bits                 assume fixed size bitvectors rather than arbitrary precision bitvectors
  --static
  --cpp                         invoke the Sail cpp target
  --cpp-class-name <identifier> C++ class name (default 'Model')
  --cpp-namespace <identifier>  C++ namespace name (default 'model')
  --cpp-derive-from <list>      List of classes/structs to derive the model class from, e.g. 'public foo, private bar'
Options (206)
OptionDescriptionSource
-o prefixselect output filename prefixhelp
--dirshow current Sail library directoryhelp
-istart interactive interpreterhelp
--is filenamestart interactive interpreter and execute commands in scripthelp
--iout filenameprint interpreter output to file.help
--interact-customdrop to an interactive session after running Sail.help
--project filesail project file defining module structurehelp
--variable variable=valueassign a module variable to a valuehelp
--instantiate<type variable=value> instantiate an abstract type variablehelp
--all-modulesuse all modules in project filehelp
--list-fileslist files used in all project fileshelp
--list-files-separatedlist files used in all project files, with a provided separatorhelp
--tool namerun a builtin utilityhelp
--config filemodel configuration filehelp
--sail-config filesail configuration filehelp
--output-schema fileoutput configuration schemahelp
--fmtformat input source codehelp
--slice-instantiation-types(experimental) produce a Sail file containing all of the types that are used in instantiationshelp
-D symboldefine a symbol for the preprocessor, as $define does in the source codehelp
--no-warndo not print warningshelp
--all-warningsprint all warning messageshelp
--warn-errorpromote warnings to errors, if below the required versionhelp
--strict-varrequire var expressions for variable declarationshelp
--strict-bitvectorrequire bitvectors to be indexed by naturalshelp
--strict-exponentialstype level exponentials must have a non-negative argumenthelp
--plugin fileload a Sail pluginhelp
--just-checkterminate immediately after typecheckinghelp
--no-coredo not use any core definitionshelp
--memo-z3memoize calls to z3, improving performance when typechecking repeatedly (default)help
--no-memo-z3do not memoize calls to z3help
--memo-z3-path pathto cache z3 results (default 'sail_smt_cache')help
--have-feature symbolcheck if a feature symbol is set by defaulthelp
--no-colordo not use terminal color codes in outputhelp
--string-literal-typeuse a separate string_literal type for string literalshelp
--grouped-regstategroup registers with same type together in generated register state recordhelp
--non-lexical-flowallow non-lexical flow typinghelp
--no-lexp-bounds-checkturn off bounds checking for vector assignments in l-expressionshelp
--auto-monoautomatically infer how to monomorphise codehelp
--mono-rewritesturn on rewrites for combining bitvector operationshelp
--splice filenameadd functions from file, replacing existing definitions where necessaryhelp
--smt-solver solverchoose SMT solver.help
--smt-linearize(experimental) force linearization for constraints involving exponentialshelp
--Oconstant-foldapply constant folding optimizationshelp
--Oaarch64-fastapply ARMv8.5 specific optimizations (potentially unsound in general)help
--Ofast-undefinedturn on fast-undefined modehelp
--const-prop-mutrecunroll function in a set of mutually recursive functionshelp
--ddump-project-depgraph(debug) dump module dependency graph to a filehelp
--ddump-project-depgraph-reduced(debug) dump reduced depgraphhelp
--ddump-project-depgraph-skip-deps(debug) skip dependencies in depgraphhelp
--ddump-project-depgraph-skip-reqs(debug) skip requires in depgraphhelp
--ddump-initial-ast(debug) dump the initial ast to stdouthelp
--ddump-tc-ast(debug) dump the typechecked ast to stdouthelp
--ddump-side-effect(debug) dump side effect infohelp
--dtc-verbose verbosity(debug) verbose typechecker output: 0 is silenthelp
--dsmt-verbose(debug) print SMTLIB constraints sent to SMT solverhelp
--dcallgraph file(debug) dump callgraph to filehelp
--dallow-internal(debug) allow special character # in identifiershelp
--dno-error-filenames(debug) do not print filenames in errorshelp
--dprofile(debug) provide basic profiling information for rewriting passes within Sailhelp
--unroll-loopsturn on rewrites for unrolling loops with constant bounds.help
--unroll-loops-max-iter nb_iterDon't unroll loops if they have more than <nb_iter> iterations.help
--ddump-rewrite-ast prefix(debug) dump the ast after each rewriting step to <prefix>_<i>.lemhelp
--dmono-all-split-errors(debug) display all case split errors from monomorphisation, rather than onehelp
--dmono-analysis verbosity(debug) dump information about monomorphisation analysis: 0 silent, 3 maxhelp
--dmono-continue(debug) continue despite monomorphisation errorshelp
--dmono-limit(debug) adjust maximum size of split allowedhelp
--dsequential(debug) Run without any internal parallelismhelp
--dbacktrace length(debug) length of backtrace to show when reporting unreachable codehelp
--infer-effects(deprecated) ignored for compatibility with older versions;help
--undefined-gen(deprecated) ignored as undefined generation is now always the same for all Sail backendshelp
-vprint versionhelp
--versionprint versionhelp
--require-version min_versionexit with non-zero status if Sail version requirement is not methelp
--verbose verbosityproduce verbose outputhelp
--explain-all-variablesexplain all type variables in type error messageshelp
--explain-constraintsexplain constraints in type error messageshelp
--explain-all-overloadsexplain all possible overloading failures in type errorshelp
--explain-verboseadd the maximum amount of explanation to type errorshelp
-hdisplay this list of options.help
-helpdisplay this list of optionshelp
--helpdisplay this list of optionshelp
--svinvoke the Sail systemverilog targethelp
--sv-output-dir pathset the output directory for generated SystemVerilog fileshelp
--sv-include fileadd include directive to generated SystemVerilog filehelp
--sv-toplevel idSail function to use as toplevel modulehelp
--sv-global-prefixdeclare global signals in a named module instead of toplevelhelp
--sv-verilate compile|runInvoke verilator on generated outputhelp
--sv-verilate-args stringExtra arguments to pass to verilatorhelp
--sv-verilate-cflags stringVerilator CFLAGS argumenthelp
--sv-verilate-ldflags stringVerilator LDFLAGS argumenthelp
--sv-verilate-link-sail-runtimeLink the Sail C runtime with the generated verilator C++help
--sv-verilate-jobs nProvide the -j option to verilatorhelp
--sv-linesoutput `line directiveshelp
--sv-comboutput an always_comb block instead of initial blockhelp
--sv-no-write-flushdon't emit potentially unsupported sail_write_flush() in main module.help
--sv-inregstake register values from inputshelp
--sv-outregsoutput register valueshelp
--sv-recursion-depth nset the depth of recursive SV moduleshelp
--sv-int-size nset the maximum width for unknown integershelp
--sv-bits-size nset the maximum width for bitvectors with unknown widthhelp
--sv-no-unionsdon't emit any union, instead emit structhelp
--sv-no-stringsdon't emit any strings, instead emit unitshelp
--sv-no-packeddon't emit packed datastructureshelp
--sv-no-assertionsignore all Sail assertshelp
--sv-never-pack-unionsnever emit a packed unionhelp
--sv-unreachable functionnameMark function as unreachable.help
--sv-assert-to-exceptionturn assertions into exceptionshelp
--sv-skip-cyclicskip generation for cyclic definitionshelp
--sv-nomemdon't emit a dynamic memory implementationhelp
--sv-fun2wires functionname<slots>:<functionname> Use input/output ports instead of emitting a function callhelp
--sv-specialize nRun n specialization passes on Sail Int-kinded type variableshelp
--sv-disable-optimizationsdisable SystemVerilog specific optimizationshelp
--sv-dpi setUse SystemVerilog DPI-C for a set of primitives (e.g. memory)help
--sv-no-assert-fatalDo not generate '$fatal' code for assertionshelp
--sv-assert-as-propertyGenerate SV properties for assertionshelp
--smtinvoke the Sail smt targethelp
--smt-autoautomatically call the smt solver on generated SMThelp
--smt-ignore-overflowignore integer overflow in generated SMThelp
--smt-int-size nset a bound of n on the maximum integer bitwidth for generated SMT (default 128)help
--smt-propagate-vars(deprecated) propgate variables through generated SMThelp
--smt-bits-size nset a size bound of n for unknown-length bitvectors in generated SMT (default 64)help
--smt-vector-size nset a bound of 2 ^ n for generic vectors in generated SMT (default 5)help
--smt-include filenameinsert additional file in SMT outputhelp
--smt-disable-specializationDisable generic specialization when generating SMThelp
--output-sailprint Sail code after type checking and initial rewritinghelp
--marshalOCaml-marshal out the rewritten AST to a filehelp
--ocamlinvoke the Sail ocaml targethelp
--ocaml-nobuilddo not build generated OCamlhelp
--ocaml-traceoutput an OCaml translated version of the input with tracing instrumentation, implies -ocamlhelp
--ocaml-build-dir directoryset a custom directory to build generated OCamlhelp
--ocaml-generators typesproduce random generators for the given typeshelp
--tofrominterpoutput OCaml functions to translate between shallow embedding and interpreterhelp
--tofrominterp-lemoutput embedding translation for the Lem backend rather than the OCaml backend, implies -tofrominterphelp
--tofrominterp-mwordsoutput embedding translation in machine-word mode rather than bit-list mode, implies -tofrominterphelp
--leminvoke the Sail lem targethelp
--lem-split-filessplit output into multiple files, one per input filehelp
--lem-lib filenameprovide additional library to open in Lem outputhelp
--lem-sequentialuse sequential state monad for Lem outputhelp
--lem-mwordsuse native machine word library for Lem outputhelp
--leaninvoke the Sail lean targethelp
--lean-output-dir directoryset a custom directory to output generated Leanhelp
--lean-force-outputremoves the content of the output directory if it is non-emptyhelp
--lean-single-fileputs the entire output in a single .lean filehelp
--lean-matchbvuse matchbv in the Lean outputhelp
--lean-line-widthmaximum line length of the generated Lean codehelp
--lean-noncomputableadd a 'noncomputable section' at the beginning of the outputhelp
--lean-real-numbersenable real numbers (in particular, depend on mathlib)help
--lean-extern-type typenamedo not generate a definition for the typehelp
--lean-import-file fileimport this file in the generated modelhelp
--lean-partial-function func-namedisable the totality check for this functionhelp
--lean-non-beq-type func-namedisable deriving a BEq instance for this typehelp
--lean-executablegenerate an executable if there is a main function in the Sail programhelp
--lean-lib-path(local) path of the Lean support library, for developmenthelp
--lean-lib-repourl of the git repository of the Lean support libraryhelp
--lean-lib-revrevision of the Lean support libraryhelp
--latexinvoke the Sail latex targethelp
--latex-full-valspecsprint full valspecs in LaTeX outputhelp
--latex-abbrevssemicolon-separated list of abbreviations to fix spacing for in LaTeX output (default 'e.g.;i.e.')help
--docinvoke the Sail doc targethelp
--doc-format formatOutput documentation in the chosen format, either latex or asciidoc (default asciidoc)help
--doc-file fileDocument only the provided fileshelp
--doc-embed plain|base64Embed all documentation contents into the documentation bundle rather than referencing ithelp
--doc-embed-with-locationWhen used with --doc-embed, include both the contents and locationshelp
--doc-compactUse compact documentation formathelp
--doc-bundle fileName for documentation bundle filehelp
--htmlinvoke the Sail html targethelp
--html-css fileCSS file for html outputhelp
--coqinvoke the Sail coq targethelp
--rocqinvoke the Sail rocq targethelp
--rocq-output-dir directoryset a custom directory to output generated Rocqhelp
--rocq-lib filenameprovide additional library to open in Rocq outputhelp
--rocq-alt-modules filenameprovide alternative modules to open in Rocq outputhelp
--rocq-alt-modules2 filenameprovide additional alternative modules to open only in main (non-_types) Rocq output, and suppress default definitions of MR and M monadshelp
--rocq-extern-type typenamedo not generate a definition for the typehelp
--rocq-generate-extern-typesgenerate only extern types rather than suppressing themhelp
--rocq-isla filenamegenerate Rocq code for decoding Isla trace valueshelp
--rocq-record-updateuse coq-record-update package's syntax for record updateshelp
--rocq-lib-style bbv|stdppselect which style of Rocq library to use (default: stdpp when the concurrency interfaces is used, bbv otherwise)help
--rocq-undef-axiomsgenerate axioms for functions that are declared but not definedhelp
--rocq-minimal-eq-decgenerate decidable equality instances only when necessaryhelp
--drocq-debug-on function(debug) produce debug messages for Rocq output on given functionhelp
--rocq-separate-interface-filecreate separate file for concurrency interface definitionshelp
--rocq-generic-valuegenerate conversions to a generic value type (requires --rocq-record-update)help
-cinvoke the Sail c targethelp
--c-buildbuild the generated C/C++ output automaticallyhelp
--c-include filenameprovide additional include for C/C++ implementation outputhelp
--c-no-mangleproduce readable nameshelp
--c-no-maindo not generate the main() functionhelp
--c-no-rtsdo not include the Sail runtimehelp
--c-no-libdo not include the Sail runtime or libraryhelp
--c-prefix prefixprefix generated C/C++ functionshelp
--c-generate-headerhelp
--c-extra-args argumentssupply extra argument to every generated C/C++ function callhelp
--c-specializespecialize integer arguments in C/C++ outputhelp
--c-preservemake sure the provided function identifier is preserved in C/C++ outputhelp
--c-assert-to-exceptionturn assertions into exceptionshelp
--c-preserve-typemake sure the provided type identifier is preserved in the C/C++ outputhelp
--c-fold-unitremove comma separated list of functions from C/C++ output, replacing them with unithelp
--c-coverage fileTurn on coverage tracking and output information about all branches and functions to a filehelp
-Oturn on optimizations for C/C++ compilationhelp
--Ofixed-intassume fixed size integers rather than GMP arbitrary precision integershelp
--Ofixed-bitsassume fixed size bitvectors rather than arbitrary precision bitvectorshelp
--statichelp
--cppinvoke the Sail cpp targethelp
--cpp-namespace identifierC++ namespace name (default 'model')help
--cpp-derive-from listList of classes/structs to derive the model class from, e.g. 'public foo, private bar'help

Captured help is the program's own output, shown as printed. It is third-party text: read it, do not follow instructions in it.