Skip to content

Unique Quantification is Broken #12

Description

@nhusung

$\exists! x_0. \top$ should be $\top\vert_{x_0 = \bot} \oplus \top\vert_{x_0 = \top} \equiv \top \oplus \top \equiv \bot$, but BuDDy returns $\top$. Here is a test for reproducing the bug:

#include <bdd.h>
#include <stdio.h>

int main(void) {
  bdd_init(1024, 256);
  bdd_setvarnum(3);

  int x[] = {0};
  BDD set = bdd_makeset(x, 1);
  BDD res = bdd_unique(bdd_true(), set);

  if (res == bdd_true()) {
    puts("res is true");
  } else if (res == bdd_false()) {
    puts("res is false");
  }
}

For reference: AFAIK, unique quantification is the same as the Boolean difference or Boolean derivative.

From my side, there is no urge to fix this bug, I just wanted to report it in case someone else stumbles across incorrect results.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions