Tree Specification

We saw 3 styles of specifications for Lists: Trees generalize lists. A list is a degenerate tree.

Our specification: notion of subtree.

We discussed the issue of JOINing lists. The same problems arise with trees and the same solutions apply.

Here, we choose to changes the type of a tree to subtree when necessary and restrict some operations to only work on trees.