Exemplo n.º 1
0
bdd reachable_states(bdd I, bdd T)
{
   bdd C, by, bx = bddfalse;
   bdd tmp1;
   
   do
   {
      bdd_addref(bx);
      
      by = bx;
#if 1
      tmp1 = bdd_addref( bdd_apply(T, bx, bddop_and) );
      C = bdd_addref( bdd_exist(tmp1, normvarset) );
      bdd_delref(tmp1);
#else
      C = bdd_addref( bdd_appex(bx, T, bddop_and, normvar, N*3) );
#endif
      
      tmp1 = bdd_addref( bdd_replace(C, pairs) );
      bdd_delref(C);
      C = tmp1;

      tmp1 = bdd_apply(I, C, bddop_or);
      bdd_delref(C);

      bdd_delref(bx);
      bx = tmp1;
      
      /*printf("."); fflush(stdout);*/
   }
   while(bx != by);
   
   printf("\n");
   return bx;
}
Exemplo n.º 2
0
Arquivo: muddy.c Projeto: Armael/HOL
/* ML type: bdd -> bdd -> int -> varSet -> bdd */
EXTERNML value mlbdd_bdd_appex(value left, value right, 
			value opr,  value varset) /* ML */
{
  return mlbdd_make(bdd_appex(Bdd_val(left),Bdd_val(right), 
				 Int_val(opr), Bdd_val(varset)));
}
Exemplo n.º 3
0
BDD pre_exists(TransitionSystem *model, BDD p) {
	BDD pprime = bdd_addref(to_primed(model, p));
	BDD res = bdd_appex(model->transitions_bdd, pprime, bddop_and, model->primed_vars);
	bdd_delref(pprime);
	return res;
}
Exemplo n.º 4
0
static BDD to_primed(TransitionSystem *model, BDD p) {
	//does not bdd_addref, the caller must add it
	BDD res = bdd_appex(model->unprimed2primed, p, bddop_and, model->unprimed_vars);
	return res;
}