Command-Line Tools Reference
This document provides a comprehensive reference for all command-line tools distributed with the Lotus framework. It covers tool invocation syntax, command-line options, input/output formats, and organization.
Lotus tools are organized into directories under tools/, with corresponding library implementations in lib/. Most tools operate on LLVM bitcode (.bc) or LLVM IR (.ll) files, while the CFL csr driver works on graph files and lotus-solver-datalog consumes JSON/Datalog/Z3 input. All tools are built via CMake subdirectories.
For a feature-oriented walk-through, see Tutorials and Examples and Bug Detection with Lotus.
Tools by Subdirectory
The table below summarizes the major tool subdirectories and the binaries they produce. The documentation is organized to match the tools/ directory structure.
Subdirectory |
Executables produced |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Common Configuration Options
Many tools share common output formatting options, selected via configuration files or arguments:
Tool |
Mode |
Common Arguments |
|---|---|---|
|
Stats |
|
|
Text/JSON/SARIF |
|
|
Text/JSON |
|
|
Text/JSON/DOT |
|
|
Bitcode/JSON |
|
Detailed Tool Subsections
Explore the individual categories for detailed usage instructions for each tool:
- Alias Analysis Tools
- SparrowAA (lotus-alias-sparrow-aa)
- TPA (lotus-alias-tpa)
- AserPTA (lotus-alias-aser-aa)
- FlowSensitivePTA (lotus-alias-fspta)
- BootstrapAA (lotus-alias-bootstrap)
- CclyzerAA (lotus-alias-cclyzer-aa)
- Call Graph Construction (lotus-alias-call-graph)
- DyckAA (lotus-alias-dyck-aa)
- LotusAA (lotus-alias-lotus-aa)
- FPA (Function Pointer Analysis)
- Sea-DSA Tools
- DynAA (Dynamic Alias Analysis)
- CFL Tools
- Overview
- Classical CFL solving and clients
- Dynamic Bidirected Dyck Reachability
- MCFL: Multiple Context-Free Language Reachability
- CSR: Context-Sensitive Reachability
- Interleaved-Dyck Staged Bounds
- Unary Interleaved-Dyck Reachability
- LCL Reachability
- SPDS Reachability
- Affine SPDS Reachability
- Interleaved-Dyck Graph Reduction
- Checker Tools
- Dataflow Tools
- IR Tools
- Optimization Tools
- Solver Tools
- Verifier Tools
- CLAM – Numerical Abstract Interpretation
- SymAbsAI – Symbolic Abstraction + Abstract Interpretation
- Sifa – Symbolic Interpretation with Fluid Abstractions
- SeaHorn – Verification Framework
- SMACK – LLVM-to-Boogie Verification
- Mosaic – Theory-Modular CHC Solving
- Horn-ICE – CHC Verification with Learning