fact: Fixpoint foldr {R} (o: T → R) (f: T → R → R) (a: L): R := match a with | one x => o x | cons x y => f x (foldr o f y) end.
imports: Coq.Unicode.Utf8 Coq.Lists.List Coq.Setoids.Setoid Coq.Classes.Morphisms Coq.Sorting.Permutation