src/HOL/AxClasses/Tutorial/Semigroups.thy
author clasohm
Tue, 12 Mar 1996 14:39:34 +0100
changeset 1573 6d66b59f94a9
parent 1247 18b1441fb603
child 8920 af5e09b6c208
permissions -rw-r--r--
added constdefs section
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/Semigroups.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
Semigroups with different 'signatures'.
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
Semigroups = HOL +
18b1441fb603 Various axiomatic type class demos;
wenzelm
parents:
diff changeset
     9
18b1441fb603 Various axiomatic type class demos;
wenzelm
parents:
diff changeset
    10
consts
18b1441fb603 Various axiomatic type class demos;
wenzelm
parents:
diff changeset
    11
  "<+>"         :: "['a, 'a] => 'a"             (infixl 65)
18b1441fb603 Various axiomatic type class demos;
wenzelm
parents:
diff changeset
    12
  "<*>"         :: "['a, 'a] => 'a"             (infixl 70)
1573
6d66b59f94a9 added constdefs section
clasohm
parents: 1247
diff changeset
    13
6d66b59f94a9 added constdefs section
clasohm
parents: 1247
diff changeset
    14
constdefs
1247
18b1441fb603 Various axiomatic type class demos;
wenzelm
parents:
diff changeset
    15
  assoc         :: "(['a, 'a] => 'a) => bool"
1573
6d66b59f94a9 added constdefs section
clasohm
parents: 1247
diff changeset
    16
  "assoc f == ALL x y z. f (f x y) z = f x (f y z)"
1247
18b1441fb603 Various axiomatic type class demos;
wenzelm
parents:
diff changeset
    17
18b1441fb603 Various axiomatic type class demos;
wenzelm
parents:
diff changeset
    18
18b1441fb603 Various axiomatic type class demos;
wenzelm
parents:
diff changeset
    19
(* semigroups with op <+> *)
18b1441fb603 Various axiomatic type class demos;
wenzelm
parents:
diff changeset
    20
18b1441fb603 Various axiomatic type class demos;
wenzelm
parents:
diff changeset
    21
axclass
18b1441fb603 Various axiomatic type class demos;
wenzelm
parents:
diff changeset
    22
  plus_sg < term
18b1441fb603 Various axiomatic type class demos;
wenzelm
parents:
diff changeset
    23
  plus_assoc    "assoc (op <+>)"
18b1441fb603 Various axiomatic type class demos;
wenzelm
parents:
diff changeset
    24
18b1441fb603 Various axiomatic type class demos;
wenzelm
parents:
diff changeset
    25
18b1441fb603 Various axiomatic type class demos;
wenzelm
parents:
diff changeset
    26
(* semigroups with op <*> *)
18b1441fb603 Various axiomatic type class demos;
wenzelm
parents:
diff changeset
    27
18b1441fb603 Various axiomatic type class demos;
wenzelm
parents:
diff changeset
    28
axclass
18b1441fb603 Various axiomatic type class demos;
wenzelm
parents:
diff changeset
    29
  times_sg < term
18b1441fb603 Various axiomatic type class demos;
wenzelm
parents:
diff changeset
    30
  times_assoc   "assoc (op <*>)"
18b1441fb603 Various axiomatic type class demos;
wenzelm
parents:
diff changeset
    31
18b1441fb603 Various axiomatic type class demos;
wenzelm
parents:
diff changeset
    32
end