A LeafTree is specified by listing its leaves, and for each internal edge, the partition the edge induces on the set of leaves. $L$ is the set of leaves, or if an integer $n$ is input then the leaves will be be named 0,...,n-1. $E$ is a list with one entry for each internal edge. Each entry is a partition specified as a List or Set of the leaves in one side of the partition. Thus each edge can be specified in two possible ways.
A LeafTree can also be constructed from a Graph provided the graph has no cycles.
Here we construct the quartet tree which is the tree with 4 leaves and one internal edge.
i1 : T = leafTree({a,b,c,d},{{a,b}}) o1 = {{a, b, c, d}, {set {a, b}, set {a}, set {b}, set {c}, set {d}}} o1 : LeafTree |
i2 : leaves T o2 = set {a, b, c, d} o2 : Set |
i3 : edges T o3 = {set {a, b}, set {a}, set {b}, set {c}, set {d}} o3 : List |
Here is a tree with 5 leaves given as a Graph.
i4 : G = graph{{a,b},{c,b},{b,d},{d,e},{d,f},{f,g},{f,h}} o4 = Graph{a => {b} } b => {a, c, d} c => {b} d => {b, e, f} e => {d} f => {d, g, h} g => {f} h => {f} o4 : Graph |
i5 : T = leafTree G o5 = {{a, c, e, g, h}, {set {a, c}, set {a, c, e}, set {a}, set {c}, set {e}, set {g}, set {h}}} o5 : LeafTree |
i6 : leaves T o6 = set {a, c, e, g, h} o6 : Set |
i7 : internalEdges T o7 = {set {a, c}, set {a, c, e}} o7 : List |
The object leafTree is a method function.