New in Version 0.17.7
Released 23 Jan 2025
Interface Changes
-
Added classes
minterm
andminterm_coll
to deal with variable assignments and truth tables over sets and relations. Both of these are inminterms.h
andminterms.cc
. -
Creating functions from single minterms or minterm collections is now done using methods
minterm::buildFunction()
,minterm_coll::buildFunctionMax()
, andminterm_coll::buildFunctionMin()
. These methods allow specification of a default value, and in the case of minterm collections, specify how to deal with overlapping minterms in the collection (take the max or min value). These replace severalforest::createEdge()
methods, which are now deprecated. -
Function evaluation is now done through
dd_edge::evaluate
. This replaces severalforest::evaluate()
methods, which are now deprecated. -
dd_edge::set()
parameters are reversed, for consistency (edge value before node). - Iterating through a function is now done using
an instance of
dd_edge::iterator
, created withThe interface is similar to STL iterators, except it is slightly faster to use the boolean operator than to compare with ```end()```, i.e., to use a loop of the form ```c++ for (dd_edge::iterator I = e.begin(); I; ++I)
You can pass a mask as a parameter to
begin()
; this should be a pointer to a (const)minterm
with values set toDONT_CARE
for variables that are free to take any value,DONT_CHANGE
for relation “to” variables that must equal their “from” counterpart, or a regular non-negative integer value to fix a variable. The oldenumerator
class is now deprecated. -
Old
forest::getElement()
is deprecated, in favor ofdd_edge::getElement()
. - Old
forest::createEdge()
for constant functions are deprecated, in favor offorest::createConstant()
.
Implementation
-
Updated minimum and maximum operations; works for all forest types. MINIMUM should be used instead of UNION for EV+MDDs, and MAXIMUM should be used instead of INTERSECTION for EV+MDDs.
-
Added comparison operations for EV+ and EV*.
Tests
- Most of these features are thoroughly tested in
chk_minterms
andchk_mtcoll
.