On Fri, Nov 25, 2016 at 12:30 AM Michael Jones <michael.jo...@gmail.com>
wrote:

> This is very nice! However, am i right in understanding that the magic is
> in knowing the text of the program--the fact that there are untaken
> branches? If so, this is not simply a 'behavioral' verification...it knows
> about the construction of the code and not just its behavior. Maybe I was
> unclear.
>
>

Indeed you are right. This requires the ability to work on the program
text. It is a bit too hard to work on the output assembly for the program.
The advantage of a model-checker or a probalistic method such as
"testing/quick" is that they regard the system-under-test as a black box.

This fact can be used in numerous ways. The most powerful one is that once
you have a specification model, in *any* programming language, it applies
to any system implementing that model, in *any* language. This has been
used historically for checking protocols for correctness, where the
specification were written in some high-level language (Haskell, Erlang)
but the code being tested were run in a low-level language (C, typically).

In short, no single method applies in every case. Figuring out if two
programs are observationally equivalent usually requires one to exploit the
structure of the program text. Because from that structure the proof or
search strategy can be extracted.

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to