sig val crossmut : 'a -> ('a -> 'b -> float Lazy.t) -> ('a -> 'b -> 'b -> 'b * 'b) -> ('a -> 'b -> 'b) -> 'b Ga_types.population -> 'b Ga_types.population -> int list -> Ga_types.gvars -> unit end