ngsankha/rbsyn

petri nets?

Opened this issue · 2 comments

Can we use petri nets for better computation of paths through types? Side effects help when there are assertions that test that side effect. But there is no way to reach a side effect path if there is no assertion for it. Petri nets could be helpful.

Example:

# type: () -> B
def my_method
  a = A.new()
  a.set_some_state(:foo)
  B.lookup(a)
end

Petri net ideas are outlined here: Component-based synthesis for complex APIs

Read this paper multiple times, need to think if this approach would fit with how our synthesis works.

Or maybe just do #14