220 likes | 325 Views
Explore the use of interpolants as classifiers in binary classification, connecting them to verification and machine learning. Discover the parallels between finding interpolants, getting proofs, and classifying examples. Get insights into the application of Support Vector Machines for computing interpolants and achieving promising results.
E N D
Interpolants as Classifiers Rahul Sharma Joint work with AdityaNori (MSR India) and Alex Aiken (Stanford)
Interpolants • If then an interpolant satisfies: • contains only the variables common to and • An interpolant is a simple proof • Quantifier free formulas in linear arithmetic have quantifier free interpolants.
Example y x
Binary Classification • Input: labeled examples • Positive examples: • Negative examples: • Find true,false • For all positives, true • For all negatives, false
Verification and ML • Interpolant: separates from • Classifier: separates positive examples from negative examples Is there a connection?
Yes! • Consider the common variables of and : • Interpolant • if • If : • separates ’s from ’s
Our Contributions • Main result: view interpolants as classifiers • as positive example • asnegativeexample • Use state-of-the-art classification algorithms (SVMs) for computing interpolants • Encouraging empirical results
Parallels b/w Verification and ML • Unroll the loops • Find interpolants • Get general proofs (loop invariants) • Get positive and negative examples • Find a classifier • Get a predicate which generalizes
Support Vector Machine (SVM) positive examples + + + negative examples + +
Support Vector Machine (SVM) Separators Separators Separators Separators + + + + + All separators are good candidates for interpolants
Support Vector Machine (SVM) Optimal Margin Classifier + + + +
Example 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);
Interpolants by SVM y + (1,1) + x (0,0)
Basic Algorithm • Let be the common variables of and • Generate from satisfying assignments of • Generate from satisfying assignments of • Call SVM with and • Return predicate containing
Two Problems • Data is not linearly separable • The candidate interpolant is not an interpolant y + + x
No separating inequality • For each SVM( ) return • Cannot generate linear separators with both and . y (0,1) + (1,1) + x (1,0) (0,0)
Candidate is not an Interpolant Theorem: terminates iff output is an interpolant between and while(true) { Find candidate interpolant if ( ) Add to and continue; if ( ) Add to and continue; break; Exit if interpolant found } return ;
Example y + (1,1) + x (0,0) Interpolant!
Evaluation • 1000 lines of C++ • LIBSVM for SVM queries • Z3 theorem prover
Related Work • 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]
Conclusion • Connect interpolants and classifiers • A sound interpolation procedure • Future work: non-linear interpolants • Integrate with a verification tool • EUF, arrays, bit-vectors, etc.