Skip to content

scram::core::Bdd

Analysis of PDAGs with Binary Decision Diagrams. More...

#include <bdd.h>

Inherits from boost::noncopyable

Public Classes

Name
classConsensus <br>Provides access to consensus calculation private facilities.
structFunction <br>Holder of computation resultant functions and gate representations.

Public Types

Name
using IntrusivePtr< Vertex< Ite > >VertexPtr <br>BDD vertex base.
using IntrusivePtr< Terminal< Ite > >TerminalPtr <br>Terminal vertices.

Public Functions

Name
Bdd(const Pdag * graph, const Settings & settings)<br>Constructor with the analysis target.
~Bdd()<br>To handle incomplete ZBDD type with unique pointers.
const Function &root() const
const std::unordered_map< int, Function > &modules() const
const std::unordered_map< int, int > &index_to_order() const
boolcoherent() const
voidClearMarks(bool mark)<br>Helper function to clear and set vertex marks.
voidAnalyze(const Pdag * graph =nullptr)<br>Runs the Qualitative analysis with the representation of a PDAG as ROBDD.
const Zbdd &products() const

Detailed Description

cpp
class scram::core::Bdd;

Analysis of PDAGs with Binary Decision Diagrams.

Note: The low/else edge is chosen to have the attribute for an ITE vertex. There is only one terminal vertex of value 1/True.

This binary decision diagram data structure represents Reduced Ordered BDD with attributed edges.

Public Types Documentation

using VertexPtr

cpp
using scram::core::Bdd::VertexPtr =  IntrusivePtr<Vertex<Ite> >;

BDD vertex base.

using TerminalPtr

cpp
using scram::core::Bdd::TerminalPtr =  IntrusivePtr<Terminal<Ite> >;

Terminal vertices.

Public Functions Documentation

function Bdd

cpp
Bdd(
    const Pdag * graph,
    const Settings & settings
)

Constructor with the analysis target.

Parameters:

  • graph Preprocessed and partially normalized PDAG.
  • settings The analysis settings.

Note: BDD construction may take considerable time.

Precondition: The PDAG has variable ordering.

Reduced Ordered BDD is produced from a PDAG.

function ~Bdd

cpp
~Bdd()

To handle incomplete ZBDD type with unique pointers.

function root

cpp
inline const Function & root() const

Return: The root function of the ROBDD.

function modules

cpp
inline const std::unordered_map< int, Function > & modules() const

Return: Mapping of PDAG modules and BDD graph vertices.

function index_to_order

cpp
inline const std::unordered_map< int, int > & index_to_order() const

Return: Mapping of variable indices to their orders.

function coherent

cpp
inline bool coherent() const

Return: true if the BDD has been constructed from a coherent PDAG.

function ClearMarks

cpp
inline void ClearMarks(
    bool mark
)

Helper function to clear and set vertex marks.

Parameters:

  • mark Desired mark for BDD vertices.

Note: Marks will propagate to modules as well.

Warning: If the graph is discontinuously and partially marked, this function will not help with the mess.

function Analyze

cpp
void Analyze(
    const Pdag * graph =nullptr
)

Runs the Qualitative analysis with the representation of a PDAG as ROBDD.

Parameters:

  • graph The optional PDAG with non-declarative substitutions.

function products

cpp
inline const Zbdd & products() const

Return: Products generated by the analysis.

Precondition: Analysis is done.


Updated on 2025-11-11 at 16:51:08 +0000