There is, on rare occasions, a use for parametric rules to simplify code. While implementing fully type-checked parametric rules would be a big project with very little payoff, simple parametric rules would probably serve most applications.
Example:
rule applyRuleToEachStatementMentioning VarId [id] RuleId [id]
replace $ [statement]
Statement [statement]
% A simple example constraint - in practice contraints could be as complex as we want
skipping [statement]
deconstruct * [id] S
VarId
by
Statement [RuleId]
end rule
There is, on rare occasions, a use for parametric rules to simplify code. While implementing fully type-checked parametric rules would be a big project with very little payoff, simple parametric rules would probably serve most applications.
Example: