Rahul Sharma Joint work with Aditya Nori (MSR India) and Alex Aiken (Stanford)
x y
Is there a connection?
Unroll the loops Find interpolants Get general proofs (loop invariants) Get positive and negative examples Find a classifier Get a predicate which generalizes
positive examples negative examples
Separators All separators are good candidates for interpolants
Optimal Margin Classifier
x = y = 0; while(*) x++; y++; while(x != 0) x--; y--; assert (y == 0); x = y = 0; if(*) x++; y++; p: if(x != 0) x--; y--; if(x == 0) assert (y == 0);
x y (0,0) + + (1,1)
Data is not linearly separable The candidate interpolant is not an interpolant x y + +
x y (0,0) + + (1,1)(0,1) (1,0)
x y (0,0) + + (1,1) Interpolant!
1000 lines of C++ LIBSVM for SVM queries Z3 theorem prover
Interpolants used in tools BLAST, IMPACT … Interpolants from proofs Krajícek[97], Pudlák[97], McMillan[05], … Interpolants from constraint solving ARMC, Rybalchenko et al. [07]
Connect interpolants and classifiers A sound interpolation procedure Future work: non-linear interpolants Integrate with a verification tool EUF, arrays, bit-vectors, etc.