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 └─ SddLiteralNode
Alternatively, here's Vtree
's type tree.
AbstractTrees.print_tree(Vtree)
Vtree ├─ PlainVtree │ ├─ PlainVtreeInnerNode │ └─ PlainVtreeLeafNode └─ SddMgr ├─ SddMgrInnerNode └─ SddMgrLeafNode