2004-08-11 10:51:17 +01:00
|
|
|
/**
|
|
|
|
*@file arachne.c
|
|
|
|
*
|
|
|
|
* Introduces a method for proofs akin to the Athena modelchecker
|
|
|
|
* http://www.ece.cmu.edu/~dawnsong/athena/
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include "system.h"
|
|
|
|
#include "arachne.h"
|
|
|
|
|
2004-08-11 12:22:20 +01:00
|
|
|
//! Init Arachne engine
|
|
|
|
void
|
|
|
|
arachneInit (const System sys)
|
|
|
|
{
|
|
|
|
/*
|
|
|
|
* Add intruder protocol roles
|
|
|
|
*/
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
//! Close Arachne engine
|
|
|
|
void
|
|
|
|
arachneDone (const System sys)
|
|
|
|
{
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
//! Prune determination
|
|
|
|
/**
|
|
|
|
*@returns true iff this state is invalid for some reason
|
|
|
|
*/
|
|
|
|
int
|
|
|
|
prune (const System sys)
|
|
|
|
{
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
2004-08-11 10:51:17 +01:00
|
|
|
//! Main recursive procedure for Arachne
|
|
|
|
int
|
2004-08-11 12:22:20 +01:00
|
|
|
iterate (const System sys)
|
|
|
|
{
|
|
|
|
/**
|
|
|
|
* Possibly prune this state
|
|
|
|
*/
|
|
|
|
|
|
|
|
if (prune (sys))
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* If not pruned, check whether its a final state (i.e. all goals bound)
|
|
|
|
* - Yes: check whether property holds
|
|
|
|
* - No: iterate further
|
|
|
|
*/
|
|
|
|
}
|
|
|
|
|
|
|
|
//! Main code for Arachne
|
|
|
|
/**
|
|
|
|
* For this test, we manually set up some stuff.
|
|
|
|
*/
|
|
|
|
int
|
2004-08-11 10:51:17 +01:00
|
|
|
arachne (const System sys)
|
|
|
|
{
|
2004-08-11 12:22:20 +01:00
|
|
|
/*
|
|
|
|
* set up claim role(s)
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*
|
|
|
|
* iterate
|
|
|
|
*/
|
|
|
|
iterate (sys);
|
2004-08-11 10:51:17 +01:00
|
|
|
}
|