Skip to content

Commit

Permalink
adjust
Browse files Browse the repository at this point in the history
  • Loading branch information
thofma committed May 14, 2024
1 parent 3f9a665 commit 7218598
Showing 1 changed file with 7 additions and 16 deletions.
23 changes: 7 additions & 16 deletions src/generic/PolyRingHom.jl
Original file line number Diff line number Diff line change
Expand Up @@ -127,10 +127,8 @@ function compose(F::PolyRingAnyMap{D, C, <: Function}, G::PolyRingAnyMap{C, E, <
end

# Now compose with arbitrary maps

# I technically cannot do the Nothing version

# I can only do the Map version of the coefficient map has codomain C
# For now we only properly do the Map version of the coefficient map has codomain C
# Otherwise we bail out and return a generic CompositeMap
function compose(F::PolyRingAnyMap{D, C, <: Map, <: Any}, G::S) where {D, C, S <: Map{C, <: Any}}
codomain(F) === domain(G) || error("Incompatible (co)domain in composition")
f = _coefficient_map(F)
Expand All @@ -142,6 +140,7 @@ function compose(F::PolyRingAnyMap{D, C, <: Map, <: Any}, G::S) where {D, C, S <
end
end

# Special case for composing with the identity
function compose(F::PolyRingAnyMap{D, C, <: Map, <: Any}, G::S) where {D, C, S <: Generic.IdentityMap{C}}
codomain(F) === domain(G) || error("Incompatible (co)domain in composition")
f = _coefficient_map(F)
Expand Down Expand Up @@ -223,11 +222,13 @@ end
#
################################################################################

function _evaluate_plain(F::PolyRingAnyMap{<: PolyRing}, u)
# if the coefficient map is nothing
function _evaluate_help(F::PolyRingAnyMap{<: PolyRing, <: Any, Nothing}, g)
return u(F.img_gen)
end

function _evaluate_general(F::PolyRingAnyMap{<: PolyRing}, u)
# general case
function _evaluate_help(F::PolyRingAnyMap{<: PolyRing, <: Any, <: Any}, g)
@assert !(_coefficient_map(F) isa Nothing)
S = temp_ring(F)
if S !== nothing
Expand All @@ -237,16 +238,6 @@ function _evaluate_general(F::PolyRingAnyMap{<: PolyRing}, u)
end
end

# one more intermediate function

function _evaluate_help(F::PolyRingAnyMap{<: PolyRing, <: Any, Nothing}, g)
return _evaluate_plain(F, g)
end

function _evaluate_help(F::PolyRingAnyMap{<: PolyRing, <: Any, <: Any}, g)
return _evaluate_general(F, g)
end

function (F::PolyRingAnyMap{<: PolyRing})(g)
if g isa elem_type(domain(F))
_evaluate_help(F, g)
Expand Down

0 comments on commit 7218598

Please sign in to comment.