Ocelot Rela%onal Logic in a Solver-Aided Language James Bornholt http://ocelot.tools Emina Torlak University of Washington
all d: Dir | lone d.~contents becomes (all ([d Dir]) (lone (join d (~ contents)))) Ocelot is a DSL for rela.onal logic , (define X (join d (~ contents))) embedded in the (println X) > (join d (~ contents)) Rose7e solver-aided language Analysis backend Supports synthesis of is SMT (Z3) relaFonal expressions, and combinaFon with other constraints.
Ocelot can synthesize and debug large memory model specificaFons [Bornholt & Torlak, PLDI 2017] Synthesis Ambiguity 768 tests PowerPC ✓ 12 seconds 9 new tests [Alglave et al, CAV’10] Search space: 2 1406 sync , lwsync , etc. Not equivalent to published model! 10 tests x86 ✓ 2 seconds 4 new tests Search space: 2 624 mfence , xchg Not equivalent to TSO!
Ocelot is fast at both verificaFon and higher-order queries Verifica.on Equivalence 1000 40 Ocelot Alloy* 100 30 Time (s) Time (s) 10 20 1 10 0.1 0 0 10 20 30 40 50 Alloy Ocelot Herd Problems Solved As fast as a custom memory model Average 22× faster decision procedure than Alloy*
Ocelot is a DSL for rela.onal logic , embedded in the Rose7e solver-aided language http://ocelot.tools
Recommend
More recommend