úÎ-*Ù+      !"#$%&'()*None!"%&,/:DOT Wrapped quickcheck instance for +. A static forest structure. While traversals are always explicitly possible by following the indices, the nodes themselves shall always be ordered by the type p :: TreeOrder/. This is not completely enforced, given that Forestj is exporting the constructor, but encouraged via construction with helper functions. The labels of type a (in label) require a vector structure v for O(1) access. Each node k in [0..n-1] has a label at  label ! k.  Each node k has a parent node, or -1 if there is no such parent.  Each node kP has a vector of indices for its children. For leaf nodes, the vector is empty. The left sibling for a node k&. Will *not* cross subtrees. I.e. if k is lsib of l, then k and l have the same parent. The right sibling for a node k. DThe roots of the individual trees, the forest was constructed from.Kind of possible  TreeOrders.TODO In for in-order traversal?TODO  Unordered% for trees that have no sorted order?Construct a static ' with a tree traversal function. I.e. forestWith preorderF trees5 will construct a pre-order forest from the list of trees."Siblings span trees in the forest!Construct a pre-ordered forest. Construct a post-ordered forest.Add  pre-ordered (!)/ indices. First argument is the starting index.Add  pre-ordered (!) indices, but to a forest.Add  pre-ordered (!)8 indices to a forest, but throw the label away as well.+Add parent + children information. Yields (Index,Parent,[Child],Label) . Parent is -1 if root node.GReturn a map with all the nearest siblings for each node, for a forest.EReturn a map with all the nearest siblings for each node, for a tree.(Return the left-most leaf for each node.+Just the leaf-most leaf for a certain node.)Return the right-most leaf for each node.IGiven a tree, and a node index, return the right-most leaf for the node.jReturn all left key roots. These are the nodes that have no (super-) parent with the same left-most leaf.7This function is somewhat specialized for tree editing. TODO group by ŸReturns the list of all sorted subsets of subforests in the forest. If the forest is given in pre-order, then The subsets are returned in reversed pre-order.TODO turn this into newtype vectors that enforce  size >= 1.!CGiven a forest, return the list of trees that constitue the forest.'  !"#$%&%  !"#$'  &!%"#$  !"#$%&,      !"#$%&'()*+,-/ForestStructures-0.0.0.2-1yfehA2XteX4zccCzmBDyOData.Forest.StaticQCTreegetTreeSrtunSrtForestlabelparentchildrenlsibrsibroots TreeOrderPrePost Unordered forestWith forestPre forestPost addIndices addIndicesF addIndicesF'parentChildrenF lrSiblingF lrSiblingleftMostLeaves leftMostLeafrightMostLeaves rightMostLeaf leftKeyRootssortedSubForests forestToTreestest1test2runtest$fArbitraryQCTree$fOrdSrt$fEqSrt $fShowSrt $fShowQCTree $fShowForestcontainers-0.5.7.1 Data.TreeTree