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.