AI-PBDD
view release on metacpan or search on metacpan
#
# createBDD
#
# created BDDs (variables) are even integers
AI::PBDD::init(100,1000000);
my $v = AI::PBDD::createBDD();
ok(!($v % 2), "first createBDD()");
ok(!($v % 2), "second createBDD()");
AI::PBDD::kill();
}
{
#
# getVarCount
# getBDD
#
AI::PBDD::init(100,1000000);
my $v1 = AI::PBDD::createBDD();
push @vars, $bdd2;
my $set = AI::PBDD::makeSet(\@vars, 2);
my $dmp = DumpBDD($set, \%names);
is($dmp, "A (B (T) (F)) (F)", "first makeSet()");
$set = AI::PBDD::makeSet(\@vars, 1, 1);
$dmp = DumpBDD($set, \%names);
is($dmp, "B (T) (F)", "second makeSet()");
AI::PBDD::kill();
}
{
#
# exists
#
AI::PBDD::init(100,1000000);
my %names = ();
my $bdd2 = AI::PBDD::createBDD();
$names{AI::PBDD::internal_index($bdd2)} = 'B';
my $bdd3 = AI::PBDD::and($bdd1,$bdd2);
my $bdd = AI::PBDD::exists($bdd3, $bdd1);
my $dmp = DumpBDD($bdd, \%names);
is($dmp, "B (T) (F)", "first exists()");
$bdd = AI::PBDD::exists($bdd3, $bdd2);
$dmp = DumpBDD($bdd, \%names);
is($dmp, "A (T) (F)", "second exists()");
AI::PBDD::kill();
}
{
#
# forall
#
AI::PBDD::init(100,1000000);
my %names = ();
my $bdd2 = AI::PBDD::createBDD();
$names{AI::PBDD::internal_index($bdd2)} = 'B';
my $bdd3 = AI::PBDD::or($bdd1,$bdd2);
my $bdd = AI::PBDD::forall($bdd3, $bdd1);
my $dmp = DumpBDD($bdd, \%names);
is($dmp, "B (T) (F)", "first forall()");
$bdd = AI::PBDD::forall($bdd3, $bdd2);
$dmp = DumpBDD($bdd, \%names);
is($dmp, "A (T) (F)", "second forall()");
AI::PBDD::kill();
}
{
#
# relProd
#
AI::PBDD::init(100,1000000);
my %names = ();
my $bdd2 = AI::PBDD::createBDD();
$names{AI::PBDD::internal_index($bdd2)} = 'B';
my $bdd3 = AI::PBDD::and($bdd1,$bdd2);
my $bdd = AI::PBDD::restrict($bdd3, $bdd1);
my $dmp = DumpBDD($bdd, \%names);
is($dmp, "B (T) (F)", "first restrict()");
$bdd = AI::PBDD::restrict($bdd3, AI::PBDD::not($bdd1));
$dmp = DumpBDD($bdd, \%names);
is($dmp, "F", "second restrict()");
AI::PBDD::kill();
}
{
#
# constrain
#
AI::PBDD::init(100,1000000);
my %names = ();
my $bdd = AI::PBDD::xor($bdd1, $bdd2);
my $minterm = AI::PBDD::satOne($bdd);
my $dmp = DumpBDD($minterm, \%names);
ok($dmp eq "A (B (F) (T)) (F)" ||
$dmp eq "A (F) (B (T) (F))", "satOne()");
my $cnt = AI::PBDD::satCount($bdd);
is($cnt, 2*2**98, "first satCount()");
$cnt = AI::PBDD::satCount($bdd,98);
is($cnt, 2, "second satCount()");
$bdd = AI::PBDD::or($bdd1, $bdd2);
$cnt = AI::PBDD::satCount($bdd);
is($cnt, 3*2**98, "third satCount()");
$cnt = AI::PBDD::satCount($bdd,98);
is($cnt, 3, "fourth satCount()");
AI::PBDD::kill();
}
( run in 1.048 second using v1.01-cache-2.11-cpan-39bf76dae61 )