fact: Definition oAC of associative op & commutative op := fun x => oapp (fun y => Some (oapp (op^~ y) y x)) x.
imports: HB(structures) mathcomp(ssreflect ssrbool ssrfun eqtype ssrnat seq path) mathcomp(div fintype tuple finfun)