src/HOL/ex/Group.thy
author paulson
Thu, 08 Jul 1999 13:48:11 +0200
changeset 6921 78a2ce8fb8df
parent 5078 7b5ea59c0275
child 8936 a1c426541757
permissions -rw-r--r--
Renaming of theorems from _nat0 to _int0 and _nat1 to _int1

(*  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 *)
(*
The inverse is the binary `-'. Groups with unary and binary inverse are
interdefinable: x-y := x+(zero-y) and -x := zero-x. The law left_inv is
simply the translation of (-x)+x = zero. This characterizes groups already,
provided we only allow (zero-x). Law minus_inv `defines' the general x-y in
terms of the specific zero-y.
*)
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