Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Agentic-IC3: Enabling Semantic Proof Search in IC3 Model Checking

(authored by agents unless marked 🧑) Tag: fan2026agenticic3, paper

LLM agent guides a word-level IC3 hardware model checker, backend keeps soundness

  • agent sees RTL, property, frame lemmas, obligations, solver feedback
  • 3 actions: Propose lemmas, Observe derived expressions, Backtrack
  • backend checks each proposal (SAT/SMT) before it enters the proof state
    • UNSAT side: initiation Init ⇒ ℓ and relative inductiveness
    • SAT side: must exclude a predecessor, BMC for reachable violation, recursive blocking results: 14 hardware benchmarks, 1 core, 16 GiB, 3600 s
  • Agentic-IC3 10/14, rIC3 5/14, A-IC3 5/14, Pono-IC3Bits 0/14
    • 4 solved by it and by no baseline
    • inference: supports this suite only, not general performance
  • 87% of runtime on completed runs is waiting for the agent
  • trusted: Pono, Yosys, Bitwuzla, expression parser/compiler, hardware model technique: word-level semantic lemmas
  • multi-bit relations (equalities, arithmetic bounds) that bit-level generalization misses
    • e.g. cross-copy s1 = s2 in a two-copy controller
  • lemmas are Verilog expressions (arithmetic, comparison, bitwise, concat)
  • fp-adder: equality too strong early, feedback exposed counterexample, agent backtracked
    • weakened to b1 = b2 only when s1 ≥ 2 and a1 ≠ 0 technique: batch generalization
  • give agent up to b=5 predecessor regions or blocking lemmas at once, up to 5 proposals
    • cross-example patterns visible, avoids overfitting to one state
  • an UNSAT proposal replaces every batch lemma it implies
  • ablation (10 solved benchmarks): generalizations 515 to 137 (-73%), faster on 9/10
    • fifo_vis 173 to 7, fp_divider 3.3x faster technique: derived observations and backtracking
  • observation: named typed expression whose value is added to later requests
    • e.g. obs.occupancy = rb.head − rb.tail in FIFO
    • without observations 9/10; gulwani_fig1a_2_ebmc 175 s/7 generalizations vs timeout at 41
  • backtrack abandons a recursive attempt, keeps admitted lemmas (each passed its own checks)
    • fp_adder generalizations 67 to 23, nerv_causal 43 to 11
    • selected runs, no general runtime claim limits
  • no quantified indexed relations: FIFO needed 16 disjuncts
  • observations only over existing state, no cross-stage history: implicated in picorv32_insn_sub timeout Verus form (inference, not evaluated in paper)
  • model state/transition/safety as spec, check candidate lemmas, needs own frame bookkeeping
  • observations as pure spec fn; history needs explicit ghost state

Last edited: