OCamlPro / alt-ergo

OCamlPro public development repository for Alt-Ergo
https://alt-ergo.ocamlpro.com/
Other
132 stars 33 forks source link

Removing the Tableaux-CDCL and CDCL solvers #1241

Open bclement-ocp opened 1 month ago

bclement-ocp commented 1 month ago

Supporting all these solvers multiply the testing configurations and make it more difficult to perform changes to the SatML solver: the Tableaux-CDCL has a special entry point (the "hybrid" frontend) into the SatML solver, and the code is full of if-then-else conditions for the two components (in_theory and in_interpretation) of the CDCL-Tableaux hybrid. These conditions are true for the CDCL-Tableaux solver and false for the CDCL solver, but we also have special paths for cases where only one of them is set to true.

Ideally, I would like to remove the Tableaux-CDCL and the CDCL solvers entirely, as well as the --no-tableaux-cdcl-in-theories and --no-tableaux-cdcl-in-instantiation flags (which, confusingly enough, affect CDCL-Tableaux solver and not Tableaux-CDCL) and make Alt-Ergo error out if they are used. In order to do that, we should be sure that there is no reason to use any of these solvers instead of the Tableaux or CDCL-Tableaux solvers which would be kept as is (but the code of the CDCL-Tableaux solvers could be streamlined and simplified).

Following previous investigations by @Halbaroth into the different SAT solvers in Alt-Ergo, I have compared the variants (Tableaux-CDCL and CDCL-Tableaux) against the base solvers (Tableaux and CDCL) on our internal dataset.

(Note that there have also been discussions about removing the Tableaux solver entirely, but this is a different issue -- notably there seems to be differences in the way the Tableaux and CDCL-Tableaux solvers interact with instantiation that would be worth investigating and could lead to further improvements to the CDCL-Tableaux solver)

The result of the investigation is that:

Given these results, I think that:

@Gbury thoughts?

bclement-ocp commented 1 month ago

@Gbury ping — if you agree with the analysis above, removing the Tableaux-CDCL variant would make it easier to implement features needed for FPA support in the CDCL (and CDCL-Tableaux) solver.

Gbury commented 1 month ago

That makes sense to me. i'm in favor of removing Tableaux-CDCL, and investigating the cases where CDCL is better so that we can consider removing it in the future.

Halbaroth commented 1 month ago

Kill it with fire.