Overall system architecture.
Flags Parsing of command line argumentsStrategy A strategy returns an Analysis.param option which is None if done. It takesAnalysis Interface between strategy and low-level analysisInvarManager Invariant managerPostAnalysis Kind2Flow Decimal Arbitrary precision real numbersNumeral Arbitrary precision integersHexadecimal Arbitrary precision hexa-decimalsBitvector Bit-vectorsSymbol Kind's symbolsType Types of termsUfSymbol Uninterpreted function symbolsStateVar State variablesVar Variables in termsIdent Managing of identifier to avoid clashesLtree Abstract syntax trees with binders and quantifiersTermAttr Attributes for annotated termsTerm Term representationModel Eval Term evaluatorScope Managing of scopes to avoid clashesInputSystem Delegate to concrete functions for input formats.Property Invs Invariants are stored in two hash tables mapping them to their certificate. One table is for one-state invariants, the other is for two-state invariants.SubSystem Abstract systemTransSys Representation of a transition systemSimplify Term simplifierModelElement Manpulation of sets of equations and model elements (equations, assertions, assumptions, guarantees, node calls). Make the link between TransSys-level equations and Lustre model elements.Clause Clause, properties and activation literals for IC3CooperQE Cooper quantifier eliminationExtract Extract an active path from a formula given a modelIC3 Property-directed reachability (aka IC3)Poly PolynomialsPresburger Conversions from and to Presburger arithmetic formulasQE Quantifier eliminationInvGenDomain InvGenMiner LockStepDriver Lock Step Driver (LSD).InvGenGraph Graph representing equivalence classes and ordering between some terms.InvGen Generic invariant generation.C2I C2I is a machine-learning-based invariant generation technique.C2ICandidate Wraps the candidate invariants with info about their cost etc.C2Imodel Handles models for the C2I algorithm.InputParser Interpreter Interpreter for Lustre programsSource files live in the subdirectory lustre
Dependency graph of modules
LustreLexer Lexer for Lustre inputLustreParser LustreAst Minimally simplified Lustre abstract syntax treeLustreAstHelpers Some helper functions on the surface level parsed ASTLustreAstDependencies Graph analysis on Lustre Ast Declarations.TypeCheckerContext The type checker context used for typechecking the surface level languageLustreTypeChecker Functions for type checking surface syntax LustreAstLustreIdent Lustre identifierLustreIndex Indexes for lists, records, tuples and arrays in LustreLustreExpr Internal reperesentation of a Lustre expressionLustreNode Internal representation of a Lustre nodeLustreContract LustreGlobals Global declarations for Lustre inputLustreSlicing Cone of influence reduction and dependency ordering of equationsLustreTransSys LustreInput Parse Lustre input into the intermediate Lustre formatLustrePath Conversion of a counterexample to a Lustre modelLustreDesugarIfBlocks Code for desugaring imperative-style if blocks to functional ITEs.LustreDesugarFrameBlocks This file desugars frame blocks into a list of node items (equations), completing two major steps: 1. Fill in any oracles within the frame block (for unguarded pres or undefined variables in if blocks). 2. Generate node equations for variables left completely undefined in frame blocks.Source files live in subdirectory nativeInput
NativeInput Parse a file in native input format into a transition systemSource files live in subdirectory SMTSolver
SMTExpr Datatypes and helper function for the SMT solver interfaceSMTLIBSolver An interface to any SMT solver that accepts the SMTLIB2 command languageSMTSolver High-level methods for an SMT solverSolverDriver SolverResponse SolverSig YicesDriver YicesLexer YicesParser YicesNative An interface to the Yices SMT solver in native format.YicesResponse HStringSExpr SExprBase S-ExpressionsSExprLexer Lexer: Lexer Specification for S-expressionsStringSExpr S-Expressions over string atomsIvcMcs Computation of Inductive Validity Cores and Maximal Unsafe Abstractions / Minimal Cut SetsContractChecker Checking of realizability of contracts and other sanity checks over contractsTestgenDF TestgenIO TestgenModes TestgenSolver Wraps a solver and provides a convenient interface for test generation.TestgenTree Certificate Certificates for Kind 2. This contains the base type as well as some combinators for certificates.CertifChecker Proof Lib General-purpose library functionsRes Debug Debug ouput, controlled by Flags.FileId Hashcons Hash tables for hash consingHashconsWeak Hash tables for hash consingHashconsStrong Hash tables for hash consingHString Perfect shared strings by hashconsingMessaging Low-level handling of messages between the supervisor and the engines of an analysis.Pretty Functions for pretty ascii output (colors, etc.)Stat StatisticsTermLib Utilty functions for transition systemsGraph A poor person's directed graph and some graph traversal implementationsTrie Trie over lists of valuesVersion Static and autoconfigured defaultsUnroller Very basic helper functions for unrolling. More precisely, asserting one- and two-state invariants.JkindParser Extract the transition system from the dumpfiles of jKindTo add a module, edit this file src/doc/index.mld and add it to one of the sections above.