anchor.diff:               new-tree
                (build-next-generation width height next-y last-gen new-tree))))
   
  +; Proof Pad doesn't like this because Proof Pad is buggy and doesn't like complex strings, but it works fine when compiled
   (defun avl-tree->output-line (width curx y next-gen)
      (if (< curx width)
          (string-append (if (avl-retrieve next-gen (get-avl-key curx y width)) "<td class=\"live\">&nbsp;</td>" "<td>&nbsp;</td>")
  
positive.code: (defun stdin->avl-tree (state)
     (mv-let (input-lines state)
             (stdin->lines state)
        (let* (#|(height (len input-lines))|#
               (width (length (car input-lines))))
              (mv (input-lines->avl-tree 0 0 width (strings->char-lists input-lines) (empty-tree)) state))))
              ;(mv (input-lines->avl-tree 0 0 width (strings->char-lists input-lines) (empty-tree)) width height state))))
  
  
  
negative.code: |#
  
  (defun main (state)
     (mv-let (things state)
             (stdin->avl-tree state)
        (let ((avl-tree (car things))
              (width (cadr things))
              (height (caddr things)))
             (string-list->stdout (avl-tree->output-lines width height 0 (build-next-generation width height 0 avl-tree
  		                                                           (empty-tree))) state))))