hypergroup hyperstructure semihypergroup subhypergroup groupoid pseudogroup overgroup gyrogroup hypercomplex rackoid