src/HOL/GroupTheory/Bij.thy
changeset 11448 aa519e0cc050
child 11451 8abfb4f7bd02
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/HOL/GroupTheory/Bij.thy	Mon Jul 23 17:47:49 2001 +0200
@@ -0,0 +1,42 @@
+(*  Title:      HOL/GroupTheory/Coset
+    ID:         $Id$
+    Author:     Florian Kammueller, with new proofs by L C Paulson
+    Copyright   1998-2001  University of Cambridge
+
+Bijections of a set and the group of bijections
+	Sigma version with locales
+*)
+
+Bij = Group +
+
+constdefs
+  Bij :: "'a set => (('a => 'a)set)" 
+    "Bij S == {f. f \\<in> S \\<rightarrow> S & f`S = S & inj_on f S}"
+
+constdefs 
+BijGroup ::  "'a set => (('a => 'a) grouptype)"
+"BijGroup S == (| carrier = Bij S, 
+                  bin_op  = lam g: Bij S. lam f: Bij S. compose S g f,
+                  inverse = lam f: Bij S. lam x: S. (Inv S f) x, 
+                  unit    = lam x: S. x |)"
+
+locale bij = 
+  fixes 
+    S :: "'a set"
+    B :: "('a => 'a)set"
+    comp :: "[('a => 'a),('a => 'a)]=>('a => 'a)" (infixr "o''" 80)
+    inv'   :: "('a => 'a)=>('a => 'a)"              
+    e'   :: "('a => 'a)"
+  defines
+    B_def    "B == Bij S"
+    o'_def   "g o' f == compose S g f"
+    inv'_def   "inv' f == Inv S f"
+    e'_def   "e'  == (lam x: S. x)"
+
+locale bijgroup = bij +
+  fixes 
+    BG :: "('a => 'a) grouptype"
+  defines
+    BG_def "BG == BijGroup S"
+end
+