Habanero Phaser formalization
Phaser state operations
Welcome to our online interpreter of the Habanero formalization. Read on the developer notes for information about the implementation of this page.
The following two operations are translated automatically from our Coq formalization into Javascript.
hj.run(op,ph)
performs a reduction step by applying operationop
to phaser stateph
. The function returns the new state or throws an exception if it cannot reduce.hj.hb(ph1,ph2)
returns true if, and only if, phaserph1
happened before phaserph2
.hj.par(ph1,ph2)
returns true if, and only if, phaserph1
may happen in parallel withph2
.hj.wf(ph)
returns true if, and only if, phaserph
is well-formed.hj.wo(ph)
returns true if, and only if, phaserph
is well-ordered.
Executable samples. The widget below is a Javascript REPL; input a Javascript expression to exercise our functions.
sandbox loading...
Happens-before visualization
The trace in the text box is rendered as a graph. Editing the trace automatically updates the graph.
Rendering of the trace:
Trace manipulation
We provide the following functions to handle a trace:
trace()
returns the trace from the input text box.hj.run_trace(t)
returns a phaser state from a given tracet
.hj.render_graph(t)
renders tracet
in the visualization widget.
sandbox loading...