let register_rule r = try ignore(Hashtbl.find rules r.rule_name); failwith (Printf.sprintf "Rule %s already registered." r.rule_name) with Not_found -> Hashtbl.add rules r.rule_name r