LogicNG v2.3.0 Release Notes
Release Date: 2022-07-18 // 11 months ago-
โ Added
- Overloaded method
createAssignment
inMiniSat
by flag whether the created assignment should be a fast evaluable assignment. - ๐ Extended
ModelEnumerationFunction.Builder
by flagfastEvaulable
which indicates whether the created assignments should be a fast evaluable assignment. - Convenience methods
isNNF()
,isDNF()
andisCNF()
in classFormula
- Two new constructors for
Substitution
s and a new methodgetMapping()
to get the internal mapping - Method
getSubstitution
onAnonymizer
to get the mapping from original variable to anonymized one - A DNF from BDD function
BDDDNFFunction
, a subclass of the newly added classBDDNormalFormFunction
- A DNF from BDD formula transformation
BDDDNFTransformation
, a subclass of the newly added classBDDNormalFormTransforamtion
- A canonical CNF enumeration
CanonicalCNFEnumeration
, a subclass of the newly added classCanonicalEnumeration
.
๐ Changed
- ๐ Improved methods
intersection
andunion
inCollectionHelper
by using bounded wildcards. - ๐ Improved performance of
hashCode
andequals
inAssignment
by avoiding redundant hash set creation. - Method
BDD#dnf()
uses the newly introducedBDDDNFFunction
to obtain a smaller DNF instead of a canonical DNF - Class
BDDCNFFunction
uses the singleton pattern - 0๏ธโฃ All functions/transformations/predicates with only a default constructor introduce a static
get()
method with the singleton pattern. The public constructors are now deprecated and will be removed with LogicNG 3.0 - ๐ง Always use the default configuration of algorithms from the formula factory and do not construct them in the respective classes separately.
๐ Fixed
- Minor edge case issue in
NegationSimplifier
which yielded a larger result formula than input formula. - โ
The
TermPredicate
logic was inverted. In detail, the minterm predicateTermPredicate#getMintermPredicate()
tested for a maxterm and theTermPredicate#getMaxtermPredicate()
tested for a minterm. To prevent silent errors for callers of these predicates, the factory method names were changed tominterm()
andmaxterm()
, respectively. Thus, an intentional breaking change on compile time level has been introduced to force callers to adjust their logic. - Minor edge case issue in
MiniSat
when performing assumption solving with proof tracing. - ๐ Fixed two bugs in the backbone computation on the MiniCard solver.
- Overloaded method