Generates a random lib::dag.
func
This function participates in overload resolution only if the following conditions hold:
lib::is_invocable<F, lib::atom>()
std::tuple_size<lib::invoke_result_t<F, lib::atom>>() == 2
lib::is_range<lib::tuple_element_t<0, lib::invoke_result_t<F, lib::atom>>>()
lib::is_hashable<lib::range_value_t<lib::tuple_element_t<0, lib::invoke_result_t<F, lib::atom>>>>()
lib::is_equality_comparable<lib::range_value_t<lib::tuple_element_t<0, lib::invoke_result_t<F, lib::atom>>>>()