Prev Up Next
Go backward to 2.2 Library Orders
Go up to 2 Specifications
Go forward to 2.4 Library Numbers

2.3 Library Algebra_I

library Basic/Algebra_I 
version 0.3
%% authors: M.Roggenbach, T.Mossakowski
%% date: 1.11.99

spec
SemiGroup =
sort
Elem
op
__ + __: Elem ×Elem -> Elem,
assoc
end
spec
Monoid =
SemiGroup with sort Elem, op __ + __
then
op
0:Elem;
__ + __: Elem ×Elem -> Elem,
unit 0
end
spec
CommutativeMonoid =
Monoid with sort Elem, op 0, __ + __
then
op
__ + __: Elem ×Elem -> Elem,
comm
end
spec
DefineGroup =
Monoid with sort Elem, op 0, __ + __
then
var
x:Elem
.
%[Group_ExInverse_Def]
exists x': Elem . x + x' = 0 /\ x' + x = 0
end
spec
Group  [DefineGroup with sort Elem, op 0, __ + __ ] =
%def
ops
inv: Elem -> Elem;
__ - __: Elem ×Elem -> Elem;
vars
x,y: Elem
.
%[Group_inverse1] x + inv(x) = 0
.
%[Group_inverse2] inv(x) + x = 0
.
%[Group_minus_def] x - y = x + inv(y)
end
spec
DefineCommutativeGroup =
DefineGroup with sort Elem, op 0, __ + __
then
op
__ + __: Elem ×Elem -> Elem,
comm
end
spec
CommutativeGroup 
[DefineCommutativeGroup with sort Elem, op 0, __ + __ ] =
%def
Group [DefineGroup] with ops inv, __ - __
end

CoFI Note: L-12 -- Version: 0.3 -- November 1999.
Comments to cofi@informatik.uni-bremen.de

Prev Up Next