src/HOL/GroupTheory/Bij.thy
author paulson
Mon, 23 Jul 2001 17:47:49 +0200
changeset 11448 aa519e0cc050
child 11451 8abfb4f7bd02
permissions -rw-r--r--
Final version of Florian Kammueller's examples
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
11448
aa519e0cc050 Final version of Florian Kammueller's examples
paulson
parents:
diff changeset
     1
(*  Title:      HOL/GroupTheory/Coset
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, 
aa519e0cc050 Final version of Florian Kammueller's examples
paulson
parents:
diff changeset
    19
                  bin_op  = lam g: Bij S. lam f: Bij S. compose S g f,
aa519e0cc050 Final version of Florian Kammueller's examples
paulson
parents:
diff changeset
    20
                  inverse = lam f: Bij S. lam x: S. (Inv S f) x, 
aa519e0cc050 Final version of Florian Kammueller's examples
paulson
parents:
diff changeset
    21
                  unit    = lam x: S. x |)"
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"
aa519e0cc050 Final version of Florian Kammueller's examples
paulson
parents:
diff changeset
    34
    e'_def   "e'  == (lam x: S. x)"
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