コード例 #1
0
ファイル: cmilner.c プロジェクト: UGent-HES/javabdd
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;
}
コード例 #2
0
ファイル: muddy.c プロジェクト: 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)));
}
コード例 #3
0
ファイル: transition_system.c プロジェクト: r2im/pickaxe
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;
}
コード例 #4
0
ファイル: transition_system.c プロジェクト: r2im/pickaxe
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;
}