13#ifndef LLVM_CLANG_ANALYSIS_FLOWSENSITIVE_CNFFORMULA_H
14#define LLVM_CLANG_ANALYSIS_FLOWSENSITIVE_CNFFORMULA_H
81 std::vector<Literal> Clauses;
93 std::vector<size_t> ClauseStarts;
97 bool KnownContradictory;
123 return C == ClauseStarts.size() - 1 ? Clauses.size() - ClauseStarts[
C]
124 : ClauseStarts[
C + 1] - ClauseStarts[
C];
151 assert(Idx < CNF->Clauses.size() &&
"Iterator out of bounds");
174 llvm::DenseMap<Variable, Atom> &Atomics);
uint32_t ClauseID
Clause identifiers are represented as positive integers.
constexpr Literal posLit(Variable V)
Returns the positive literal V.
constexpr bool isNegLit(Literal L)
Returns whether L is a negative literal.
constexpr Variable NullVar
A null boolean variable is used as a placeholder in various data structures and algorithms.
CNFFormula buildCNF(const llvm::ArrayRef< const Formula * > &Formulas, llvm::DenseMap< Variable, Atom > &Atomics)
Converts the conjunction of Vals into a formula in conjunctive normal form where each clause has at l...
constexpr Literal NullLit
A null literal is used as a placeholder in various data structures and algorithms.
constexpr ClauseID NullClause
A null clause identifier is used as a placeholder in various data structures and algorithms.
constexpr Variable var(Literal L)
Returns the variable of L.
constexpr Literal negLit(Variable V)
Returns the negative literal !V.
uint32_t Literal
Literals are represented as positive integers.
uint32_t Variable
Boolean variables are represented as positive integers.
constexpr bool isPosLit(Literal L)
Returns whether L is a positive literal.
constexpr Literal notLit(Literal L)
Returns the negated literal !L.
The JSON file list parser is used to communicate input to InstallAPI.