diff -r ee3d40b5ac23 -r e88c2c89f98e src/HOL/GroupTheory/DirProd.thy --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/HOL/GroupTheory/DirProd.thy Tue Jul 03 15:28:24 2001 +0200 @@ -0,0 +1,47 @@ +(* Title: HOL/GroupTheory/DirProd + ID: $Id$ + Author: Florian Kammueller, with new proofs by L C Paulson + Copyright 1998-2001 University of Cambridge + +Direct product of two groups +*) + +DirProd = Coset + + +consts + ProdGroup :: "(['a grouptype, 'b grouptype] => ('a * 'b) grouptype)" + +defs + ProdGroup_def "ProdGroup == lam G: Group. lam G': Group. + (| carrier = ((G.) \\ (G'.)), + bin_op = (lam (x, x'): ((G.) \\ (G'.)). + lam (y, y'): ((G.) \\ (G'.)). + ((G.) x y,(G'.) x' y')), + inverse = (lam (x, y): ((G.) \\ (G'.)). ((G.) x, (G'.) y)), + unit = ((G.),(G'.)) |)" + +syntax + "@Pro" :: "['a grouptype, 'b grouptype] => ('a * 'b) grouptype" ("<|_,_|>" [60,61]60) + +translations + "<| G , G' |>" == "ProdGroup G G'" + +locale r_group = group + + fixes + G' :: "'b grouptype" + e' :: "'b" + binop' :: "'b => 'b => 'b" ("(_ ##' _)" [80,81]80 ) + INV' :: "'b => 'b" ("i' (_)" [90]91) + assumes + Group_G' "G' : Group" + defines + e'_def "e' == unit G'" + binop'_def "x ##' y == bin_op G' x y" + inv'_def "i'(x) == inverse G' x" + +locale prodgroup = r_group + + fixes + P :: "('a * 'b) grouptype" + defines + P_def "P == <| G, G' |>" +end