# Functions
Analyze identifies the extensional and intensional predicates of a program and checks every rule.
AnalyzeAndCheckBounds checks every rule, including bounds.
AnalyzeOneUnit is a convenience method to analyze a program consisting of a single source unit.
CheckDecl performs context-free checks to see whether a decl is well-formed.
ExtractPackages turns source units into merged source packages.
New creates a new analyzer based on declarations and extra predicates.
NewVarList converts a map representation to a varlist deterministically.
RectifyAtom ensures all arguments of an atom are variables.
RewriteClause rewrites a clause using information from declarations.
Stratify checks whether a program can be stratified.
# Constants
ErrorForBoundsMismatch means bounds mismatch leads to error.
LogBoundsMismatch means we log mismatch.
NoBoundsChecking means there is no bounds checking of any kind.
# Structs
Analyzer is a struct providing built-in predicates and functions for name analysis.
BoundsAnalyzer to infer and check bounds.
Program represents a set of rules that we may or may not be able to stratify.
ProgramInfo represents the result of program analysis.
VarList is an ordered list of variables.
# Type aliases
BoundsCheckingMode represents a mode for bounds checking.
Nodeset represents a set of nodes in the dependency graph.