+/* A function that selects a rule. */
+typedef bool (*rule_filter_t) (rule_t *r);
+
+/* Return true IFF the rule has a `number' smaller than NRULES. */
+bool rule_useful_p (rule_t *r);
+
+/* Return true IFF the rule has a `number' higher than NRULES. */
+bool rule_useless_p (rule_t *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_t *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_t *rule, symbol_t *previous_lhs, FILE *out);
+
+/* Return the length of the RHS. */
+int rule_rhs_length (rule_t *rule);
+
+/* Print this RULE's RHS on OUT. */
+void rule_rhs_print (rule_t *rule, FILE *out);
+
+/* Print this RULE on OUT. */
+void rule_print (rule_t *rule, FILE *out);
+
+
+
+