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]

Reply via email to