let backtrack_literal_info (state: state) : unit =
  let invalid_keys =
    LiteralTable.fold
      (fun _ literal_info acc ->
         if is_choice_point_invalid literal_info.li_choice_point then
           literal_info.li_literal :: acc

         else
           acc
      )
      state.st_literal_info
      []
  in
    List.iter
      (LiteralTable.remove state.st_literal_info)
      invalid_keys