gh-36592: Add pull_from_function_field to curves
<!-- ^^^^^
Please provide a concise, informative and self-explanatory title.
Don't put issue numbers in there, do this in the PR body below.
For example, instead of "Fixes #1234" use "Introduce new method to
calculate 1+1"
-->
<!-- Describe your changes here in detail -->
For an algebraic curve C, `C.pull_from_function_field()` provides the
inverse map of `C.function()` between the fraction field of the
coordinate ring of C and the abstract function field of C. This
tightens the integration of the two isomorphic fields. Elements of the
fraction field of the coordinate ring of C is represented by elements of
the fraction field of the coordinate ring of the ambient affine or
projective space, for user's convenience.
This is the missing feature as discussed in
https://groups.google.com/g/sage-support/c/Axkaex63f8w/m/wKL0TzmDAwAJ
The problem there can be solved by
```sage
sage: P2.<x,y,z> = ProjectiveSpace(QQ, 2)
sage: f = 2*x^5 - 4*x^3*y*z + x^2*y*z^2 + 2*x*y^3*z + 2*x*y^2*z^2+ y^5
sage: C = Curve(f)
sage: K = C.function(x/y).differential().divisor() # canonical divisor
sage: basis = (-K).basis_function_space()
sage: Basis = [C.pull_from_function_field(f) for f in basis]
sage: phi = C.hom(Basis, P2)
sage: D = phi.image() # conic
sage: D.degree()
2
sage: D
Closed subscheme of Projective Space of dimension 2 over Rational Field
defined by:
x^2 + x*y + 2*y*z
```
<!-- Why is this change required? What problem does it solve? -->
<!-- If this PR resolves an open issue, please link to it here. For
example "Fixes #12345". -->
<!-- If your change requires a documentation PR, please link it
appropriately. -->
### :memo: Checklist
<!-- Put an `x` in all the boxes that apply. -->
<!-- If your change requires a documentation PR, please link it
appropriately -->
<!-- If you're unsure about any of these, don't hesitate to ask. We're
here to help! -->
<!-- Feel free to remove irrelevant items. -->
- [x] The title is concise, informative, and self-explanatory.
- [x] The description explains in detail what this PR is about.
- [x] I have linked a relevant issue or discussion.
- [x] I have created tests covering the changes.
- [x] I have updated the documentation accordingly.
### :hourglass: Dependencies
<!-- List all open PRs that this PR logically depends on
- #12345: short description why this is a dependency
- #34567: ...
-->
<!-- If you're unsure about any of these, don't hesitate to ask. We're
here to help! -->
URL: https://github.com/sagemath/sage/pull/36592
Reported by: Kwankyu Lee
Reviewer(s): John H. Palmieri, Kwankyu Lee