Opened 6 years ago

Closed 5 years ago

#23167 closed enhancement (fixed)

Coercions between Function Fields

Reported by: Julian Rüth Owned by:
Priority: major Milestone: sage-8.0
Component: commutative algebra Keywords: sd86.5
Cc: Merged in:
Authors: David Roe Reviewers: Julian Rüth
Report Upstream: N/A Work issues:
Branch: e2ad9b3 (Commits, GitHub, GitLab) Commit: e2ad9b3dd3078d4f9e4c2589b0355e99131803fc
Dependencies: Stopgaps:

Status badges

Description

The following are desired features.

Coercions between base fields should induce coercions on function fields:

sage: K.<x> = FunctionField(QQ)
sage: L.<x> = FunctionField(GaussianIntegers().fraction_field())
sage: L.has_coerce_map_from(K)
True

Also in towers:

sage: K.<x> = FunctionField(QQ)
sage: R.<y> = K[]
sage: L.<y> = K.extension(y^3 + 1)
sage: K.<x> = FunctionField(GaussianIntegers().fraction_field())
sage: R.<y> = K[]
sage: M.<y> = K.extension(y^3 + 1)
sage: M.has_coerce_map_from(L)
True

And when the base ring coerces into the extension:

sage: K.<x> = FunctionField(QQ)
sage: R.<I> = K[]
sage: L.<I> = K.extension(I^2 + 1)
sage: M.<x> = FunctionField(GaussianIntegers().fraction_field())
sage: M.has_coerce_map_from(L) # not tested, base_morphism is not implemented
True

Change History (18)

comment:1 Changed 6 years ago by David Roe

Branch: u/roed/coercions_between_function_fields

comment:2 Changed 6 years ago by David Roe

Commit: c227ee780c801638bb17ea666379179d2d425f66
Status: newneeds_review

New commits:

c227ee7Adding more coercions between function fields and the ability to specify a morphism on the base field or constant field

comment:3 Changed 6 years ago by Julian Rüth

Authors: David Roe

comment:4 Changed 6 years ago by Julian Rüth

Branch: u/roed/coercions_between_function_fieldsu/saraedum/coercions_between_function_fields

comment:5 Changed 6 years ago by Julian Rüth

Commit: c227ee780c801638bb17ea666379179d2d425f66369a518285a1491274b21a31cd453df16cbe05a6
Reviewers: Julian Rüth

Positive review. But one doctest fails because an is_injective is not implemented. I think that we should just disable the doctest because the failing doctest is not in the scope of this. (We discussed several ways of fixing this. The best would probably be to change the DefaultConvertMap to be a DefaultCoerceMap [does not exist yet] which is in the category of domain and codomain and would therefore by magically be injective.)


New commits:

369a518Remove obsolete not implemented comments

comment:6 Changed 6 years ago by Julian Rüth

Status: needs_reviewneeds_work

comment:7 Changed 6 years ago by Julian Rüth

Work issues: one doctest fails

comment:8 Changed 6 years ago by David Roe

Branch: u/saraedum/coercions_between_function_fieldsu/roed/coercions_between_function_fields

comment:9 Changed 6 years ago by David Roe

Commit: 369a518285a1491274b21a31cd453df16cbe05a6b3331784fec7ec424b8af1142239d3be9d1315a3
Status: needs_workneeds_review

I disabled the doctest. See #23184 for a followup which should allow the doctest to be re-enabled.


New commits:

b333178Disable doctest for not-yet-working coercion

comment:10 Changed 6 years ago by Julian Rüth

Status: needs_reviewpositive_review

comment:11 Changed 6 years ago by Volker Braun

Status: positive_reviewneeds_work

Documentation doesn't build

comment:12 Changed 6 years ago by Volker Braun

Status: needs_workpositive_review

Was #23152...

comment:13 Changed 5 years ago by Volker Braun

Status: positive_reviewneeds_work
sage -t --long --warn-long 69.1 src/sage/categories/rings.py
**********************************************************************
File "src/sage/categories/rings.py", line 97, in sage.categories.rings.Rings.MorphismMethods.is_injective
Failed example:
    f = K.hom([codomain(1)]); f
Exception raised:
    Traceback (most recent call last):
      File "/mnt/disk/home/release/Sage/local/lib/python2.7/site-packages/sage/doctest/forker.py", line 509, in _run
        self.compile_and_execute(example, compiler, test.globs)
      File "/mnt/disk/home/release/Sage/local/lib/python2.7/site-packages/sage/doctest/forker.py", line 872, in compile_and_execute
        exec(compiled, globs)
      File "<doctest sage.categories.rings.Rings.MorphismMethods.is_injective[8]>", line 1, in <module>
        f = K.hom([codomain(Integer(1))]); f
      File "/mnt/disk/home/release/Sage/local/lib/python2.7/site-packages/sage/rings/function_field/function_field.py", line 1935, in hom
        raise ValueError("You must specify a morphism on the base field")
    ValueError: You must specify a morphism on the base field
**********************************************************************
File "src/sage/categories/rings.py", line 102, in sage.categories.rings.Rings.MorphismMethods.is_injective
Failed example:
    f.is_injective()
Expected:
    False
Got:
    True
**********************************************************************

comment:14 Changed 5 years ago by Julian Rüth

Branch: u/roed/coercions_between_function_fieldsu/saraedum/coercions_between_function_fields

comment:15 Changed 5 years ago by git

Commit: b3331784fec7ec424b8af1142239d3be9d1315a3e2ad9b3dd3078d4f9e4c2589b0355e99131803fc

Branch pushed to git repo; I updated commit sha1. New commits:

e2ad9b3Fix zero morphism check

comment:16 Changed 5 years ago by Julian Rüth

Status: needs_workpositive_review

tests pass; david agreed to this fix.

comment:17 Changed 5 years ago by Julian Rüth

Work issues: one doctest fails

comment:18 Changed 5 years ago by Volker Braun

Branch: u/saraedum/coercions_between_function_fieldse2ad9b3dd3078d4f9e4c2589b0355e99131803fc
Resolution: fixed
Status: positive_reviewclosed
Note: See TracTickets for help on using tickets.