Opened 2 years ago

Closed 2 years ago

#23167 closed enhancement (fixed)

Coercions between Function Fields

Reported by: saraedum 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) Commit: e2ad9b3dd3078d4f9e4c2589b0355e99131803fc
Dependencies: Stopgaps:

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 2 years ago by roed

  • Branch set to u/roed/coercions_between_function_fields

comment:2 Changed 2 years ago by roed

  • Commit set to c227ee780c801638bb17ea666379179d2d425f66
  • Status changed from new to needs_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 2 years ago by saraedum

  • Authors set to David Roe

comment:4 Changed 2 years ago by saraedum

  • Branch changed from u/roed/coercions_between_function_fields to u/saraedum/coercions_between_function_fields

comment:5 Changed 2 years ago by saraedum

  • Commit changed from c227ee780c801638bb17ea666379179d2d425f66 to 369a518285a1491274b21a31cd453df16cbe05a6
  • Reviewers set to 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 2 years ago by saraedum

  • Status changed from needs_review to needs_work

comment:7 Changed 2 years ago by saraedum

  • Work issues set to one doctest fails

comment:8 Changed 2 years ago by roed

  • Branch changed from u/saraedum/coercions_between_function_fields to u/roed/coercions_between_function_fields

comment:9 Changed 2 years ago by roed

  • Commit changed from 369a518285a1491274b21a31cd453df16cbe05a6 to b3331784fec7ec424b8af1142239d3be9d1315a3
  • Status changed from needs_work to needs_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 2 years ago by saraedum

  • Status changed from needs_review to positive_review

comment:11 Changed 2 years ago by vbraun

  • Status changed from positive_review to needs_work

Documentation doesn't build

comment:12 Changed 2 years ago by vbraun

  • Status changed from needs_work to positive_review

Was #23152...

comment:13 Changed 2 years ago by vbraun

  • Status changed from positive_review to needs_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 2 years ago by saraedum

  • Branch changed from u/roed/coercions_between_function_fields to u/saraedum/coercions_between_function_fields

comment:15 Changed 2 years ago by git

  • Commit changed from b3331784fec7ec424b8af1142239d3be9d1315a3 to e2ad9b3dd3078d4f9e4c2589b0355e99131803fc

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

e2ad9b3Fix zero morphism check

comment:16 Changed 2 years ago by saraedum

  • Status changed from needs_work to positive_review

tests pass; david agreed to this fix.

comment:17 Changed 2 years ago by saraedum

  • Work issues one doctest fails deleted

comment:18 Changed 2 years ago by vbraun

  • Branch changed from u/saraedum/coercions_between_function_fields to e2ad9b3dd3078d4f9e4c2589b0355e99131803fc
  • Resolution set to fixed
  • Status changed from positive_review to closed
Note: See TracTickets for help on using tickets.