src/HOL/GroupTheory/Coset.thy
author nipkow
Mon, 13 May 2002 15:27:28 +0200
changeset 13145 59bc43b51aa2
parent 11394 e88c2c89f98e
child 13583 5fcc8bf538ee
permissions -rw-r--r--
*** empty log message ***
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
11394
e88c2c89f98e Locale-based group theory proofs
paulson
parents:
diff changeset
     1
(*  Title:      HOL/GroupTheory/Coset
e88c2c89f98e Locale-based group theory proofs
paulson
parents:
diff changeset
     2
    ID:         $Id$
e88c2c89f98e Locale-based group theory proofs
paulson
parents:
diff changeset
     3
    Author:     Florian Kammueller, with new proofs by L C Paulson
e88c2c89f98e Locale-based group theory proofs
paulson
parents:
diff changeset
     4
    Copyright   1998-2001  University of Cambridge
e88c2c89f98e Locale-based group theory proofs
paulson
parents:
diff changeset
     5
e88c2c89f98e Locale-based group theory proofs
paulson
parents:
diff changeset
     6
Theory of cosets, using locales
e88c2c89f98e Locale-based group theory proofs
paulson
parents:
diff changeset
     7
*)
e88c2c89f98e Locale-based group theory proofs
paulson
parents:
diff changeset
     8
e88c2c89f98e Locale-based group theory proofs
paulson
parents:
diff changeset
     9
Coset =  Group + Exponent +
e88c2c89f98e Locale-based group theory proofs
paulson
parents:
diff changeset
    10
e88c2c89f98e Locale-based group theory proofs
paulson
parents:
diff changeset
    11
constdefs
e88c2c89f98e Locale-based group theory proofs
paulson
parents:
diff changeset
    12
  r_coset    :: "['a grouptype,'a set, 'a] => 'a set"    
e88c2c89f98e Locale-based group theory proofs
paulson
parents:
diff changeset
    13
   "r_coset G H a == (% x. (bin_op G) x a) ` H"
e88c2c89f98e Locale-based group theory proofs
paulson
parents:
diff changeset
    14
e88c2c89f98e Locale-based group theory proofs
paulson
parents:
diff changeset
    15
  l_coset    :: "['a grouptype, 'a, 'a set] => 'a set"
e88c2c89f98e Locale-based group theory proofs
paulson
parents:
diff changeset
    16
   "l_coset G a H == (% x. (bin_op G) a x) ` H"
e88c2c89f98e Locale-based group theory proofs
paulson
parents:
diff changeset
    17
e88c2c89f98e Locale-based group theory proofs
paulson
parents:
diff changeset
    18
  set_r_cos  :: "['a grouptype,'a set] => ('a set)set"
e88c2c89f98e Locale-based group theory proofs
paulson
parents:
diff changeset
    19
   "set_r_cos G H == r_coset G H ` (carrier G)"
e88c2c89f98e Locale-based group theory proofs
paulson
parents:
diff changeset
    20
e88c2c89f98e Locale-based group theory proofs
paulson
parents:
diff changeset
    21
  set_prod  :: "['a grouptype,'a set,'a set] => 'a set"
e88c2c89f98e Locale-based group theory proofs
paulson
parents:
diff changeset
    22
   "set_prod G H1 H2 == (%x. (bin_op G) (fst x)(snd x)) ` (H1 \\<times> H2)"
e88c2c89f98e Locale-based group theory proofs
paulson
parents:
diff changeset
    23
  set_inv   :: "['a grouptype,'a set] => 'a set"
e88c2c89f98e Locale-based group theory proofs
paulson
parents:
diff changeset
    24
   "set_inv G H == (%x. (inverse G) x) ` H"
e88c2c89f98e Locale-based group theory proofs
paulson
parents:
diff changeset
    25
e88c2c89f98e Locale-based group theory proofs
paulson
parents:
diff changeset
    26
  normal     :: "('a grouptype * 'a set)set"     
e88c2c89f98e Locale-based group theory proofs
paulson
parents:
diff changeset
    27
   "normal == \\<Sigma>G \\<in> Group. {H. H <<= G & 
e88c2c89f98e Locale-based group theory proofs
paulson
parents:
diff changeset
    28
                            (\\<forall>x \\<in> carrier G. r_coset G H x = l_coset G x H)}"
e88c2c89f98e Locale-based group theory proofs
paulson
parents:
diff changeset
    29
e88c2c89f98e Locale-based group theory proofs
paulson
parents:
diff changeset
    30
e88c2c89f98e Locale-based group theory proofs
paulson
parents:
diff changeset
    31
syntax
e88c2c89f98e Locale-based group theory proofs
paulson
parents:
diff changeset
    32
  "@NS"  :: "['a set, 'a grouptype] => bool" ("_ <| _"   [60,61]60)
e88c2c89f98e Locale-based group theory proofs
paulson
parents:
diff changeset
    33
e88c2c89f98e Locale-based group theory proofs
paulson
parents:
diff changeset
    34
syntax (xsymbols)
e88c2c89f98e Locale-based group theory proofs
paulson
parents:
diff changeset
    35
  "@NS"  :: "['a set, 'a grouptype] => bool" ("_ \\<lhd> _"   [60,61]60)
e88c2c89f98e Locale-based group theory proofs
paulson
parents:
diff changeset
    36
e88c2c89f98e Locale-based group theory proofs
paulson
parents:
diff changeset
    37
translations
e88c2c89f98e Locale-based group theory proofs
paulson
parents:
diff changeset
    38
  "N <| G" == "(G,N) \\<in> normal"
e88c2c89f98e Locale-based group theory proofs
paulson
parents:
diff changeset
    39
e88c2c89f98e Locale-based group theory proofs
paulson
parents:
diff changeset
    40
locale coset = group +
e88c2c89f98e Locale-based group theory proofs
paulson
parents:
diff changeset
    41
  fixes 
e88c2c89f98e Locale-based group theory proofs
paulson
parents:
diff changeset
    42
    rcos      :: "['a set, 'a] => 'a set"   ("_ #> _" [60,61]60)
e88c2c89f98e Locale-based group theory proofs
paulson
parents:
diff changeset
    43
    lcos      :: "['a, 'a set] => 'a set"   ("_ <# _" [60,61]60)
e88c2c89f98e Locale-based group theory proofs
paulson
parents:
diff changeset
    44
    setprod   :: "['a set, 'a set] => 'a set"         ("_ <#> _" [60,61]60)
e88c2c89f98e Locale-based group theory proofs
paulson
parents:
diff changeset
    45
    setinv    :: "'a set => 'a set"                   ("I (_)"      [90]91)
e88c2c89f98e Locale-based group theory proofs
paulson
parents:
diff changeset
    46
    setrcos   :: "'a set => 'a set set"               ("{*_*}"  [90]91)
e88c2c89f98e Locale-based group theory proofs
paulson
parents:
diff changeset
    47
  assumes
e88c2c89f98e Locale-based group theory proofs
paulson
parents:
diff changeset
    48
e88c2c89f98e Locale-based group theory proofs
paulson
parents:
diff changeset
    49
  defines
e88c2c89f98e Locale-based group theory proofs
paulson
parents:
diff changeset
    50
    rcos_def "H #> x == r_coset G H x"
e88c2c89f98e Locale-based group theory proofs
paulson
parents:
diff changeset
    51
    lcos_def "x <# H == l_coset G x H"
e88c2c89f98e Locale-based group theory proofs
paulson
parents:
diff changeset
    52
    setprod_def "H1 <#> H2 == set_prod G H1 H2"
e88c2c89f98e Locale-based group theory proofs
paulson
parents:
diff changeset
    53
    setinv_def  "I(H)  == set_inv G H"
e88c2c89f98e Locale-based group theory proofs
paulson
parents:
diff changeset
    54
    setrcos_def "{*H*} == set_r_cos G H"
e88c2c89f98e Locale-based group theory proofs
paulson
parents:
diff changeset
    55
e88c2c89f98e Locale-based group theory proofs
paulson
parents:
diff changeset
    56
end
e88c2c89f98e Locale-based group theory proofs
paulson
parents:
diff changeset
    57
e88c2c89f98e Locale-based group theory proofs
paulson
parents:
diff changeset
    58