(* Title: HOL/AxClasses/Semigroups.thy ID: $Id: Semigroups.thy,v 1.5 2005/06/17 14:13:06 haftmann Exp $ Author: Markus Wenzel, TU Muenchen *) theory Semigroups imports Main begin consts times :: "'a => 'a => 'a" (infixl "[*]" 70) axclass semigroup < type assoc: "(x [*] y) [*] z = x [*] (y [*] z)" consts plus :: "'a => 'a => 'a" (infixl "[+]" 70) axclass plus_semigroup < type assoc: "(x [+] y) [+] z = x [+] (y [+] z)" end