The symmetric group of order n!
>
Sn:=proc(n) local grp,i;
grp(set):=permute(n);
grp(ident):=[seq(i,i=1..n)];
grp(mult):=proc(a,b) local i;
[seq(a[b[i]],i=1..n)];
end;
grp(inverse):=proc(a) local i,out;
out:=[seq(i,i=1..n)]:
for i from 1 to n do
out[a[i]]:=i;
od;
out;
end;
grp;
end;
> S7:=Sn(7);
> S7(set);
>