static L<T3S> dm_gazelle_allRulesWithPurpose(S purpose) {
  if (empty(purpose) || eq(purpose, 'default))
    ret filter(gazelle_allRuleTriples(), t -> empty(gazelle_purposeFromComments(t.b)));
  else
    ret dm_gazelle_allRulesWithComment("purpose: " + purpose);
}