-- | -- Module : Data.ZSDD -- Description : Zero-suppressed decision diagrams -- Copyright : (c) Eddie Jones, 2020 -- License : BSD-3 -- Maintainer : eddiejones2108@gmail.com -- Stability : experimental -- -- Zero suppressed decision diagrams provide an efficient representation of boolean -- formulas build from atomic propositions or atoms. -- -- == Warning -- -- The space used by a diagram can grows with each operation due to the cache. -- -- == Implementation -- Internally it is a directed acyclic graph, thereby allowing for sharing -- of subterms. -- Operations have a monotonic effect on the diagram and their results are -- cached. -- The implementations was outlined by this paper: -- -- * Shin-ichi Minato, \"/Zero-suppressed BDDs for set manipulation in combinatorial problems/\", -- DAC '93: Proceedings of the 30th international Design Automation Conference -- <https://dl.acm.org/doi/10.1145/157485.164890> module Data.ZSDD ( -- * Diagrams Diagram, runDiagram, -- * Propositions Prop (Top, Bot), Invertible, -- ** Construction -- $construction atomic, negate, assign, union, intersect, difference, -- ** Query isEmpty, isNotEmpty, count, -- ** Map mapAtom, bindAtom, ) where import Data.ZSDD.Internal import Prelude ()