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

CLN2INV: Learning Loop Invariants with Continuous Logic Networks

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

cln2inv learns quantifier-free smt loop invariants from execution traces

  • continuous logic network (cln) = differentiable graph of an smt template
  • train constants and predicate sharpness, discretize, z3 checks pre/post/recursion conditions
    • z3 is the trust anchor, low loss is not a proof continuous semantic mapping
  • smt formula to truth value in [0,1], differentiable, nonzero gradient
  • ≥/> via shifted scaled sigmoid, ¬∧∨ via t-norm/t-conorm, equality = both inequalities
  • sound and complete for quantifier-free linear formulas if t-norm has the property
    • product and Gödel t-norms qualify, Łukasiewicz does not trace-driven pipeline
  • sample random inputs meeting precondition, record states at loop entry and exit
  • static analysis supplies constants, strengthens pre, weakens post
  • template = conjunction/disjunction of single-variable bounds and multivariable polynomial constraints
  • restart training if not done in 2000 epochs results on code2inv, 124 problems, 1h limit
  • cln2inv solves 124/124, 1.1 s average
    • code2inv 90, loopinvgen 104
  • 12 extra hard problems solved in under 20 s, baselines timed out
  • static-only ablation solves 91/124, so heuristics already cover much
  • 9 benchmark programs dropped as invalid verus takeaways (inference)
  • use traces only to propose a spec fn invariant, prove init/preservation/exit in verus
  • sampled traces cannot show universal correctness

Last edited: