week11 tweaks
[lambda.git] / week11.mdwn
index 56a064b..97416e2 100644 (file)
@@ -93,8 +93,6 @@ to represent a list zipper where the break is at position 3, and the element occ
 
 Now how could we translate a zipper-like structure over to trees? What we're aiming for is a way to keep track of where we are in a tree, in the same way that the "broken" lists let us keep track of where we are in the base list.
 
-We're understanding the `20` here in `node 20` to just be a metalanguage marker to help us theorists keep track of which node we're referring to. We're supposing the tree structure itself doesn't associate any informative labelling information with those nodes. It only associates informative labels with the tree leafs. (We haven't represented any such labels in our diagrams.)
-
 It's important to set some ground rules for what will follow. If you don't understand these ground rules you will get confused. First off, for many uses of trees one wants some of the nodes or leafs in the tree to be *labeled* with additional information. It's important not to conflate the label with the node itself. Numerically one and the same piece of information---for example, the same `int`---could label two nodes of the tree without those nodes thereby being identical, as here:
 
                root
@@ -113,7 +111,7 @@ The leftmost leaf and the rightmost leaf have the same label; but they are diffe
          /      \
         3        4
 
-Here I haven't drawn what the labels are. The leftmost leaf, the node tagged "3" in this diagram, doesn't have the label `3`. It has the label 1, as we said before. I just haven't put that into the diagram. The node tagged "2" doesn't have the label `2`. It doesn't have any label. The tree in this example only has labels on its leafs, not on any of its inner nodes.
+Here I haven't drawn what the labels are. The leftmost leaf, the node tagged "3" in this diagram, doesn't have the label `3`. It has the label 1, as we said before. I just haven't put that into the diagram. The node tagged "2" doesn't have the label `2`. It doesn't have any label. The tree in this example only has information labeling its leafs, not any of its inner nodes. The identity of its inner nodes is exhausted by their position in the tree.
 
 That is a second thing to note. In what follows, we'll only be working with *leaf-labeled* trees. In some uses of trees, one also wants labels on inner nodes. But we won't be discussing any such trees now. Our trees only have labels on their leafs. The diagrams below will tag all of the nodes, as in the second diagram above, and won't display what the leafs' labels are.
 
@@ -150,7 +148,7 @@ Similarly for `subtree 50` and `subtree 80`. We haven't said yet what goes in th
 
 And the parent of that targetted subtree should intuitively be a tree targetted on `node 9200`:
 
-       {parent = None; siblings = [*]}, * filled by subtree 9200
+       {parent = None; siblings = [*]}, * filled by tree 9200
 
 This tree has no parents because it's the root of the base tree. Fully spelled out, then, our tree targetted on `node 50` would be:
 
@@ -159,13 +157,13 @@ This tree has no parents because it's the root of the base tree. Fully spelled o
              parent = {
                 parent = None;
                 siblings = [*]
-             }, * filled by subtree 9200;
+             }, * filled by tree 9200;
              siblings = [*; subtree 920; subtree 950]
           }, * filled by subtree 500;
           siblings = [subtree 20; *; subtree 80]
        }, * filled by subtree 50
 
-In fact, there's some redundancy in this structure, at the points where we have `* filled by subtree 9200` and `* filled by subtree 500`. Since node 9200 doesn't have any label attached to it, the subtree rooted in it is determined by the rest of this structure; and so too with `subtree 500`. So we could really work with:
+In fact, there's some redundancy in this structure, at the points where we have `* filled by tree 9200` and `* filled by subtree 500`. Since node 9200 doesn't have any label attached to it, the subtree rooted in it is determined by the rest of this structure; and so too with `subtree 500`. So we could really work with:
 
        {
           parent = {
@@ -242,7 +240,7 @@ where `subtree 500'` refers to a tree built from a root node whose children are
        {
           parent = None;
           siblings = [*]
-       }, * filled by subtree 9200'
+       }, * filled by tree 9200'
 
 where the targetted element is the root of our base tree. Like the "moving backward" operation for the list zipper, this "moving upward" operation is supposed to be reminiscent of closing a zipper, and that's why these data structures are called zippers.