src/HOL/Integ/Group.thy
author nipkow
Fri, 29 Nov 1996 15:11:37 +0100
changeset 2281 e00c13a29eda
child 4230 eb5586526bc9
permissions -rw-r--r--
Ring Theory.

(*  Title:      HOL/Integ/Group.thy
    ID:         $Id$
    Author:     Tobias Nipkow
    Copyright   1996 TU Muenchen

A little bit of group theory leading up to rings. Hence groups are additive.
*)

Group = Set +

(* 0 already used in Nat *)
axclass  zero < term
consts   zero :: "'a::zero"

(* additive semigroups *)

axclass  add_semigroup < plus
  plus_assoc   "(x + y) + z = x + (y + z)"


(* additive monoids *)

axclass  add_monoid < add_semigroup, zero
  zeroL    "zero + x = x"
  zeroR    "x + zero = x"

(* additive groups *)

axclass  add_group < add_monoid, minus
  left_inv  "(zero-x)+x = zero"
  minus_inv "x-y = x + (zero-y)"

(* additive abelian groups *)

axclass  add_agroup < add_group
  plus_commute  "x + y = y + x"

end