src/HOL/GroupTheory/Bij.thy
author nipkow
Mon, 13 May 2002 15:27:28 +0200
changeset 13145 59bc43b51aa2
parent 12459 6978ab7cac64
child 13583 5fcc8bf538ee
permissions -rw-r--r--
*** empty log message ***
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
11451
8abfb4f7bd02 partial restructuring to reduce dependence on Axiom of Choice
paulson
parents: 11448
diff changeset
     1
(*  Title:      HOL/GroupTheory/Bij
11448
aa519e0cc050 Final version of Florian Kammueller's examples
paulson
parents:
diff changeset
     2
    ID:         $Id$
aa519e0cc050 Final version of Florian Kammueller's examples
paulson
parents:
diff changeset
     3
    Author:     Florian Kammueller, with new proofs by L C Paulson
aa519e0cc050 Final version of Florian Kammueller's examples
paulson
parents:
diff changeset
     4
    Copyright   1998-2001  University of Cambridge
aa519e0cc050 Final version of Florian Kammueller's examples
paulson
parents:
diff changeset
     5
aa519e0cc050 Final version of Florian Kammueller's examples
paulson
parents:
diff changeset
     6
Bijections of a set and the group of bijections
aa519e0cc050 Final version of Florian Kammueller's examples
paulson
parents:
diff changeset
     7
	Sigma version with locales
aa519e0cc050 Final version of Florian Kammueller's examples
paulson
parents:
diff changeset
     8
*)
aa519e0cc050 Final version of Florian Kammueller's examples
paulson
parents:
diff changeset
     9
aa519e0cc050 Final version of Florian Kammueller's examples
paulson
parents:
diff changeset
    10
Bij = Group +
aa519e0cc050 Final version of Florian Kammueller's examples
paulson
parents:
diff changeset
    11
aa519e0cc050 Final version of Florian Kammueller's examples
paulson
parents:
diff changeset
    12
constdefs
aa519e0cc050 Final version of Florian Kammueller's examples
paulson
parents:
diff changeset
    13
  Bij :: "'a set => (('a => 'a)set)" 
aa519e0cc050 Final version of Florian Kammueller's examples
paulson
parents:
diff changeset
    14
    "Bij S == {f. f \\<in> S \\<rightarrow> S & f`S = S & inj_on f S}"
aa519e0cc050 Final version of Florian Kammueller's examples
paulson
parents:
diff changeset
    15
aa519e0cc050 Final version of Florian Kammueller's examples
paulson
parents:
diff changeset
    16
constdefs 
aa519e0cc050 Final version of Florian Kammueller's examples
paulson
parents:
diff changeset
    17
BijGroup ::  "'a set => (('a => 'a) grouptype)"
aa519e0cc050 Final version of Florian Kammueller's examples
paulson
parents:
diff changeset
    18
"BijGroup S == (| carrier = Bij S, 
12459
6978ab7cac64 bounded abstraction now uses syntax "%" / "\<lambda>" instead of "lam";
wenzelm
parents: 11451
diff changeset
    19
                  bin_op  = %g: Bij S. %f: Bij S. compose S g f,
6978ab7cac64 bounded abstraction now uses syntax "%" / "\<lambda>" instead of "lam";
wenzelm
parents: 11451
diff changeset
    20
                  inverse = %f: Bij S. %x: S. (Inv S f) x, 
6978ab7cac64 bounded abstraction now uses syntax "%" / "\<lambda>" instead of "lam";
wenzelm
parents: 11451
diff changeset
    21
                  unit    = %x: S. x |)"
11448
aa519e0cc050 Final version of Florian Kammueller's examples
paulson
parents:
diff changeset
    22
aa519e0cc050 Final version of Florian Kammueller's examples
paulson
parents:
diff changeset
    23
locale bij = 
aa519e0cc050 Final version of Florian Kammueller's examples
paulson
parents:
diff changeset
    24
  fixes 
aa519e0cc050 Final version of Florian Kammueller's examples
paulson
parents:
diff changeset
    25
    S :: "'a set"
aa519e0cc050 Final version of Florian Kammueller's examples
paulson
parents:
diff changeset
    26
    B :: "('a => 'a)set"
aa519e0cc050 Final version of Florian Kammueller's examples
paulson
parents:
diff changeset
    27
    comp :: "[('a => 'a),('a => 'a)]=>('a => 'a)" (infixr "o''" 80)
aa519e0cc050 Final version of Florian Kammueller's examples
paulson
parents:
diff changeset
    28
    inv'   :: "('a => 'a)=>('a => 'a)"              
aa519e0cc050 Final version of Florian Kammueller's examples
paulson
parents:
diff changeset
    29
    e'   :: "('a => 'a)"
aa519e0cc050 Final version of Florian Kammueller's examples
paulson
parents:
diff changeset
    30
  defines
aa519e0cc050 Final version of Florian Kammueller's examples
paulson
parents:
diff changeset
    31
    B_def    "B == Bij S"
aa519e0cc050 Final version of Florian Kammueller's examples
paulson
parents:
diff changeset
    32
    o'_def   "g o' f == compose S g f"
aa519e0cc050 Final version of Florian Kammueller's examples
paulson
parents:
diff changeset
    33
    inv'_def   "inv' f == Inv S f"
12459
6978ab7cac64 bounded abstraction now uses syntax "%" / "\<lambda>" instead of "lam";
wenzelm
parents: 11451
diff changeset
    34
    e'_def   "e'  == (%x: S. x)"
11448
aa519e0cc050 Final version of Florian Kammueller's examples
paulson
parents:
diff changeset
    35
aa519e0cc050 Final version of Florian Kammueller's examples
paulson
parents:
diff changeset
    36
locale bijgroup = bij +
aa519e0cc050 Final version of Florian Kammueller's examples
paulson
parents:
diff changeset
    37
  fixes 
aa519e0cc050 Final version of Florian Kammueller's examples
paulson
parents:
diff changeset
    38
    BG :: "('a => 'a) grouptype"
aa519e0cc050 Final version of Florian Kammueller's examples
paulson
parents:
diff changeset
    39
  defines
aa519e0cc050 Final version of Florian Kammueller's examples
paulson
parents:
diff changeset
    40
    BG_def "BG == BijGroup S"
aa519e0cc050 Final version of Florian Kammueller's examples
paulson
parents:
diff changeset
    41
end
aa519e0cc050 Final version of Florian Kammueller's examples
paulson
parents:
diff changeset
    42