Synthesizing Memory Models from Framework Sketches and Litmus Tests - - PowerPoint PPT Presentation

synthesizing memory models from framework sketches and
SMART_READER_LITE
LIVE PREVIEW

Synthesizing Memory Models from Framework Sketches and Litmus Tests - - PowerPoint PPT Presentation

Synthesizing Memory Models from Framework Sketches and Litmus Tests James Bornholt Emina Torlak University of Washington Memory consistency models define memory reordering behaviors on mul>processors Memory consistency models define


slide-1
SLIDE 1

Synthesizing Memory Models

from Framework Sketches


and Litmus Tests

James Bornholt
 Emina Torlak

University of Washington

slide-2
SLIDE 2

Memory consistency models define memory reordering behaviors on mul>processors

slide-3
SLIDE 3

Memory consistency models define memory reordering behaviors on mul>processors

…correctness of my compiler…

Compiler writers 

slide-4
SLIDE 4

Memory consistency models define memory reordering behaviors on mul>processors

…correctness of my compiler…

Compiler writers 

…rules to verify against…

Verifica@on tools 🤗

slide-5
SLIDE 5

Memory consistency models define memory reordering behaviors on mul>processors

…correctness of my compiler…

Compiler writers 

…rules to verify against…

Verifica@on tools 🤗

…possible low- level behaviors…

Kernel/library developers

slide-6
SLIDE 6

Memory consistency models define memory reordering behaviors on mul>processors

Litmus tests
 and prose …correctness of my compiler…

Compiler writers 

…rules to verify against…

Verifica@on tools 🤗

…possible low- level behaviors…

Kernel/library developers

slide-7
SLIDE 7

Memory consistency models define memory reordering behaviors on mul>processors

Litmus tests
 and prose

∀ ∃ ∈ ∧ ∨ ∩ ∪ ⊂ ⋈ ⇒

Formal
 specifica@ons …correctness of my compiler…

Compiler writers 

…rules to verify against…

Verifica@on tools 🤗

…possible low- level behaviors…

Kernel/library developers

slide-8
SLIDE 8

Memory consistency models define memory reordering behaviors on mul>processors

Litmus tests
 and prose

∀ ∃ ∈ ∧ ∨ ∩ ∪ ⊂ ⋈ ⇒

Formal
 specifica@ons …correctness of my compiler…

Compiler writers 

…rules to verify against…

Verifica@on tools 🤗

…possible low- level behaviors…

Kernel/library developers

x86 [Sewell et al, CACM’10] PowerPC [Alglave et al, CAV’10, etc] ARM [Flur et al, POPL’16]

slide-9
SLIDE 9

Litmus tests Formal
 specifica@ons

∀ ∃ ∈ ∧ ∨ ∩ ∪ ⊂ ⋈ ⇒

MemSynth

slide-10
SLIDE 10

Litmus tests Formal
 specifica@ons

Synthesize specifica>ons ∀ ∃ ∈ ∧ ∨ ∩ ∪ ⊂ ⋈ ⇒

MemSynth

slide-11
SLIDE 11

Litmus tests Formal
 specifica@ons

Synthesize specifica>ons

Framework sketch

∀ ∃ ∈ ∧ ∨ ∩ ∪ ⊂ ⋈ ⇒

MemSynth

slide-12
SLIDE 12

Litmus tests Formal
 specifica@ons

Synthesize specifica>ons Detect ambigui>es

Framework sketch

∀ ∃ ∈ ∧ ∨ ∩ ∪ ⊂ ⋈ ⇒

MemSynth

slide-13
SLIDE 13

Litmus tests
 Formal
 specifica@ons Framework sketch

Synthesize specifica>ons Detect ambigui>es ∀ ∃ ∈ ∧ ∨ ∩ ∪ ⊂ ⋈ ⇒

MemSynth

slide-14
SLIDE 14

MemSynth

Synthesize specifica>ons Detect ambigui>es ∀ ∃ ∈ ∧ ∨ ∩ ∪ ⊂ ⋈ ⇒

slide-15
SLIDE 15

MemSynth

Framework sketches

define a class of memory models Synthesize specifica>ons Detect ambigui>es ∀ ∃ ∈ ∧ ∨ ∩ ∪ ⊂ ⋈ ⇒

slide-16
SLIDE 16

MemSynth

Framework sketches

define a class of memory models

MemSynth engine

verifica@on, equivalence, synthesis, ambiguity Synthesize specifica>ons Detect ambigui>es ∀ ∃ ∈ ∧ ∨ ∩ ∪ ⊂ ⋈ ⇒

slide-17
SLIDE 17

MemSynth

Framework sketches

define a class of memory models

MemSynth engine

verifica@on, equivalence, synthesis, ambiguity

Results

synthesize real-world memory model specs Synthesize specifica>ons Detect ambigui>es ∀ ∃ ∈ ∧ ∨ ∩ ∪ ⊂ ⋈ ⇒

slide-18
SLIDE 18

Memory models and framework sketches

slide-19
SLIDE 19

Litmus tests illustrate memory model behavior

Thread 1 Thread 2

X = 1

1

r1 = Y

2

Y = 1

3

r2 = X

4

Can r1 = 0 ∧ r2 = 0?

slide-20
SLIDE 20

Litmus tests illustrate memory model behavior

Thread 1 Thread 2

X = 1

1

r1 = Y

2

Y = 1

3

r2 = X

4

Can r1 = 0 ∧ r2 = 0? Sequen>al consistency: no

slide-21
SLIDE 21

Litmus tests illustrate memory model behavior

Thread 1 Thread 2

X = 1

1

r1 = Y

2

Y = 1

3

r2 = X

4

Can r1 = 0 ∧ r2 = 0? Sequen>al consistency: no x86: yes!

slide-22
SLIDE 22

Litmus tests illustrate memory model behavior

Thread 1 Thread 2

X = 1

1

r1 = Y

2

Y = 1

3

r2 = X

4

Can r1 = 0 ∧ r2 = 0? Sequen>al consistency: no x86: yes!

A memory model M is a set of constraints that define the possible execu@ons (outcomes) of a program.

slide-23
SLIDE 23

Litmus tests illustrate memory model behavior

Thread 1 Thread 2

X = 1

1

r1 = Y

2

Y = 1

3

r2 = X

4

Can r1 = 0 ∧ r2 = 0? Sequen>al consistency: no x86: yes!

A memory model M is a set of constraints that define the possible execu@ons (outcomes) of a program. Memory model M allows litmus test T if there exists an execu@on that sa@sfies M’s constraints.

slide-24
SLIDE 24

Litmus tests illustrate memory model behavior

Thread 1 Thread 2

X = 1

1

r1 = Y

2

Y = 1

3

r2 = X

4

Can r1 = 0 ∧ r2 = 0? Sequen>al consistency: no x86: yes!

A memory model M is a set of constraints that define the possible execu@ons (outcomes) of a program. Me

Memory model M allows test T: ∃ E. M(T,E)

slide-25
SLIDE 25

Memory models, formally

Common formaliza@ons based on rela>onal logic Example for sequen>al consistency:

no ^(ws + fr + po + rf + fences) & iden

[Alglave et al, CAV’10]

Memory model M allows test T: ∃ E. M(T,E)

slide-26
SLIDE 26

Memory models, formally

Common formaliza@ons based on rela>onal logic Example for sequen>al consistency:

no ^(ws + fr + po + rf + fences) & iden

[Alglave et al, CAV’10]

Memory model M allows test T: ∃ E. M(T,E) Binary rela@ons over program instruc@ons

slide-27
SLIDE 27

happens-before order

Memory models, formally

Common formaliza@ons based on rela>onal logic Example for sequen>al consistency:

no ^(ws + fr + po + rf + fences) & iden

[Alglave et al, CAV’10]

Memory model M allows test T: ∃ E. M(T,E) Binary rela@ons over program instruc@ons

slide-28
SLIDE 28

happens-before order is acyclic

Memory models, formally

Common formaliza@ons based on rela>onal logic Example for sequen>al consistency:

no ^(ws + fr + po + rf + fences) & iden

[Alglave et al, CAV’10]

Memory model M allows test T: ∃ E. M(T,E) Binary rela@ons over program instruc@ons

slide-29
SLIDE 29

happens-before order is acyclic

Memory models, formally

Common formaliza@ons based on rela>onal logic Example for sequen>al consistency:

no ^(ws + fr + po + rf + fences) & iden

[Alglave et al, CAV’10]

From program syntax Memory model M allows test T: ∃ E. M(T,E) Binary rela@ons over program instruc@ons

slide-30
SLIDE 30

happens-before order is acyclic

Memory models, formally

Common formaliza@ons based on rela>onal logic Example for sequen>al consistency:

no ^(ws + fr + po + rf + fences) & iden

[Alglave et al, CAV’10]

From program syntax Memory model M allows test T: ∃ E. M(T,E)

Thread 1 Thread 2

X = 1

1

r1 = Y

2

Y = 1

3

r2 = X

4

Can r1 = 0 ∧ r2 = 0?

Binary rela@ons over program instruc@ons

slide-31
SLIDE 31

happens-before order is acyclic

Memory models, formally

Common formaliza@ons based on rela>onal logic Example for sequen>al consistency:

no ^(ws + fr + po + rf + fences) & iden

[Alglave et al, CAV’10]

po = {( , ), ( , )}

3 4 2 1

Program order:

From program syntax Memory model M allows test T: ∃ E. M(T,E)

Thread 1 Thread 2

X = 1

1

r1 = Y

2

Y = 1

3

r2 = X

4

Can r1 = 0 ∧ r2 = 0?

Binary rela@ons over program instruc@ons

slide-32
SLIDE 32

happens-before order is acyclic

Memory models, formally

Common formaliza@ons based on rela>onal logic Example for sequen>al consistency:

no ^(ws + fr + po + rf + fences) & iden

[Alglave et al, CAV’10]

po = {( , ), ( , )}

3 4 2 1

Program order:

From program syntax Part of execu@on; implicitly existen@ally quan@fied Memory model M allows test T: ∃ E. M(T,E)

Thread 1 Thread 2

X = 1

1

r1 = Y

2

Y = 1

3

r2 = X

4

Can r1 = 0 ∧ r2 = 0?

Binary rela@ons over program instruc@ons

slide-33
SLIDE 33

no ^(ws + fr + po + rf + fences) & iden

Framework sketches

A framework sketch defines the search space for synthesizing a memory model M by including holes in constraints

slide-34
SLIDE 34

no ^(ws + fr + po + rf + fences) & iden

Framework sketches

A framework sketch defines the search space for synthesizing a memory model M by including holes in constraints

Expression holes for a synthesizer to complete

?? ?? ??

slide-35
SLIDE 35

no ^(ws + fr + po + rf + fences) & iden

Framework sketches

A framework sketch defines the search space for synthesizing a memory model M by including holes in constraints

Expression holes for a synthesizer to complete

Framework sketches are the key design tool for synthesizing memory model specifica@ons — they define the “interes@ng” candidate models ?? ?? ??

slide-36
SLIDE 36

Memory model frameworks

no ^(ws + fr + po + rf + fences) & iden

[Alglave et al, CAV’10]

?? ?? ??

slide-37
SLIDE 37

Memory model frameworks

no ^(ws + fr + ppo + grf + fences) & iden

[Alglave et al, CAV’10]

Preserved program

  • rder (same-thread

reorderings) Global reads from (inter- thread order) Fence cumula>vity (for Power, ARM, etc)

slide-38
SLIDE 38

Memory model frameworks

no ^(ws + fr + ppo + grf + fences) & iden

[Alglave et al, CAV’10]

Sequen>al consistency

Preserved program

  • rder (same-thread

reorderings) Global reads from (inter- thread order) Fence cumula>vity (for Power, ARM, etc)

po rf

slide-39
SLIDE 39

Memory model frameworks

no ^(ws + fr + ppo + grf + fences) & iden

[Alglave et al, CAV’10]

Sequen>al consistency

Preserved program

  • rder (same-thread

reorderings) Global reads from (inter- thread order) Fence cumula>vity (for Power, ARM, etc)

po rf

∅ Total store

  • rder (x86)

po - (Wr→Rd) rf & SameThd

slide-40
SLIDE 40

Memory model frameworks are common

Global @me rela@onal model

[Alglave et al, CAV’10]

Axioma@c “must- not-reorder” func@ons

[Mador-Haim et al, DAC’11]

Exexcutable distributed consistency models

[Yang et al, IPDPS’04]

slide-41
SLIDE 41

Ocelot: rela>onal logic with holes

A rela>onal logic DSL with synthesis support no ^(ws + fr + ppo + grf + fences) & iden ?? ?? ??

Expression holes for a synthesizer to complete

Built on the Roseoe solver-aided language [Torlak & Bodik, PLDI’14] Available as a Racket package: raco pkg install ocelot

slide-42
SLIDE 42

Ocelot: rela>onal logic with holes

A rela>onal logic DSL with synthesis support no ^(ws + fr + ppo + grf + fences) & iden ?? ?? ??

Expression holes for a synthesizer to complete Comple@ons are expressions in rela@onal logic with chosen

  • perators, terminals, and depth.

Built on the Roseoe solver-aided language [Torlak & Bodik, PLDI’14] Available as a Racket package: raco pkg install ocelot

slide-43
SLIDE 43

Ocelot: rela>onal logic with holes

A rela>onal logic DSL with synthesis support no ^(ws + fr + ppo + grf + fences) & iden ?? ?? ??

Expression holes for a synthesizer to complete Comple@ons are expressions in rela@onal logic with chosen

  • perators, terminals, and depth.

Built on the Roseoe solver-aided language [Torlak & Bodik, PLDI’14]

  • perators = {+, &}

terminals = {po, ws} depth = 1

Available as a Racket package: raco pkg install ocelot

slide-44
SLIDE 44

Ocelot: rela>onal logic with holes

A rela>onal logic DSL with synthesis support no ^(ws + fr + ppo + grf + fences) & iden ?? ?? ??

Expression holes for a synthesizer to complete Comple@ons are expressions in rela@onal logic with chosen

  • perators, terminals, and depth.

Built on the Roseoe solver-aided language [Torlak & Bodik, PLDI’14]

  • perators = {+, &}

terminals = {po, ws} depth = 1

po ws po + ws po & ws

Available as a Racket package: raco pkg install ocelot

slide-45
SLIDE 45

Queries

  • Verifica@on
  • Equivalence
  • Synthesis
  • Ambiguity
slide-46
SLIDE 46

Verifica>on and equivalence

Memory model M allows test T: ∃ E. M(T,E)

Common queries for automated memory model reasoning tools

Herd [Alglave et al, CAV’10]; MemAlloy [Wickerson et al, POPL’17]; etc.

slide-47
SLIDE 47

Verifica>on and equivalence

Memory model M allows test T: ∃ E. M(T,E)

Common queries for automated memory model reasoning tools

Herd [Alglave et al, CAV’10]; MemAlloy [Wickerson et al, POPL’17]; etc.

Litmus test Memory model VERIFY SAT

  • r

UNSAT

slide-48
SLIDE 48

Verifica>on and equivalence

Memory model M allows test T: ∃ E. M(T,E)

Common queries for automated memory model reasoning tools

Herd [Alglave et al, CAV’10]; MemAlloy [Wickerson et al, POPL’17]; etc.

Litmus test Memory model VERIFY SAT

  • r

UNSAT

Reduces to SAT (since litmus tests are loop-free)

slide-49
SLIDE 49

Verifica>on and equivalence

Memory model M allows test T: ∃ E. M(T,E)

Common queries for automated memory model reasoning tools

Herd [Alglave et al, CAV’10]; MemAlloy [Wickerson et al, POPL’17]; etc.

Litmus test Memory model VERIFY SAT

  • r

UNSAT EQUIV Litmus test

  • r

UNSAT Memory model MB Memory model MA

Reduces to SAT (since litmus tests are loop-free)

slide-50
SLIDE 50

Verifica>on and equivalence

Memory model M allows test T: ∃ E. M(T,E)

Common queries for automated memory model reasoning tools

Herd [Alglave et al, CAV’10]; MemAlloy [Wickerson et al, POPL’17]; etc.

Litmus test Memory model VERIFY SAT

  • r

UNSAT EQUIV Litmus test

  • r

UNSAT Memory model MB Memory model MA

Reduces to SAT (since litmus tests are loop-free) UNSAT = bounded equivalence (“equivalent up to tests of size k”)

slide-51
SLIDE 51

Synthesis

Find a memory model consistent with a set

  • f litmus tests

Memory model SYNTH Framework sketch Allowed litmus tests Forbidden litmus tests

slide-52
SLIDE 52

Synthesis

Find a memory model consistent with a set

  • f litmus tests

SYNTH Framework sketch

slide-53
SLIDE 53

Synthesis

Find a memory model consistent with a set

  • f litmus tests

SYNTH Framework sketch

x86

slide-54
SLIDE 54

Synthesis

Find a memory model consistent with a set

  • f litmus tests

SYNTH Framework sketch

5 3

2 allowed tests

1 2 4 6 7 8 9 10

8 forbidden tests

x86

slide-55
SLIDE 55

Synthesis

Find a memory model consistent with a set

  • f litmus tests

SYNTH Framework sketch

5 3

2 allowed tests

1 2 4 6 7 8 9 10

8 forbidden tests

Total store order x86

slide-56
SLIDE 56

Synthesis

Find a memory model consistent with a set

  • f litmus tests

Memory model M allows test T: ∃ E. M(T,E)

Allowed litmus tests Forbidden litmus tests Framework sketch

M T+ T-

Memory model

slide-57
SLIDE 57

Synthesis

Find a memory model consistent with a set

  • f litmus tests

Memory model M allows test T: ∃ E. M(T,E)

Allowed litmus tests Forbidden litmus tests Framework sketch

M T+ T- ∃ E. M(T,E)

⋀ T∈T+

Memory model

slide-58
SLIDE 58

Synthesis

Find a memory model consistent with a set

  • f litmus tests

Memory model M allows test T: ∃ E. M(T,E)

Allowed litmus tests Forbidden litmus tests Framework sketch

M T+ T- ∃ E. M(T,E)

⋀ T∈T+

∀ E. ¬M(T,E)

⋀ T∈T-

Memory model

slide-59
SLIDE 59

Synthesis

Find a memory model consistent with a set

  • f litmus tests

Memory model M allows test T: ∃ E. M(T,E)

Allowed litmus tests Forbidden litmus tests Framework sketch

M T+ T- ∃ E. M(T,E)

⋀ T∈T+

∀ E. ¬M(T,E)

⋀ T∈T-

Memory model

Solved incrementally, like counterexample-guided induc@ve synthesis (CEGIS)

slide-60
SLIDE 60

Ambiguity

Find a dis@nguishing litmus test that exposes an ambiguity in a model

AMBIG

Key idea: axer synthesis, is there a different memory model that explains the tests?

slide-61
SLIDE 61

Ambiguity

Find a dis@nguishing litmus test that exposes an ambiguity in a model

AMBIG Allowed litmus tests Forbidden litmus tests

Key idea: axer synthesis, is there a different memory model that explains the tests?

slide-62
SLIDE 62

Ambiguity

Find a dis@nguishing litmus test that exposes an ambiguity in a model

AMBIG Allowed litmus tests Forbidden litmus tests

Key idea: axer synthesis, is there a different memory model that explains the tests?

Memory model MA

slide-63
SLIDE 63

Ambiguity

Find a dis@nguishing litmus test that exposes an ambiguity in a model

AMBIG Framework sketch Allowed litmus tests Forbidden litmus tests

Key idea: axer synthesis, is there a different memory model that explains the tests?

Memory model MA

slide-64
SLIDE 64

Ambiguity

Find a dis@nguishing litmus test that exposes an ambiguity in a model

AMBIG Framework sketch Allowed litmus tests Forbidden litmus tests

Key idea: axer synthesis, is there a different memory model that explains the tests?

Memory model MA Litmus test Memory model MB

slide-65
SLIDE 65

Ambiguity

Find a dis@nguishing litmus test that exposes an ambiguity in a model

AMBIG Framework sketch Allowed litmus tests Forbidden litmus tests

Key idea: axer synthesis, is there a different memory model that explains the tests?

Memory model MA Litmus test Memory model MB

The new memory model must be seman>cally different from the input: MA and MB must disagree about a new test T Similar to oracle-guided synthesis [Jha et al, ICSE’10]

slide-66
SLIDE 66

Ambiguity

Find a dis@nguishing litmus test that exposes an ambiguity in a model

AMBIG

Total store order (x86)

Thread 1 Thread 2 X = 1

1

r1 = Y

2

Y = 1

3

r2 = X

4

Can r1 = 0 ∧ r2 = 0?

slide-67
SLIDE 67

Ambiguity

Find a dis@nguishing litmus test that exposes an ambiguity in a model

AMBIG

Total store order (x86)

Is there another seman>cally different memory model that also allows this test? Thread 1 Thread 2 X = 1

1

r1 = Y

2

Y = 1

3

r2 = X

4

Can r1 = 0 ∧ r2 = 0?

slide-68
SLIDE 68

Ambiguity

Find a dis@nguishing litmus test that exposes an ambiguity in a model

AMBIG

Total store order (x86) Par@al store order (SPARC)

Is there another seman>cally different memory model that also allows this test? Thread 1 Thread 2 X = 1

1

r1 = Y

2

Y = 1

3

r2 = X

4

Can r1 = 0 ∧ r2 = 0?

slide-69
SLIDE 69

Ambiguity

Find a dis@nguishing litmus test that exposes an ambiguity in a model

AMBIG

Total store order (x86) Par@al store order (SPARC) ✓ PSO ✗ TSO

Is there another seman>cally different memory model that also allows this test? Thread 1 Thread 2 X = 1

1

r1 = Y

2

Y = 1

3

r2 = X

4

Can r1 = 0 ∧ r2 = 0? Thread 1 Thread 2 X = 1

1

Y = 1

2

r1 = Y

3

r2 = X

4

Can r1 = 1 ∧ r2 = 0?

slide-70
SLIDE 70

The Synthesis-Ambiguity Cycle

5 3 1 2 4

Litmus tests

slide-71
SLIDE 71

The Synthesis-Ambiguity Cycle

5 3 1 2 4

Litmus tests

Documenta@on

🎳 🎳

Random/systema@c
 genera@on

 Architects

slide-72
SLIDE 72

The Synthesis-Ambiguity Cycle

5 3 1 2 4

Litmus tests

slide-73
SLIDE 73

The Synthesis-Ambiguity Cycle

5 3 1 2 4

Litmus tests Memory model
 specifica>on SYNTH

slide-74
SLIDE 74

The Synthesis-Ambiguity Cycle

5 3 1 2 4

Litmus tests Memory model
 specifica>on SYNTH AMBIG

6

slide-75
SLIDE 75

The Synthesis-Ambiguity Cycle

5 3 1 2 4

Litmus tests Memory model
 specifica>on SYNTH AMBIG

Unique memory model (within framework sketch)

6

slide-76
SLIDE 76

Results

slide-77
SLIDE 77

Synthesizing exis>ng memory models

PowerPC x86

slide-78
SLIDE 78

Synthesizing exis>ng memory models

PowerPC x86 768 tests

[Alglave et al, CAV’10]

10 tests

slide-79
SLIDE 79

Synthesis

Synthesizing exis>ng memory models

PowerPC x86 768 tests

[Alglave et al, CAV’10]

10 tests ✓ 12 seconds ✓ 2 seconds

Search space: 21406 Search space: 2624

slide-80
SLIDE 80

Synthesis

Synthesizing exis>ng memory models

PowerPC x86 768 tests

[Alglave et al, CAV’10]

10 tests ✓ 12 seconds ✓ 2 seconds

Not equivalent to published model! Search space: 21406 Search space: 2624

slide-81
SLIDE 81

Synthesis

Synthesizing exis>ng memory models

PowerPC x86 768 tests

[Alglave et al, CAV’10]

10 tests ✓ 12 seconds ✓ 2 seconds

Not equivalent to TSO! Not equivalent to published model! Search space: 21406 Search space: 2624

slide-82
SLIDE 82

Synthesis

Synthesizing exis>ng memory models

PowerPC x86 768 tests

[Alglave et al, CAV’10]

10 tests ✓ 12 seconds ✓ 2 seconds

Not equivalent to TSO!

9 new tests 4 new tests Ambiguity

Not equivalent to published model! Search space: 21406 Search space: 2624 sync, lwsync, etc. mfence, xchg

slide-83
SLIDE 83

Other results

Implemented another framework sketch [Mador-Haim et al, DAC’11]

Found typo in paper; couldn’t fix by hand, but synthesized repair

slide-84
SLIDE 84

Other results

Implemented another framework sketch [Mador-Haim et al, DAC’11]

Found typo in paper; couldn’t fix by hand, but synthesized repair

Order of magnitude faster than the Alloy general-purpose rela>onal solver for verifica@on and equivalence

Ocelot offers finer-grained control over rela@onal constraints

slide-85
SLIDE 85

Other results

Implemented another framework sketch [Mador-Haim et al, DAC’11]

Found typo in paper; couldn’t fix by hand, but synthesized repair

Order of magnitude faster than the Alloy general-purpose rela>onal solver for verifica@on and equivalence

Ocelot offers finer-grained control over rela@onal constraints

Comparable performance to exis@ng custom memory model tool for verifica@on (Herd [Alglave et al, CAV’10])

slide-86
SLIDE 86

∀ ∃ ∈ ∧ ∨ ∩ ∪ ⊂ ⋈ ⇒

MemSynth

Framework sketches

define a class of memory models

MemSynth engine

verifica@on, equivalence, synthesis, ambiguity

Results

synthesize real-world memory model specs

memsynth.uwplse.org