let with_requirements : t -> Requirement.t list -> t = fun f l -> fun ?name ?(requirements = []) prog -> f ?name ~requirements:(l @ requirements) prog