Ticket #3913: sage-trac3913.patch
| File sage-trac3913.patch, 3.7 kB (added by cremona, 5 months ago) |
|---|
-
a/sage/rings/number_field/class_group.py
old new 148 148 """ 149 149 def __init__(self, ideal, class_group): 150 150 """ 151 A fractional ideal class.151 Returns the ideal class of this fractional ideal. 152 152 """ 153 153 self.__ideal = ideal 154 154 MultiplicativeGroupElement.__init__(self, class_group) … … 171 171 return self.parent()((self.__ideal * other.__ideal).reduce_equiv()) 172 172 173 173 def is_principal(self): 174 """ 175 Returns True iff this ideal class is the trivial (principal) class 176 177 EXAMPLE: 178 sage: K.<w>=QuadraticField(-23) 179 sage: OK=K.ring_of_integers() 180 sage: C=OK.class_group() 181 sage: P2a,P2b=[P for P,e in (2*OK).factor()] 182 sage: c=C(P2a) 183 sage: c.is_principal() 184 False 185 sage: (c^2).is_principal() 186 False 187 sage: (c^3).is_principal() 188 True 189 """ 174 190 return self.__ideal.is_principal() 175 191 176 192 def reduce(self): … … 190 206 """ 191 207 return self.parent()(self.__ideal.reduce_equiv()) 192 208 193 #def multiplicative_order(self): 194 # try: 195 # return self.__multiplicative_order 196 # except AttributeError: 209 def order(self): 210 """ 211 Return the order of this ideal class in the class group. 197 212 213 EXAMPLE: 214 sage: K.<w>=QuadraticField(-23) 215 sage: OK=K.ring_of_integers() 216 sage: C=OK.class_group() 217 sage: h=C.order(); h 218 3 219 sage: P2a,P2b=[P for P,e in (2*OK).factor()] 220 sage: c=C(P2a); c 221 Fractional ideal class (2, 1/2*w - 1/2) 222 sage: c.order() 223 3 224 225 sage: k.<a> = NumberField(x^2 + 20072); G = k.class_group(); G 226 Class group of order 76 with structure C38 x C2 of Number Field in a with defining polynomial x^2 + 20072 227 sage: [c.order() for c in G.gens()] 228 [38, 2] 229 230 """ 231 try: 232 return self.__multiplicative_order 233 except AttributeError: 234 from sage.groups.generic import order_from_multiple 235 self.__multiplicative_order = order_from_multiple(self,self.parent().order(),operation='*') 236 return self.__multiplicative_order 237 238 multiplicative_order = order 239 198 240 def ideal(self): 199 241 """ 200 242 Return a representative ideal in this ideal class. 243 244 EXAMPLE: 245 sage: K.<w>=QuadraticField(-23) 246 sage: OK=K.ring_of_integers() 247 sage: C=OK.class_group() 248 sage: P2a,P2b=[P for P,e in (2*OK).factor()] 249 sage: c=C(P2a); c 250 Fractional ideal class (2, 1/2*w - 1/2) 251 sage: c.ideal() 252 Fractional ideal (2, 1/2*w - 1/2) 201 253 """ 202 254 return self.__ideal 203 255 … … 205 257 """ 206 258 Return generators for a representative ideal in this 207 259 ideal class. 260 261 EXAMPLE: 262 sage: K.<w>=QuadraticField(-23) 263 sage: OK=K.ring_of_integers() 264 sage: C=OK.class_group() 265 sage: P2a,P2b=[P for P,e in (2*OK).factor()] 266 sage: c=C(P2a); c 267 Fractional ideal class (2, 1/2*w - 1/2) 268 sage: c.gens() 269 (2, 1/2*w - 1/2) 208 270 """ 209 271 return self.ideal().gens()