Skip to main content
The Z3 fixedpoint engine supports Datalog queries, Horn clause solving, and verification using algorithms like PDR (Property Directed Reachability, also known as IC3). This is particularly useful for program analysis, static verification, and reachability problems.

Overview

Z3’s fixedpoint context provides:
  • Datalog queries over finite and infinite domains
  • Horn clause satisfaction
  • PDR/IC3 for safety verification
  • Inductive invariant generation
  • Trace extraction for debugging

Basic Datalog Example

Simple Reachability

Family Relations Example

Horn Clauses

Horn clauses are implications with at most one positive literal, widely used in program verification.

Horn Clause Format

Program Verification with PDR

PDR (Property Directed Reachability) is effective for verifying safety properties of transition systems.

Transition System Example

Practical Example: Traffic Jam Puzzle

Here’s a real-world example solving a traffic jam puzzle using fixedpoint:

Configuration Parameters

Datalog Engine

PDR Engine

Advanced Features

Adding Constraints

Background axioms (PDR mode only):

Multiple Queries

Statistics

C API Reference

The fixedpoint API in C:

Key Functions

Use Cases

  • Static program analysis: Dataflow analysis, points-to analysis
  • Verification: Safety properties, invariant generation
  • Reachability: Graph queries, state space exploration
  • Logic programming: Prolog-style queries
  • Model checking: Transition systems, temporal properties

See Also