Types

The following code snippet provides an easy way to print the type tree of probabilistic circuits.

using InteractiveUtils;
using ProbabilisticCircuits;
using AbstractTrees;
AbstractTrees.children(x::Type) = subtypes(x);

For example, we can see ProbabilisticCircuits.ProbCircuit's type tree.

AbstractTrees.print_tree(ProbCircuit)
ProbCircuit
└─ PlainProbCircuit
   ├─ PlainInnerNode
   │  ├─ PlainMulNode
   │  └─ PlainSumNode
   └─ PlainInputNode
AbstractTrees.print_tree(InputDist)
InputDist
├─ Binomial
├─ Categorical
├─ Indicator
├─ BitsBinomial
└─ BitsCategorical