- Implemented the irrelevancy cutter, which immensely improves
performance.
This commit is contained in:
parent
269b5c7646
commit
82b2603263
@ -190,6 +190,43 @@ executeStep (const System sys, const int run)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* remove from a roledef that is instantiated, the uninteresting ends bits
|
||||||
|
*/
|
||||||
|
void removeIrrelevant (const System sys, const int run, Roledef rd)
|
||||||
|
{
|
||||||
|
Roledef rdkill;
|
||||||
|
int killclaims;
|
||||||
|
|
||||||
|
if (untrustedAgent (sys, sys->runs[run].agents))
|
||||||
|
killclaims = 1;
|
||||||
|
else
|
||||||
|
killclaims = 0;
|
||||||
|
|
||||||
|
rdkill = rd;
|
||||||
|
while (rd != NULL)
|
||||||
|
{
|
||||||
|
if (rd->type == SEND || (!killclaims && rd->type == CLAIM))
|
||||||
|
rdkill = rd;
|
||||||
|
rd = rd->next;
|
||||||
|
}
|
||||||
|
/* report part */
|
||||||
|
/*
|
||||||
|
rd = rdkill;
|
||||||
|
killclaims = 0;
|
||||||
|
while (rd != NULL)
|
||||||
|
{
|
||||||
|
killclaims++;
|
||||||
|
rd = rd->next;
|
||||||
|
}
|
||||||
|
warning ("%i events stripped from run %i.", killclaims, run);
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* remove after rdkill */
|
||||||
|
roledefDelete (rdkill->next);
|
||||||
|
rdkill->next = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
//! Explores the system state given by the next step of a run.
|
//! Explores the system state given by the next step of a run.
|
||||||
/**
|
/**
|
||||||
* grandiose naming scheme (c) sjors dubya.
|
* grandiose naming scheme (c) sjors dubya.
|
||||||
@ -227,7 +264,8 @@ explorify (const System sys, const int run)
|
|||||||
}
|
}
|
||||||
/* executed by trusted agent */
|
/* executed by trusted agent */
|
||||||
|
|
||||||
/* Special check 1: if agents have been instantiated in such a way that no more claims need to be evaluated, then we can skip
|
/* Special check 1: if agents have been instantiated in such a way that no more claims in any run
|
||||||
|
* need to be evaluated, then we can skip
|
||||||
* further traversal.
|
* further traversal.
|
||||||
*/
|
*/
|
||||||
if (sys->secrets == NULL)
|
if (sys->secrets == NULL)
|
||||||
@ -296,7 +334,12 @@ explorify (const System sys, const int run)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Special check 3: if all agents in each run send only encrypted stuff, and all agents are trusted,
|
/* Special check 3: if after choosing, this run ends on (read|skippedclaim)*, we can remove that part already.
|
||||||
|
*/
|
||||||
|
|
||||||
|
removeIrrelevant (sys, run, rd);
|
||||||
|
|
||||||
|
/* Special check x: if all agents in each run send only encrypted stuff, and all agents are trusted,
|
||||||
* there is no way for the intruder to learn anything else than encrypted terms, so secrecy claims will not
|
* there is no way for the intruder to learn anything else than encrypted terms, so secrecy claims will not
|
||||||
* be violated anymore if they contain no terms that are encrypted with such keys */
|
* be violated anymore if they contain no terms that are encrypted with such keys */
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user