On 01/22/15 09:28, Vasileios Anagnostopoulos wrote:
> Thank you very much I will check it out. Since I am an MC newbie, I
> would like to ask if nuSMV is suitable for this kind of task just to do
> some baby learning steps and have some diversity.
>
I really don't know the details of nuSMV or symbolic model checking, so
I cannot comment about the relevance of this tools for a system like a
Raft cluster.
For what I know, nuSMV and CADP have quite different approaches, for
instance nuSMV is state-based (information is related to a system state)
and symbolic (encode the system in an symbolic expression), while CADP
is action-based (information is related to actions (events) of the
system) and usually generates the whole state space explicitly. nuSMV
uses techniques like SAT-solving to check properties, whereas EVALUATOR4
[0] (one of CADP model checkers) walks into the state space to verify a
property. It would be great to have a nuSMV model of Raft for comparison!
Besides, I suggest you to express the properties you want to check early
on. A model checker has two main inputs, a system and a property, and
one often focus on the system description, but it is nice to know early
on what property you want to verify.
Regarding Raft, you can start to model the leader election phase and
verify the Election Safety property. You can refer to the example in
section 3 of the PDP'15 paper for an overview on how it can be done with
CADP tools.
> I still repeat that I am doing baby steps, I have seen a lot of hard
> math (hopf algebras, symmetric group combinatorics, graph algorithms,
> functional/harmonic analysis) and code but MC is something new for me
> and explore the software space. We modified Raft for another use case
> where we have created an algorithm but it is not ready until verified.
> When finished I will be happy to share.
>
As a side note, model checking is, by nature, useful for finding bugs.
If you want to thoroughly demonstrate the correctness of a system, you
should look into proofs, where proof assistants such as Coq [1] can be used.
All the best for your project !
Hugues
[0]
http://cadp.inria.fr/tools.html#section-5
EVALUATOR4 man page :
http://cadp.inria.fr/man/evaluator4.html
[1]
https://coq.inria.fr/
> <mailto:
raft-dev%2Bunsu...@googlegroups.com>.
> <mailto:
va...@mail.ntua.gr><mailto:
va...@mail.ntua.gr
> <mailto:
va...@mail.ntua.gr>>
www.ntua.gr
> <
http://www.ntua.gr><
http://www.ntua.gr/>