src/HOL/AxClasses/Tutorial/Group.thy
author wenzelm
Fri, 01 Sep 1995 14:27:36 +0200
changeset 1247 18b1441fb603
child 2907 0e272e4c7cb2
permissions -rw-r--r--
Various axiomatic type class demos;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1247
18b1441fb603 Various axiomatic type class demos;
wenzelm
parents:
diff changeset
     1
(*  Title:      HOL/AxClasses/Tutorial/Group.thy
18b1441fb603 Various axiomatic type class demos;
wenzelm
parents:
diff changeset
     2
    ID:         $Id$
18b1441fb603 Various axiomatic type class demos;
wenzelm
parents:
diff changeset
     3
    Author:     Markus Wenzel, TU Muenchen
18b1441fb603 Various axiomatic type class demos;
wenzelm
parents:
diff changeset
     4
18b1441fb603 Various axiomatic type class demos;
wenzelm
parents:
diff changeset
     5
Define classes "semigroup", "group", "agroup".
18b1441fb603 Various axiomatic type class demos;
wenzelm
parents:
diff changeset
     6
*)
18b1441fb603 Various axiomatic type class demos;
wenzelm
parents:
diff changeset
     7
18b1441fb603 Various axiomatic type class demos;
wenzelm
parents:
diff changeset
     8
Group = Sigs +
18b1441fb603 Various axiomatic type class demos;
wenzelm
parents:
diff changeset
     9
18b1441fb603 Various axiomatic type class demos;
wenzelm
parents:
diff changeset
    10
(* semigroups *)
18b1441fb603 Various axiomatic type class demos;
wenzelm
parents:
diff changeset
    11
18b1441fb603 Various axiomatic type class demos;
wenzelm
parents:
diff changeset
    12
axclass
18b1441fb603 Various axiomatic type class demos;
wenzelm
parents:
diff changeset
    13
  semigroup < term
18b1441fb603 Various axiomatic type class demos;
wenzelm
parents:
diff changeset
    14
  assoc         "(x <*> y) <*> z = x <*> (y <*> z)"
18b1441fb603 Various axiomatic type class demos;
wenzelm
parents:
diff changeset
    15
18b1441fb603 Various axiomatic type class demos;
wenzelm
parents:
diff changeset
    16
18b1441fb603 Various axiomatic type class demos;
wenzelm
parents:
diff changeset
    17
(* groups *)
18b1441fb603 Various axiomatic type class demos;
wenzelm
parents:
diff changeset
    18
18b1441fb603 Various axiomatic type class demos;
wenzelm
parents:
diff changeset
    19
axclass
18b1441fb603 Various axiomatic type class demos;
wenzelm
parents:
diff changeset
    20
  group < semigroup
18b1441fb603 Various axiomatic type class demos;
wenzelm
parents:
diff changeset
    21
  left_unit     "1 <*> x = x"
18b1441fb603 Various axiomatic type class demos;
wenzelm
parents:
diff changeset
    22
  left_inv      "inv x <*> x = 1"
18b1441fb603 Various axiomatic type class demos;
wenzelm
parents:
diff changeset
    23
18b1441fb603 Various axiomatic type class demos;
wenzelm
parents:
diff changeset
    24
18b1441fb603 Various axiomatic type class demos;
wenzelm
parents:
diff changeset
    25
(* abelian groups *)
18b1441fb603 Various axiomatic type class demos;
wenzelm
parents:
diff changeset
    26
18b1441fb603 Various axiomatic type class demos;
wenzelm
parents:
diff changeset
    27
axclass
18b1441fb603 Various axiomatic type class demos;
wenzelm
parents:
diff changeset
    28
  agroup < group
18b1441fb603 Various axiomatic type class demos;
wenzelm
parents:
diff changeset
    29
  commut        "x <*> y = y <*> x"
18b1441fb603 Various axiomatic type class demos;
wenzelm
parents:
diff changeset
    30
18b1441fb603 Various axiomatic type class demos;
wenzelm
parents:
diff changeset
    31
end