1247
|
1 |
(* Title: HOL/AxClasses/Tutorial/ProdGroupInsts.thy
|
|
2 |
ID: $Id$
|
|
3 |
Author: Markus Wenzel, TU Muenchen
|
|
4 |
|
|
5 |
Lift constant "<*>" to cartesian products, then prove that the
|
|
6 |
'functor' "*" maps semigroups into semigroups.
|
|
7 |
*)
|
|
8 |
|
|
9 |
ProdGroupInsts = Prod + Group +
|
|
10 |
|
|
11 |
(* direct products of semigroups *)
|
|
12 |
|
|
13 |
defs
|
|
14 |
prod_prod_def "p <*> q == (fst p <*> fst q, snd p <*> snd q)"
|
|
15 |
|
|
16 |
instance
|
|
17 |
"*" :: (semigroup, semigroup) semigroup
|
4091
|
18 |
{| SIMPSET' (fn ss => simp_tac (ss addsimps [assoc])) 1 |}
|
1247
|
19 |
|
|
20 |
end
|