Changes http://wiki.axiom-developer.org/DirectProduct/diff
--
??changed:
-
+ if R has Finite then
+ size == size$R () ** dim
+ index(n:PositiveInteger):% ==
+ N:Integer := size()$R
+ L:List R := []
+ p:Integer := n-1
+ for i in 1..dim repeat
+ L:=cons(index(((p rem N) + 1)::PositiveInteger)$R, L)
+ p := p quo N
+ vector(L)
+ random() == [random()$R for i in 1..dim]
+ lookup(x) ==
+ N:Integer := size()$R
+ L:Integer := lookup(x.1)-1
+ for i in 2..dim repeat
+ L:=L*N+lookup(x.i)-1
+ (L+1)::PositiveInteger
+ hash(x) ==
+ N := size()$R::SingleInteger
+ L := hash(x.1)
+ for i in 2..dim repeat
+ L:=L*N+hash(x.i)
+ L
+
if R has AbelianSemiGroup then
\end{spad}
++added:
+
+\begin{axiom}
+X:=DirectProduct(3,IntegerMod(5))
+size()$X
+[index(i)$X for i in 1..size()$X::PI]
+lookup(vector([0,0,0])::X)
+lookup(vector([1,2,3])::X)
+reduce(_and, [(lookup(index(i)$X)=i)::Boolean for i in 1..size()$X::PI] )
+random()$X
+\end{axiom}
--
forwarded from http://wiki.axiom-developer.org/[EMAIL PROTECTED]