Changeset [04ffccc1b5572d80415bac200d0544576e8078b9] by Douglas Creager
April 15th, 2008 @ 10:09 PM
Adding counterexamples to the traces refinement check
Instead of just giving a yes/no answer for a traces refinement, we now
provide a counterexample when the refinement fails. The
counterexample consists of a trace of visible events, after which the
IMPL process can perform some event that SPEC cannot perform. (This
event is provided in the counterexample, as well.) There will often
me many possible counterexamples for a particular failed refinement;
the current implementation uses a breadth-first search, so we know
that the returned counterexample will be one with the smallest trace.
If there are many counterexamples of this length, an arbitrary one
will be returned.
The csp0 utility has also been modified to display this
counterexample, as have the traces refinement test cases.
As currently defined, the counterexample might not be especially
useful, since it only includes visible events. If the high-level SPEC
and IMPL processes involve a lot of hiding, then you won't actually be
able to see any useful detail in the counterexample trace. We'll need
to add some logic for drilling down into the syntax tree of a CSP
process to fix this.
Committed by Douglas Creager
- A tests/refinement/00-basic1.traces
- A tests/refinement/00-basic2.traces
- A tests/refinement/00-basic3.traces
- A tests/refinement/00-basic4.traces
- A tests/refinement/80-roscoe-p40-a.traces
- A tests/refinement/80-roscoe-p40-b.traces
- A tests/refinement/80-roscoe-p52-a.traces
- A tests/refinement/80-roscoe-p52-b.traces
- M include/hst/assertions.hh
- M include/hst/types.hh
- M src/assertions/refine.cc
- M src/bin/csp0.cc
- M tests/refinement/CMakeLists.txt
- M tests/refinement/test-traces-refinement.cc
Create your profile
Help contribute to this project by taking a few moments to create your personal profile. Create your profile »
An open-source refinement checker for the CSP process algebra.