「‍」 Lingenic

Predicate Abstraction

(⤓.md ≡ ◇.md); γ ≜ [2026-07-17T135416.643, 2026-10-22T054143.488] ∧ |γ| = 3

Predicate Abstraction

Origin. Graf and Saïdi (1997). Abstract interpretation guided by predicates. Boolean programs from concrete programs. CEGAR loop. Foundation for SLAM, BLAST.

Models. Predicates abstract state to boolean combinations. Concrete state s maps to predicate valuation. Sound abstraction: preserves safety. Refinement adds predicates.

Formalism.

Predicates: P = {p₁, ..., pₙ} set of predicates over program state. Each pᵢ: State → Bool.

Abstract state: b = (b₁, ..., bₙ) ∈ 𝔹ⁿ bᵢ = pᵢ(s) for concrete state s.

Abstraction function: α(s) = (p₁(s), ..., pₙ(s)) α(S) = {α(s) | s ∈ S}

Concretization: γ(b) = {s | ∧ᵢ(bᵢ ↔ pᵢ(s))} States satisfying the abstract state.

Abstract transition: b →# b' iff ∃s ∈ γ(b), s' ∈ γ(b'). s → s'

Cartesian abstraction: Independent predicates. Abstract state: conjunction of literals.

Boolean abstraction: Full boolean combinations. More precise, more expensive.

CEGAR (CounterExample Guided Abstraction Refinement):

  1. Start with coarse predicates
  2. Model check abstract program
  3. If safe: done
  4. If spurious counterexample: refine predicates
  5. Repeat

Weakest precondition: wp(x := e, p) = p[e/x] Derive new predicates via interpolation.

Symbols.

SymbolUnicodeNameMeaning
αU+03B1Alpha / Abstraction mapSends a concrete state to its predicate valuation
γU+03B3Gamma / Concretization mapSends an abstract state to the states it denotes
P—Predicate set{p₁, …, pₙ}, the basis of the abstraction
pᵢ—PredicateA map State → Bool
b—Abstract stateThe bit vector (b₁, …, bₙ)
𝔹U+1D539Double-struck capital B / BooleansValue domain of a single predicate
ⁿU+207FSuperscript Latin small letter NExponent: 𝔹ⁿ, the abstract domain
→#—Abstract transitionExistential lifting of → through γ (arrow plus number sign)
→U+2192Rightwards arrow / Concrete stepTransition of the concrete program
∈U+2208Element ofMembership of a concrete state in γ(b)
∃U+2203There existsExistential abstraction of the transition relation
∧U+2227Logical andConjunction over the predicates in γ(b)
↔U+2194Left right arrow / Biconditionalbᵢ ↔ pᵢ(s), agreement of bit and predicate
wp—Weakest preconditionSource of refinement predicates, wp(x := e, p) = p[e/x]
CEGAR—Refinement loopCounterexample-guided abstraction refinement

Metatheory. Graf and Saïdi's 1997 construction is an abstract interpretation in the Cousot sense: α and γ form a Galois connection between the powerset of concrete states and 𝔹ⁿ, and the existentially lifted abstract transition over-approximates the concrete one, so soundness is by construction and no separate argument is needed. Preservation is one-directional in a way made precise by Clarke, Grumberg, and Long (1994): universal path properties proved of the abstraction hold of the program, while an abstract counterexample may be spurious. The abstract state space is 2ⁿ in the number of predicates, and computing the most precise abstract post-image requires exponentially many theorem-prover queries, which is why SLAM's Cartesian abstraction gives up precision for a linear number. CEGAR (Clarke, Grumberg, Jha, Lu, and Veith, 2000) closes the loop by mining new predicates from the infeasibility proof of a spurious counterexample — in the later systems by Craig interpolation (McMillan, lazy abstraction with interpolants, 2006). The result is a semi-algorithm: terminating on finite-state systems, and by Rice's theorem incapable of always terminating on the infinite-state ones it is aimed at.

Applies to. SLAM (Windows drivers). BLAST. Software model checking. Property verification. Security analysis.

Limitations. The abstraction is sound but not complete, and the gap is not repairable in general: no finite set of predicates need suffice, because the invariant a program requires may not be a Boolean combination of any finite set of atomic formulas drawn from its syntax — quantified invariants over arrays and unbounded heap structures are the standard witnesses. Refinement therefore has no termination guarantee; each spurious counterexample contributes at least one predicate, but the sequence may grow without bound, and Rice's theorem rules out any procedure that always halts with an answer. Cost is exponential in two places at once: 2ⁿ abstract states, and exponentially many solver queries for the most precise abstract post, so the abstractions actually used are deliberately imprecise and generate spurious counterexamples of their own. Only universal path properties transfer across the abstraction, so existential properties and hyperproperties are not preserved.

© 2026 Lingenic LLC