We used MemSynth to synthesize memory model specifications for the x86
and PowerPC architectures in just a few seconds.
In both cases, MemSynth found several
ambiguities (including in the Intel documentation)
and generated new litmus tests to resolve them.
We also used MemSynth to synthesize a repair for an existing memory model tool
that we could not fix by hand.

MemSynth’s reasoning engine is built on Ocelot,
an embedding of relational logic (like Alloy)
in the Rosette solver-aided programming language.

Watch the video

Get the code

Browse the results

This page hosts the full synthesis results — specifications and litmus tests —
for the experiments in the paper. We synthesized
correct specifications for both the PowerPC and x86 memory models,
and discovered several ambiguities in each.