A search method that evolves algebraic specifications and programs using hierarchical mutations guided by domain rules.