pub trait Unify {
// Required methods
fn end(&mut self, mode: Mode) -> KResult;
fn term(&mut self, idx: u32, save: bool) -> KResult;
fn reference(&mut self, idx: u32) -> KResult;
fn dummy(&mut self, sort: u32) -> KResult;
fn hyp_thm(&mut self) -> KResult;
fn hyp_thm_end(&mut self) -> KResult;
// Provided method
fn execute(&mut self, command: Command<Unify>, mode: Mode) -> KResult<bool> { ... }
}