An abstraction of the Boolean Function
Representation used by FGL.
GL, the predecessor to FGL, was originally designed to represent
Boolean functions with on ubdds, with support for hons-aigs added
later. In one mode of operation, all Boolean functions were represented with
BDDs, and in another, all Boolean functions were represented with AIGs. BFR was
a type that depended on the mode, meaning UBDD when in BDD mode and AIG when in
FGL currently only supports representing Boolean functions using references
into an AIGNET stobj, but in case we want to add support for other
representations we still use the BFR concept. The particular representation
used is governed by a bfr-mode object stored in the logicman field
of the interp-st.
To support aignets, it is important for BFRs to be well-formed,
i.e. literals whose node index is in bounds for the current aignet. So we
also use a bfrstate object which simultaneously tracks the bfr-mode and
- Evaluate a BFR under an appropriate BDD/AIG environment.
- Object encoding the bfr-mode and current node index bound, if
using AIGNET mode.
- Recognizer for valid Boolean Function Representation (bfr) objects.
- (bfr-listp$ x bfrstate) recognizes lists where every element satisfies bfr-p.
- Set the nth BFR variable to some value in an AIG/BDD environment.
- Determines whether FGL is using ubdds, hons-aigs, or aignet literals as its Boolean function representation.
- Check the current bfr-mode.
- Choose behavior based on the current bfr mode of a logicman.
- Choose behavior based on the current bfr mode of the bfrstate
- Check the current bfr-mode of a bfrstate object.
- Check the current bfr-mode of a logicman stobj