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.

http://github.com/dcreager/hst/c...

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
New-ticket Create new ticket

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.