§ Implementing Nelson Oppen


§ Disjoint theories



§ Ensuring Disjointness and Purification



repeat until fixpoint:
      u = gesym()
      Purify[f(..., t, ...)] => Purify[f(..., u, ...)] /\ u = t


x + 2 == y, f(Store(A, x, 3)[y - 2]) != f(y - x + 1)


Functions:  f(v1) != f(v2)
Arrays:     v1 == v3[v4], v3 == Store(x, y, v5)
Arithmetic: x + 2 == y, v2 == y - x + 1, v4 == y - 2, v5 == 2

§ Convex Theory



§ Convex Theory in Terms of Geometry



§ Non Convex Theory: LIA



§ Convex theory w/ Non Trivial Model is Stably Infinite



§ References