Definition:Groupoid (Abstract Algebra)