fact: Definition PofSplit {o}: Arguments o → Type := match o with | ne_list.one _ => λ _, unit | ne_list.cons x y => λ a, prod (P (head_arg x y a)) (forallArgs (tail_args _ _ a)) end.
imports: MathClasses.interfaces.canonical_names MathClasses.interfaces.universal_algebra Coq.Program.Program