anchor.diff:      | StepMove m -> "M", m.ToString()
     sprintf "<< %s %s" tp desc
   
  -let movesToState ((e, moves): ProgramMoves): ProgramState = 
  +let movesToState ((e, s, moves): ProgramMoves): ProgramState = 
     let rec rcr exp moves rootPos: int = 
       match moves with
       | [] -> rootPos
  
positive.code: // In essence similar to a zipper data structure
  type SubExpr<'p> = 
    Expr (* Root *) * 
    //Expr (* Sub Expression *) * 
    'p (* Position Representation *)
  type ProgramState = SubExpr<RulePosition>
  type ProgramMoves = SubExpr<Move list>
  
negative.code:             printfn "%s" (externalToString rulesIndexMap ext)
              newState
            )  
    let (finalProgRoot, _, _) = finalProg
    printfn "final exp: %s" (ccodegen.prettyprint finalProgRoot)
  
    best
  
  