Opened 3 years ago
Closed 3 years ago
#23167 closed enhancement (fixed)
Coercions between Function Fields
Reported by:  saraedum  Owned by:  

Priority:  major  Milestone:  sage8.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 3 years ago by
 Branch set to u/roed/coercions_between_function_fields
comment:2 Changed 3 years ago by
 Commit set to c227ee780c801638bb17ea666379179d2d425f66
 Status changed from new to needs_review
comment:3 Changed 3 years ago by
comment:4 Changed 3 years ago by
 Branch changed from u/roed/coercions_between_function_fields to u/saraedum/coercions_between_function_fields
comment:5 Changed 3 years ago by
 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:
369a518  Remove obsolete not implemented comments

comment:6 Changed 3 years ago by
 Status changed from needs_review to needs_work
comment:7 Changed 3 years ago by
 Work issues set to one doctest fails
comment:8 Changed 3 years ago by
 Branch changed from u/saraedum/coercions_between_function_fields to u/roed/coercions_between_function_fields
comment:9 Changed 3 years ago by
 Commit changed from 369a518285a1491274b21a31cd453df16cbe05a6 to b3331784fec7ec424b8af1142239d3be9d1315a3
 Status changed from needs_work to needs_review
comment:10 Changed 3 years ago by
 Status changed from needs_review to positive_review
comment:11 Changed 3 years ago by
 Status changed from positive_review to needs_work
Documentation doesn't build
comment:13 Changed 3 years ago by
 Status changed from positive_review to needs_work
sage t long warnlong 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/sitepackages/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/sitepackages/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/sitepackages/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 3 years ago by
 Branch changed from u/roed/coercions_between_function_fields to u/saraedum/coercions_between_function_fields
comment:15 Changed 3 years ago by
 Commit changed from b3331784fec7ec424b8af1142239d3be9d1315a3 to e2ad9b3dd3078d4f9e4c2589b0355e99131803fc
Branch pushed to git repo; I updated commit sha1. New commits:
e2ad9b3  Fix zero morphism check

comment:16 Changed 3 years ago by
 Status changed from needs_work to positive_review
tests pass; david agreed to this fix.
comment:17 Changed 3 years ago by
 Work issues one doctest fails deleted
comment:18 Changed 3 years ago by
 Branch changed from u/saraedum/coercions_between_function_fields to e2ad9b3dd3078d4f9e4c2589b0355e99131803fc
 Resolution set to fixed
 Status changed from positive_review to closed
New commits:
Adding more coercions between function fields and the ability to specify a morphism on the base field or constant field