anchor.diff:                  |> Set.union lookaheadTokens))
           |> Choice1Of2
   
  -    //
  +    /// Creates an LALR(1) parser table from a grammar and it's LR(0) parser table.
       let ofLr0Table (grammar : AugmentedGrammar<'Nonterminal, 'Terminal>, lr0ParserTable : Lr0ParserTable<'Nonterminal, 'Terminal>)
           : Choice<Lr0ParserTable<'Nonterminal, 'Terminal>, string> =
           // Compute the lookahead sets.
  
positive.code:                 ||> Set.fold (fun (F, N, stack) y ->
                      let F, N, stack =
                          match Map.find y N with
                          | Untraversed ->
                              traverse (y, N, stack, F, X, R, F')
                          | _ ->
                              F, N, stack
  
negative.code:         // nullable nonterminals appropriately.
          let lookback, (includes : VertexLabeledSparseDigraph<NonterminalTransition<_>>) =
              lookbackAndIncludes (grammar, lr0ParserTable, nonterminalTransitions, nullable)
  
          // F. Compute the transitive closure of the 'includes' relation (via the SCC algorithm)
          // to compute 'Follow'. Use the same sets as initialized in part B and completed in part D,
          // both as initial values and as workspace. If a cycle is detected in which a Read set
          // is non-empty, announce that the grammar is not LR(k) for any 'k'.
          let Follow =
              // TEMP : Adapt the 'includes' graph for use with 'digraph'.
              // TODO : Modify the 'includesAndLookback' function to compute relation maps instead of relation graphs.
              let includes =
                  (Map.empty, includes.Edges)
                  ||> Set.fold (fun includes (source, target) ->
                      let targetIncludes =
                          match Map.tryFind target includes with
                          | None ->
                              Set.singleton source
                          | Some targetIncludes ->
                              Set.add source targetIncludes
  
                      Map.add target targetIncludes includes)
  
              // TODO : Fix this so it returns an error if the grammar is not LR(k).
              digraph (nonterminalTransitions, includes, Read)
  
          // TEMP : Create a map from the edges of the lookback graph
          // so it's easier to compute the LA sets.
  