1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
|
diff --git a/src/doc/en/constructions/algebraic_geometry.rst b/src/doc/en/constructions/algebraic_geometry.rst
index a312548..3933bf0 100644
--- a/src/doc/en/constructions/algebraic_geometry.rst
+++ b/src/doc/en/constructions/algebraic_geometry.rst
@@ -142,13 +142,17 @@ Other methods
sage: I = singular.ideal('x^4+x', 'y^4+y')
sage: L = singular.closed_points(I)
sage: # Here you have all the points :
- sage: print(L)
+ sage: L # random
[1]:
- _[1]=y+1 # 32-bit
- _[2]=x+1 # 32-bit
- _[1]=y # 64-bit
- _[2]=x # 64-bit
+ _[1]=y+1
+ _[2]=x+1
...
+ sage: l=[L[k].sage() for k in [1..10]]; len(l) # there are 10 points
+ 10
+ sage: r=sorted(l[0].ring().gens()); r
+ [y, x]
+ sage: r in [t.gens() for t in l] # one of them is given by [y,x]
+ True
- Another way to compute rational points is to use Singular's
``NSplaces`` command. Here's the Klein quartic over :math:`GF(8)`
diff --git a/src/doc/en/developer/coding_in_other.rst b/src/doc/en/developer/coding_in_other.rst
index ee71373..6693aed 100644
--- a/src/doc/en/developer/coding_in_other.rst
+++ b/src/doc/en/developer/coding_in_other.rst
@@ -439,7 +439,7 @@ interface to Singular::
''
sage: L = singular.eval("POINTS;")
- sage: print(L)
+ sage: print(L) # random
[1]:
[1]:
0
@@ -447,13 +447,6 @@ interface to Singular::
1
[3]:
0
- [2]:
- [1]:
- -2
- [2]:
- -1
- [3]:
- 1
...
From looking at the output, notice that our wrapper function will need
diff --git a/src/sage/modules/fg_pid/fgp_module.py b/src/sage/modules/fg_pid/fgp_module.py
index 1208768..8cb68d0 100644
--- a/src/sage/modules/fg_pid/fgp_module.py
+++ b/src/sage/modules/fg_pid/fgp_module.py
@@ -127,7 +127,8 @@ which is coerced into M0. ::
Here we illustrate lifting an element of the image of f, i.e., finding
an element of M0 that maps to a given element of M1::
- sage: y = f.lift(3*M1.0); y
+ sage: y = f.lift(3*M1.0)
+ sage: y # random
(0, 13)
sage: f(y)
(3)
@@ -1285,7 +1286,7 @@ class FGP_Module_class(Module):
(0, 4)
sage: Q.coordinate_vector(x, reduce=True)
(0, 4)
- sage: Q.coordinate_vector(-x, reduce=False)
+ sage: Q.coordinate_vector(-x, reduce=False) # random
(0, -4)
sage: x == 4*Q.1
True
@@ -1414,7 +1415,7 @@ class FGP_Module_class(Module):
Echelon basis matrix:
[ 0 12 0]
[ 0 0 4]
- sage: X
+ sage: X # random
[0 4 0]
[0 1 0]
[0 0 1]
diff --git a/src/sage/modules/free_module_morphism.py b/src/sage/modules/free_module_morphism.py
index 62379d2..2c163f5 100644
--- a/src/sage/modules/free_module_morphism.py
+++ b/src/sage/modules/free_module_morphism.py
@@ -350,12 +350,14 @@ class FreeModuleMorphism(matrix_morphism.MatrixMorphism):
sage: V = X.span([[2, 0], [0, 8]], ZZ)
sage: W = (QQ**1).span([[1/12]], ZZ)
sage: f = V.hom([W([1/3]), W([1/2])], W)
- sage: f.lift([1/3])
+ sage: l=f.lift([1/3]); l # random
(8, -16)
- sage: f.lift([1/2])
- (12, -24)
- sage: f.lift([1/6])
- (4, -8)
+ sage: f(l)
+ (1/3)
+ sage: f(f.lift([1/2]))
+ (1/2)
+ sage: f(f.lift([1/6]))
+ (1/6)
sage: f.lift([1/12])
Traceback (most recent call last):
...
diff --git a/src/sage/schemes/hyperelliptic_curves/monsky_washnitzer.py b/src/sage/schemes/hyperelliptic_curves/monsky_washnitzer.py
index 83b63b0..4bdb189 100644
--- a/src/sage/schemes/hyperelliptic_curves/monsky_washnitzer.py
+++ b/src/sage/schemes/hyperelliptic_curves/monsky_washnitzer.py
@@ -1875,9 +1875,9 @@ class SpecialHyperellipticQuotientRing(UniqueRepresentation, CommutativeAlgebra)
if not hasattr(self, '_curve'):
if self._Q.degree() == 3:
ainvs = [0, self._Q[2], 0, self._Q[1], self._Q[0]]
- self._curve = EllipticCurve(ainvs)
+ self._curve = EllipticCurve(ainvs, check_squarefree=R.is_field())
else:
- self._curve = HyperellipticCurve(self._Q)
+ self._curve = HyperellipticCurve(self._Q, check_squarefree=R.is_field())
else:
raise NotImplementedError("Must be an elliptic curve or polynomial "
|