-/* Table of the symbols, indexed by the symbol number. */
-extern struct bucket **symbols;
+/* Return true IFF the rule has a `number' smaller than NRULES. */
+bool rule_useful_p (rule *r);
+
+/* Return true IFF the rule has a `number' higher than NRULES. */
+bool rule_useless_p (rule *r);
+
+/* Return true IFF the rule is not flagged as useful *and* is useful.
+ In other words, it was discarded because of conflicts. */
+bool rule_never_reduced_p (rule *r);
+
+/* Print this rule's number and lhs on OUT. If a PREVIOUS_LHS was
+ already displayed (by a previous call for another rule), avoid
+ useless repetitions. */
+void rule_lhs_print (rule *r, symbol *previous_lhs, FILE *out);
+
+/* Return the length of the RHS. */
+int rule_rhs_length (rule *r);