diff -r ee3d40b5ac23 -r e88c2c89f98e src/HOL/GroupTheory/Coset.thy --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/HOL/GroupTheory/Coset.thy Tue Jul 03 15:28:24 2001 +0200 @@ -0,0 +1,58 @@ +(* Title: HOL/GroupTheory/Coset + ID: $Id$ + Author: Florian Kammueller, with new proofs by L C Paulson + Copyright 1998-2001 University of Cambridge + +Theory of cosets, using locales +*) + +Coset = Group + Exponent + + +constdefs + r_coset :: "['a grouptype,'a set, 'a] => 'a set" + "r_coset G H a == (% x. (bin_op G) x a) ` H" + + l_coset :: "['a grouptype, 'a, 'a set] => 'a set" + "l_coset G a H == (% x. (bin_op G) a x) ` H" + + set_r_cos :: "['a grouptype,'a set] => ('a set)set" + "set_r_cos G H == r_coset G H ` (carrier G)" + + set_prod :: "['a grouptype,'a set,'a set] => 'a set" + "set_prod G H1 H2 == (%x. (bin_op G) (fst x)(snd x)) ` (H1 \\ H2)" + set_inv :: "['a grouptype,'a set] => 'a set" + "set_inv G H == (%x. (inverse G) x) ` H" + + normal :: "('a grouptype * 'a set)set" + "normal == \\G \\ Group. {H. H <<= G & + (\\x \\ carrier G. r_coset G H x = l_coset G x H)}" + + +syntax + "@NS" :: "['a set, 'a grouptype] => bool" ("_ <| _" [60,61]60) + +syntax (xsymbols) + "@NS" :: "['a set, 'a grouptype] => bool" ("_ \\ _" [60,61]60) + +translations + "N <| G" == "(G,N) \\ normal" + +locale coset = group + + fixes + rcos :: "['a set, 'a] => 'a set" ("_ #> _" [60,61]60) + lcos :: "['a, 'a set] => 'a set" ("_ <# _" [60,61]60) + setprod :: "['a set, 'a set] => 'a set" ("_ <#> _" [60,61]60) + setinv :: "'a set => 'a set" ("I (_)" [90]91) + setrcos :: "'a set => 'a set set" ("{*_*}" [90]91) + assumes + + defines + rcos_def "H #> x == r_coset G H x" + lcos_def "x <# H == l_coset G x H" + setprod_def "H1 <#> H2 == set_prod G H1 H2" + setinv_def "I(H) == set_inv G H" + setrcos_def "{*H*} == set_r_cos G H" + +end + +