pub trait Ruleset<Q, A>: RawRuleset<Q, A>{
// Required methods
fn find_tail(&self, state: State<&Q>, sym: &A) -> Option<&Tail<Q, A>>;
fn get(&self, head: &Head<Q, A>) -> Option<&Tail<Q, A>>;
// Provided method
fn find_head(&self, _: Head<&Q, &A>) -> Option<&Tail<Q, A>> { ... }
}