Type Trees
The following code snippet provides an easy way to print the type tree of logic circuits.
using InteractiveUtils;
using LogicCircuits;
using AbstractTrees;
AbstractTrees.children(x::Type) = subtypes(x);For example, we can see LogicCircuits.LogicCircuit's type tree.
AbstractTrees.print_tree(LogicCircuit)LogicCircuit
├─ PlainLogicCircuit
│ ├─ PlainLogicInnerNode
│ │ ├─ PlainConstantNode
│ │ ├─ Plain⋀Node
│ │ └─ Plain⋁Node
│ └─ PlainLogicLeafNode
│ └─ PlainLiteralNode
└─ StructLogicCircuit
├─ PlainStructLogicCircuit
│ ├─ PlainStructLogicInnerNode
│ │ ├─ PlainStructConstantNode
│ │ ├─ PlainStruct⋀Node
│ │ └─ PlainStruct⋁Node
│ └─ PlainStructLogicLeafNode
│ └─ PlainStructLiteralNode
└─ Sdd
├─ SddInnerNode
│ ├─ Sdd⋀Node
│ └─ Sdd⋁Node
└─ SddLeafNode
├─ SddConstantNode
└─ SddLiteralNodeAlternatively, here's Vtree's type tree.
AbstractTrees.print_tree(Vtree)Vtree ├─ PlainVtree │ ├─ PlainVtreeInnerNode │ └─ PlainVtreeLeafNode └─ SddMgr ├─ SddMgrInnerNode └─ SddMgrLeafNode