AI-PBDD

 view release on metacpan or  search on metacpan

t/PBDD.t  view on Meta::CPAN

  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 $bdd1 = AI::PBDD::createBDD();
  $names{AI::PBDD::internal_index($bdd1)} = 'A';
  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 $bdd1 = AI::PBDD::createBDD();
  $names{AI::PBDD::internal_index($bdd1)} = 'A';
  my $bdd2 = AI::PBDD::createBDD();
  $names{AI::PBDD::internal_index($bdd2)} = 'B';
  my $bdd3 = AI::PBDD::createBDD();
  $names{AI::PBDD::internal_index($bdd3)} = 'C';
  my $bdd4 = AI::PBDD::and($bdd1,$bdd2);
  my $bdd5 = AI::PBDD::and($bdd2,$bdd3);

  my $bdd = AI::PBDD::relProd($bdd4, $bdd5, $bdd2);
  my $dmp = DumpBDD($bdd, \%names);
  is($dmp, "A (C (T) (F)) (F)", "relProd()");  

  AI::PBDD::kill();
}

{
  #
  # restrict
  #
  AI::PBDD::init(100,1000000);
  my %names = ();
  my $bdd1 = AI::PBDD::createBDD();
  $names{AI::PBDD::internal_index($bdd1)} = 'A';
  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 $bdd1 = AI::PBDD::createBDD();
  $names{AI::PBDD::internal_index($bdd1)} = 'A';
  my $bdd2 = AI::PBDD::createBDD();
  $names{AI::PBDD::internal_index($bdd2)} = 'B';
  my $bdd3 = AI::PBDD::createBDD();
  $names{AI::PBDD::internal_index($bdd3)} = 'C';
  my $bdd4 = AI::PBDD::createBDD();
  $names{AI::PBDD::internal_index($bdd4)} = 'D';
  my $bdd5 = AI::PBDD::or($bdd1,$bdd2);
  my $bdd6 = AI::PBDD::or($bdd3,$bdd4);
  my $bdd7 = AI::PBDD::and($bdd5,$bdd6);
  my $bdd8 = AI::PBDD::or($bdd1,$bdd3);

  my $bdd = AI::PBDD::constrain($bdd7, $bdd8);
  my $dmp = DumpBDD($bdd, \%names);
  is($dmp, "A (C (T) (D (T) (F))) (B (T) (F))", "constrain()");  

  AI::PBDD::kill();
}

{
  #
  # replace
  #
  AI::PBDD::init(100,1000000);
  my %names = ();
  my $bdd1 = AI::PBDD::createBDD();
  $names{AI::PBDD::internal_index($bdd1)} = 'A';
  my $bdd2 = AI::PBDD::createBDD();
  $names{AI::PBDD::internal_index($bdd2)} = 'B';
  my $bdd3 = AI::PBDD::createBDD();
  $names{AI::PBDD::internal_index($bdd3)} = 'C';
  my $bdd4 = AI::PBDD::createBDD();
  $names{AI::PBDD::internal_index($bdd4)} = 'D';
  my $bdd5 = AI::PBDD::or($bdd1, $bdd2);

  my @old = ($bdd1,$bdd2);
  my @new = ($bdd3,$bdd4);

  my $pair = AI::PBDD::createPair(\@old, \@new);

  my $bdd = AI::PBDD::replace($bdd5, $pair);
  my $dmp = DumpBDD($bdd, \%names);
  is($dmp, "C (T) (D (T) (F))", "replace()");  

  AI::PBDD::deletePair($pair);

  AI::PBDD::kill();
}



( run in 1.052 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )