id summary reporter owner description type status priority milestone component resolution keywords cc merged author reviewer upstream work_issues branch commit dependencies stopgaps
18865 Can't make ring homomorphism from ring of integers to a residue field Robert Harron "It doesn't seem possible to create a ring homomorphism from an order in a number field to a residue field of the number field. For instance:
{{{
sage: K. = NumberField(x^2-2)
sage: OK = K.ring_of_integers()
sage: P = K.primes_above(3)[0]
sage: kappa = P.residue_field()
sage: abar = kappa.gen()
sage: im = [g.polynomial().change_ring(ZZ)(abar) for g in OK.gens()]
sage: iota = OK.hom(im)
}}}
raises ""TypeError: images do not define a valid homomorphism"".
Now, if instead you pass ""check=False"" to OK.hom, you of course get an iota, but you are unable to evaluate it:
{{{
sage: iota = OK.hom(im, check=False)
sage: iota(K.gen())
}}}
This raises ""TypeError: unsupported operand parent(s) for '*': 'Rational Field' and 'Residue field in abar of Fractional ideal (3)'"". I tried being clever and doing:
{{{
sage: iota(OK(K.gen()))
}}}
but got the same error. Tracing it back, when sage tries to evaluate iota at an element a, it calls a._im_gens_(kappa, im) and this is totally wrong for this homset. Rather it is meant for homomorphisms between number fields. Basically, it looks like we need a function _im_gens_ for OrderElement types. It should take the element a written out in the basis given by OK.gens() and replace the basis elements with the element in im." defect new major sage-6.8 number fields Ring of integers, homset, residue field N/A