Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Repair flattenings of graded modules rebase #3348

Draft
wants to merge 79 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
79 commits
Select commit Hold shift + click to select a range
1189e1b
Remove :task from sub methods for modules.
HechtiDerLachs Jan 24, 2024
aab6439
Introduce new function submodule.
HechtiDerLachs Jan 24, 2024
668a853
Remove all deprecated uses of sub.
HechtiDerLachs Jan 24, 2024
e11109f
Export submodule.
HechtiDerLachs Jan 24, 2024
da8193a
Fix tests.
HechtiDerLachs Jan 24, 2024
585c592
Fix tests again.
HechtiDerLachs Jan 24, 2024
2b706ac
Register morphisms in general.
HechtiDerLachs Jan 24, 2024
085e7f4
Rebase network of natural maps on WeakKeyIdDicts.
HechtiDerLachs Jan 24, 2024
b7237f6
Clean up the morphisms network and dont store the actual morphisms.
HechtiDerLachs Jan 24, 2024
8d3cfea
Some small fix for Wolfram.
HechtiDerLachs Jan 24, 2024
8a737e3
Some fixes and marking the test as broken again.
HechtiDerLachs Jan 24, 2024
a0f6e4f
Fix documentation.
HechtiDerLachs Jan 24, 2024
ca22781
Another small fix for Wolfram.
HechtiDerLachs Jan 24, 2024
b08fb1d
Fix the fix.
HechtiDerLachs Jan 24, 2024
3b42596
Fix method selection.
HechtiDerLachs Jan 24, 2024
2317eb7
Introduce kw argument for caching morphisms.
HechtiDerLachs Jan 25, 2024
8a1b09f
Redirect previous usages.
HechtiDerLachs Jan 25, 2024
832bfae
Adjust tests.
HechtiDerLachs Jan 25, 2024
6b37340
Merge branch 'master' into fix_sub_and_quo_for_modules
HechtiDerLachs Jan 26, 2024
6936b15
submodule -> sub_object.
HechtiDerLachs Jan 31, 2024
7102f40
Fix docstrings and signatures for quo.
HechtiDerLachs Jan 31, 2024
2e1a6c3
Fix methods for quo.
HechtiDerLachs Jan 31, 2024
b17dcaf
Adjust documentation.
HechtiDerLachs Jan 31, 2024
4defc97
Merge branch 'fix_sub_and_quo_for_modules' of github.com:HechtiDerLac…
HechtiDerLachs Jan 31, 2024
8e592a1
Merge branch 'master' into fix_sub_and_quo_for_modules
HechtiDerLachs Jan 31, 2024
ba08f84
Fix up usages of quo.
HechtiDerLachs Jan 31, 2024
c6adba0
Export new functions.
HechtiDerLachs Jan 31, 2024
ed582e4
Some fixes.
HechtiDerLachs Jan 31, 2024
5817b87
Fix tests.
HechtiDerLachs Feb 1, 2024
db52db0
Fix tests.
HechtiDerLachs Feb 1, 2024
4e0437c
Fix tests.
HechtiDerLachs Feb 1, 2024
775e267
Fix tests.
HechtiDerLachs Feb 1, 2024
4844564
Fix tests.
HechtiDerLachs Feb 1, 2024
88fab65
Fix tests.
HechtiDerLachs Feb 1, 2024
9cbd80e
Squashed changes.
HechtiDerLachs Feb 1, 2024
f3e1fce
Fix tests.
HechtiDerLachs Feb 1, 2024
c13caa3
Fix up the truncation.
HechtiDerLachs Feb 1, 2024
55c2e04
New rebase.
HechtiDerLachs Feb 1, 2024
2b05d7b
Fix tests.
HechtiDerLachs Feb 1, 2024
6056770
WIP with debug messages.
HechtiDerLachs Feb 1, 2024
7510e71
Merge branch 'master' into all_changes
lgoettgens Feb 1, 2024
51459ba
Progress in debugging.
HechtiDerLachs Feb 2, 2024
4ee1f2f
WIP on debugging.
HechtiDerLachs Feb 2, 2024
8887732
Write truely generic presentation and kernel methods [no ci].
HechtiDerLachs Feb 3, 2024
72845a3
Repair graded_map to accept zero entries.
HechtiDerLachs Feb 4, 2024
61a925f
Add tensor decomposition function to return value.
HechtiDerLachs Feb 4, 2024
97edc8b
Add some assertions.
HechtiDerLachs Feb 4, 2024
cdbd973
Repair kernel routine.
HechtiDerLachs Feb 4, 2024
263471c
Rewrite hom methods for modules.
HechtiDerLachs Feb 4, 2024
298b42e
Add generic method for simplification of SubquoModuleElems.
HechtiDerLachs Feb 4, 2024
9a370ae
Add missing check argument.
HechtiDerLachs Feb 4, 2024
802ecaa
Fix or disable brittle tests.
HechtiDerLachs Feb 4, 2024
06a091d
Merge branch 'all_changes' of github.com:HechtiDerLachs/Oscar.jl into…
HechtiDerLachs Feb 4, 2024
920fb56
Fix faulty merge.
HechtiDerLachs Feb 4, 2024
a6b7c15
Go back to old hom.
HechtiDerLachs Feb 4, 2024
178eaf3
Switch tests to old hom.
HechtiDerLachs Feb 4, 2024
0b19f7e
Clean up some deprecated assertions.
HechtiDerLachs Feb 4, 2024
a717e99
Repair truncate.
HechtiDerLachs Feb 4, 2024
c9212ec
Disable internal checks.
HechtiDerLachs Feb 4, 2024
89f3055
Update docs/src/CommutativeAlgebra/ModulesOverMultivariateRings/free_…
lgoettgens Feb 5, 2024
8e17657
Revert "Go back to old hom."
HechtiDerLachs Feb 5, 2024
5b24c3d
Revert "Switch tests to old hom."
HechtiDerLachs Feb 5, 2024
61f6d89
Disable duplicate method.
HechtiDerLachs Feb 5, 2024
e02a796
Merge branch 'all_changes' of github.com:HechtiDerLachs/Oscar.jl into…
HechtiDerLachs Feb 5, 2024
c48c85a
Adjust printing.
HechtiDerLachs Feb 5, 2024
ba50d61
Fix tests.
HechtiDerLachs Feb 5, 2024
78b5af2
Fix keyword argument for duals.
HechtiDerLachs Feb 5, 2024
f1701de
Fix doctests.
HechtiDerLachs Feb 5, 2024
1f61c77
Fix tests.
HechtiDerLachs Feb 5, 2024
4817778
Fix doctests.
HechtiDerLachs Feb 5, 2024
1c5efea
Delete some falsely added files.
HechtiDerLachs Feb 5, 2024
17e7bf8
Squashed changes.
HechtiDerLachs Feb 9, 2024
fc7886d
Disable various internal checks.
HechtiDerLachs Feb 9, 2024
3072332
Another round of disabling internal checks.
HechtiDerLachs Feb 9, 2024
ef98dda
Hotfix for broken comparison of module orderings.
HechtiDerLachs Feb 9, 2024
dac8b81
Disable further internal checks.
HechtiDerLachs Feb 9, 2024
cb236bf
Add shortcut for ideal membership via flattenings.
HechtiDerLachs Feb 19, 2024
1634e51
Repair flattenings of modules.
HechtiDerLachs Feb 20, 2024
c46e703
Some tuning.
HechtiDerLachs Feb 20, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ is_homogeneous(f::FreeModElem)
```

```@docs
degree(f::FreeModElem)
degree(f::FreeModElem{T}) where {T<:Union{<:MPolyDecRingElem, <:MPolyQuoRingElem{<:MPolyDecRingElem}}}
```


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ direct_product(M::ModuleFP{T}...; task::Symbol = :prod) where T
## Truncation

```@docs
truncate(M::ModuleFP, g::FinGenAbGroupElem, task::Symbol = :with_morphism)
truncate(M::ModuleFP, g::FinGenAbGroupElem, task::Symbol=:with_morphism)
```

## Twists
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -359,11 +359,11 @@ intersect(M::SubquoModule{T}, N::SubquoModule{T}) where T
## Submodules and Quotients

```@docs
sub(M::ModuleFP{T}, V::Vector{<:ModuleFPElem{T}}, task::Symbol = :with_morphism) where T
sub(M::ModuleFP{T}, V::Vector{<:ModuleFPElem{T}}) where T
```

```@docs
quo(M::ModuleFP{T}, V::Vector{<:ModuleFPElem{T}}, task::Symbol = :with_morphism) where T
quo(M::ModuleFP{T}, V::Vector{<:ModuleFPElem{T}}; cache_morphism::Bool=false) where T
```

## Homomorphisms From Subqotients
Expand Down
10 changes: 5 additions & 5 deletions experimental/DoubleAndHyperComplexes/src/Morphisms/ext.jl
Original file line number Diff line number Diff line change
Expand Up @@ -56,18 +56,18 @@ function (fac::HomMapFactory)(hc::AbsHyperComplex, p::Int, i::Tuple)
cod = hc[i_inc]

if iszero(dom) || iszero(cod)
return hom(dom, cod, elem_type(cod)[zero(cod) for i in 1:ngens(dom)])
return hom(dom, cod, elem_type(cod)[zero(cod) for i in 1:ngens(dom)]; check=false)
end

if p <= dim(d)
# contravariant induced map on first argument
i1_inc = Tuple(-i1 - [k == p ? inc : 0 for k in 1:dim(d)])
img_gens = [homomorphism_to_element(cod, compose(map(d, p, i1_inc), element_to_homomorphism(g))) for g in gens(dom)]
return hom(dom, cod, img_gens)
return hom(dom, cod, img_gens; check=false)
else
# covariant induced map on second argument
img_gens = [homomorphism_to_element(cod, compose(element_to_homomorphism(g), map(c, p - dim(d), Tuple(i2)))) for g in gens(dom)]
return hom(dom, cod, img_gens)
return hom(dom, cod, img_gens; check=false)
end
end

Expand Down Expand Up @@ -214,7 +214,7 @@ function (fac::InterpretationMorphismFactory)(self::AbsHyperComplexMorphism, I::
projections_tot = projections_for_summand(tot, offset)
M = dom[i]
N = cod[j]
result = hom(M, N, elem_type(N)[zero(N) for i in 1:ngens(M)])
result = hom(M, N, elem_type(N)[zero(N) for i in 1:ngens(M)]; check=false)
for (k, K) in enumerate(indices_dom)
pr = projections_dom[k]
for (l, L) in enumerate(indices_cod)
Expand Down Expand Up @@ -341,7 +341,7 @@ function (fac::HomComplexMorphismFactory)(self::AbsHyperComplexMorphism, I::Tupl
img_gens = elem_type(cod_mod)[homomorphism_to_element(cod_mod, compose(element_to_homomorphism(v), fac.codomain_morphism[I_out])) for v in g]
end

return hom(dom_mod, cod_mod, img_gens) # Set to false eventually
return hom(dom_mod, cod_mod, img_gens; check=false) # Set to false eventually
end

function can_compute(fac::HomComplexMorphismFactory, self::AbsHyperComplexMorphism, I::Tuple)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,10 @@ function (fac::ResolutionModuleFactory{ChainType})(c::AbsHyperComplex, I::Tuple)
end

if isone(i)
aug = hom(c[0], fac.orig_mod, gens(fac.orig_mod))
aug = hom(c[0], fac.orig_mod, gens(fac.orig_mod); check=false)
K, inc = kernel(aug)
next = _make_free_module(K, gens(K))
phi = hom(next, c[0], ambient_representatives_generators(K))
phi = hom(next, c[0], ambient_representatives_generators(K); check=false)
push!(fac.map_cache, phi)
return next
end
Expand All @@ -45,7 +45,7 @@ function (fac::ResolutionModuleFactory{ChainType})(c::AbsHyperComplex, I::Tuple)
return next
end
next = _make_free_module(K, gens(K))
phi = hom(next, c[i-1], ambient_representatives_generators(K))
phi = hom(next, c[i-1], ambient_representatives_generators(K); check=false)
push!(fac.map_cache, phi)

return next
Expand All @@ -54,10 +54,10 @@ end
function zero_object(M::ModuleFP)
if is_graded(M)
result = graded_free_module(base_ring(M), [])
return result, hom(result, M, elem_type(M)[])
return result, hom(result, M, elem_type(M)[]; check=false)
else
result = FreeMod(base_ring(M), 0)
return result, hom(result, M, elem_type(M)[])
return result, hom(result, M, elem_type(M)[]; check=false)
end
end

Expand Down Expand Up @@ -99,7 +99,7 @@ function free_resolution(::Type{T}, M::SubquoModule{RET}) where {T<:SimpleFreeRe
)
result = SimpleFreeResolution(M, internal_complex)
MC = ZeroDimensionalComplex(M)[0:0] # Wrap MC as a 1-dimensional complex concentrated in degree 0
aug_map = hom(result[(0,)], M, gens(M)) # The actual augmentation map
aug_map = hom(result[(0,)], M, gens(M); check=false) # The actual augmentation map
aug_map_comp = MorphismFromDict(result, MC, Dict{Tuple, typeof(aug_map)}([(0,)=>aug_map]))
result.augmentation_map = aug_map_comp
return result, aug_map_comp
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ function (fac::SimplifiedChainFactory)(d::AbsHyperComplex, Ind::Tuple)
# Create the maps to the old complex
img_gens_dom = elem_type(M)[sum(c*M[j] for (j, c) in S[i]; init=zero(M)) for i in I]
new_dom = _make_free_module(M, img_gens_dom)
dom_map = hom(new_dom, M, img_gens_dom)
dom_map = hom(new_dom, M, img_gens_dom; check=false)

if haskey(fac.maps_to_original, i)
# This means that for the next map a partial or
Expand All @@ -93,7 +93,7 @@ function (fac::SimplifiedChainFactory)(d::AbsHyperComplex, Ind::Tuple)

img_gens_cod = elem_type(N)[sum(c*N[i] for (i, c) in T[j]; init=zero(N)) for j in J]
new_cod = _make_free_module(N, img_gens_cod)
cod_map = hom(new_cod, N, img_gens_cod)
cod_map = hom(new_cod, N, img_gens_cod; check=false)

if haskey(fac.maps_to_original, next)
fac.maps_to_original[next] = compose(cod_map, fac.maps_to_original[next])
Expand Down Expand Up @@ -122,7 +122,7 @@ function (fac::SimplifiedChainFactory)(d::AbsHyperComplex, Ind::Tuple)
# end
push!(img_gens_dom, v)
end
dom_map_inv = hom(M, new_dom, img_gens_dom)
dom_map_inv = hom(M, new_dom, img_gens_dom; check=false)

if haskey(fac.maps_from_original, i)
fac.maps_from_original[i] = compose(fac.maps_from_original[i], dom_map_inv)
Expand All @@ -144,7 +144,7 @@ function (fac::SimplifiedChainFactory)(d::AbsHyperComplex, Ind::Tuple)
w_new = sparse_row(base_ring(w), new_entries)
push!(img_gens_cod, FreeModElem(w_new, new_cod))
end
cod_map_inv = hom(N, new_cod, img_gens_cod)
cod_map_inv = hom(N, new_cod, img_gens_cod; check=false)

if haskey(fac.maps_from_original, next)
fac.maps_from_original[next] = compose(fac.maps_from_original[next], cod_map_inv)
Expand Down Expand Up @@ -184,7 +184,7 @@ function (fac::SimplifiedChainFactory)(d::AbsHyperComplex, Ind::Tuple)
# Create the maps to the old complex
img_gens_dom = elem_type(M)[sum(c*M[j] for (j, c) in S[i]; init=zero(M)) for i in I]
new_dom = _make_free_module(M, img_gens_dom)
dom_map = hom(new_dom, M, img_gens_dom)
dom_map = hom(new_dom, M, img_gens_dom; check=false)

if haskey(fac.maps_to_original, prev)
fac.maps_to_original[prev] = compose(dom_map, fac.maps_to_original[prev])
Expand All @@ -195,7 +195,7 @@ function (fac::SimplifiedChainFactory)(d::AbsHyperComplex, Ind::Tuple)

img_gens_cod = elem_type(N)[sum(c*N[i] for (i, c) in T[j]; init=zero(N)) for j in J]
new_cod = _make_free_module(N, img_gens_cod)
cod_map = hom(new_cod, N, img_gens_cod)
cod_map = hom(new_cod, N, img_gens_cod; check=false)

if haskey(fac.maps_to_original, i)
fac.maps_to_original[i] = compose(cod_map, fac.maps_to_original[i])
Expand All @@ -214,7 +214,7 @@ function (fac::SimplifiedChainFactory)(d::AbsHyperComplex, Ind::Tuple)
end
push!(img_gens_dom, v)
end
dom_map_inv = hom(M, new_dom, img_gens_dom)
dom_map_inv = hom(M, new_dom, img_gens_dom; check=false)

if haskey(fac.maps_from_original, prev)
fac.maps_from_original[prev] = compose(fac.maps_from_original[prev], dom_map_inv)
Expand All @@ -235,7 +235,7 @@ function (fac::SimplifiedChainFactory)(d::AbsHyperComplex, Ind::Tuple)
w_new = sparse_row(base_ring(w), new_entries)
push!(img_gens_cod, FreeModElem(w_new, new_cod))
end
cod_map_inv = hom(N, new_cod, img_gens_cod)
cod_map_inv = hom(N, new_cod, img_gens_cod; check=false)

if haskey(fac.maps_from_original, i)
fac.maps_from_original[i] = compose(fac.maps_from_original[i], cod_map_inv)
Expand Down Expand Up @@ -357,7 +357,7 @@ end
### Helper functions
function _make_free_module(M::ModuleFP, g::Vector{T}) where {T<:ModuleFPElem}
if is_graded(M)
w = degree.(g)
w = _degree_fast.(g)
return graded_free_module(base_ring(M), w)
else
return FreeMod(base_ring(M), length(g))
Expand Down Expand Up @@ -598,9 +598,9 @@ function _alt_simplify(M::SubquoModule)
Z0, inc_Z0 = kernel(simp, 0)

result_to_M = hom(result, M,
elem_type(M)[aug[0](simp_to_orig[0](inc_Z0(preimage(Z0_to_result, x)))) for x in gens(result)])
elem_type(M)[aug[0](simp_to_orig[0](inc_Z0(preimage(Z0_to_result, x)))) for x in gens(result)]; check=false)
M_to_result = hom(M, result,
elem_type(result)[Z0_to_result(preimage(inc_Z0, orig_to_simp[0](preimage(aug[0], y)))) for y in gens(M)])
elem_type(result)[Z0_to_result(preimage(inc_Z0, orig_to_simp[0](preimage(aug[0], y)))) for y in gens(M)]; check=false)
return result, M_to_result, result_to_M
end

Expand Down Expand Up @@ -645,8 +645,9 @@ function kernel(simp::SimplifiedComplex{ChainType}, p::Int, i::Tuple) where {Cha
return K, inc
end

psi = map_to_original(simp)[i]
phi = map(c, p, i)
psi = map_to_original_complex(simp)[i]
orig = simp.original_complex # TODO: Use getter!
phi = map(orig, p, i)
K, inc = kernel(compose(psi, phi))
c.kernel_cache[(i, p)] = inc
return K, inc
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ function (fac::KoszulMorphismFactory)(c::AbsHyperComplex, p::Int, i::Tuple)
dom = c[i]
cod = c[first(i) - 1]
if first(i) == 0 || first(i) == r + 1
return hom(dom, cod, elem_type(cod)[zero(cod) for i in 1:ngens(dom)])
return hom(dom, cod, elem_type(cod)[zero(cod) for i in 1:ngens(dom)]; check=false)
end
return wedge_multiplication_map(dom, cod, fac.v)
end
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ function (fac::TotalComplexMapFactory)(c::AbsHyperComplex, p::Int, I::Tuple)
next = d + inc
dom = c[d]
cod = c[next]
result = hom(dom, cod, elem_type(cod)[zero(cod) for i in 1:ngens(dom)])
result = hom(dom, cod, elem_type(cod)[zero(cod) for i in 1:ngens(dom)]; check=false)
for (ind, J) in enumerate(index_cache(chain_fac)[d])
for k in 1:dim(orig)
target = collect(J) + (direction(orig, k) == :chain ? -1 : 1)*[(l == k ? 1 : 0) for l in 1:dim(orig)]
Expand Down
21 changes: 21 additions & 0 deletions experimental/Schemes/BlowupMorphism.jl
Original file line number Diff line number Diff line change
Expand Up @@ -319,6 +319,27 @@ function exceptional_divisor(p::BlowupMorphism)
return p.exceptional_divisor
end

function strict_transform(p::AbsSimpleBlowdownMorphism, inc::ClosedEmbedding)
X = domain(p)
Y = codomain(p)
U = first(affine_charts(Y))
@assert isone(length(affine_charts(Y))) && U === codomain(inc) "codomain mismatch"
inc_cov = covered_scheme_morphism(inc, codomain=Y)
return strict_transform(p, inc_cov)
end

function covered_scheme_morphism(inc::ClosedEmbedding;
domain::AbsCoveredScheme=covered_scheme(domain(inc)),
codomain::AbsCoveredScheme=covered_scheme(codomain(inc))
)
@assert isone(length(affine_charts(domain))) && first(affine_charts(domain)) === Oscar.domain(inc) "domain mismatch"
@assert isone(length(affine_charts(codomain))) && first(affine_charts(codomain)) === Oscar.codomain(inc) "domain mismatch"
U = first(affine_charts(domain))
inc_cov_mor = CoveringMorphism(default_covering(domain), default_covering(codomain), IdDict{AbsSpec, ClosedEmbedding}([U=>inc]))
inc_cov = CoveredClosedEmbedding(domain, codomain, inc_cov_mor)
return inc_cov
end

@doc raw"""
strict_transform(p::BlowupMorphism, inc::CoveredClosedEmbedding)

Expand Down
22 changes: 19 additions & 3 deletions experimental/Schemes/DerivedPushforward.jl
Original file line number Diff line number Diff line change
Expand Up @@ -29,15 +29,20 @@ function _derived_pushforward(M::SubquoModule)
S = base_ring(M)
n = ngens(S)-1

d = _regularity_bound(M) - n
raw_res, _ = free_resolution(Oscar.SimpleFreeResolution, M)
res = simplify(raw_res) # minimize resolution

d = _regularity_bound(res, 0:n+1) - n
d = (d < 0 ? 0 : d)

@show d
@show _regularity_bound(M)

Sd = graded_free_module(S, [0 for i in 1:ngens(S)])
v = sum(x^d*Sd[i] for (i, x) in enumerate(gens(S)); init=zero(Sd))
kosz = koszul_complex(Oscar.KoszulComplex, v)
K = shift(Oscar.DegreeZeroComplex(kosz)[1:n+1], 1)

res, _ = free_resolution(Oscar.SimpleFreeResolution, M)
KoM = hom(K, res)
tot = total_complex(KoM)
tot_simp = simplify(tot)
Expand All @@ -46,6 +51,17 @@ function _derived_pushforward(M::SubquoModule)
return st[1]
end

function _regularity_bound(c::AbsHyperComplex{T}, r::UnitRange) where {T<:ModuleFP}
isone(dim(c)) || error("complex must be one-dimensional")
isempty(r) && error("range must not be empty")
i0 = first(r)
result = maximum((x->degree(x; check=false)[1]).(gens(c[i0])))
for i in r
result = maximum(push!((x->degree(x; check=false)[1]).(gens(c[i])), result))
end
return result
end

# The code below is supposedly faster, because it does not need to pass
# through a double complex.
#
Expand Down Expand Up @@ -79,7 +95,7 @@ function rank(phi::FreeModuleHom{FreeMod{T}, FreeMod{T}, Nothing}) where {T<:Fie
end


_regularity_bound(F::FreeMod) = maximum(Int(degree(a)[1]) for a in gens(F))
_regularity_bound(F::FreeMod) = maximum(Int(degree(a; check=false)[1]) for a in gens(F))

@doc raw"""
simplify(c::ComplexOfMorphisms{ChainType}) where {ChainType<:ModuleFP}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ end

### Conversion of an affine scheme into a covered scheme
CoveredScheme(X::AbsSpec) = CoveredScheme(Covering(X))
covered_scheme(X::AbsSpec) = CoveredScheme(X)

### Construct the empty covered scheme over the ring R
function empty_covered_scheme(R::RT) where {RT<:AbstractAlgebra.Ring}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -186,7 +186,7 @@ function ambient_embedding(X::AbsProjectiveScheme)
S = homogeneous_coordinate_ring(IP)
T = homogeneous_coordinate_ring(X)
I = defining_ideal(X)
pb = hom(S, T, gens(T))
pb = hom(S, T, gens(T); check=false)
inc_sub = ProjectiveSchemeMor(X, IP, pb, check=false)
return ProjectiveClosedEmbedding(inc_sub, I, check=false)
end
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,8 @@ with default covering
u = inv(OO(U_ij)(denom))
mor_dict[U_ij] = morphism(U_ij, V_j,
hom(OO(V_j), OO(U_ij),
[OO(U_ij)(dehom(pbf(gen(SY, k))))*u for k in 1:ngens(SY) if k != j]
[OO(U_ij)(dehom(pbf(gen(SY, k))))*u for k in 1:ngens(SY) if k != j];
check=false
)
)
end
Expand Down Expand Up @@ -120,11 +121,11 @@ function pushforward(inc::ProjectiveClosedEmbedding, M::FreeMod)
S = codomain(f)
T = domain(f)
S === base_ring(M) || error("rings do not match")
FT = graded_free_module(T, [degree(a) for a in gens(M)])
FT = graded_free_module(T, [_degree_fast(a) for a in gens(M)])
I = image_ideal(inc)
IFT, inc_IFT = I*FT
MT = cokernel(inc_IFT)
id = hom(MT, M, gens(M), f)
id = hom(MT, M, gens(M), f; check=false)
return MT, id
end

Expand All @@ -141,7 +142,7 @@ function pushforward(inc::ProjectiveClosedEmbedding, M::SubquoModule)
G, inc_G = sub(FT, vcat(gT, relT))
Q, inc_Q = sub(G, gens(G)[length(gT)+1:end])
MT = cokernel(inc_Q)
id = hom(MT, M, vcat(gens(M), elem_type(M)[zero(M) for i in 1:length(relT)]))
id = hom(MT, M, vcat(gens(M), elem_type(M)[zero(M) for i in 1:length(relT)]); check=false)
return MT, id
end

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -533,10 +533,10 @@ function relative_euler_sequence(X::AbsProjectiveScheme{<:Ring, <:MPolyRing})
S = homogeneous_coordinate_ring(X)::MPolyDecRing
W1 = kaehler_differentials(S)
W0 = kaehler_differentials(S, 0)
theta = hom(W1, W0, [x*W0[1] for x in gens(S)])
theta = hom(W1, W0, [x*W0[1] for x in gens(S)]; check=false)
W, inc = kernel(theta)
Z = graded_free_module(S, 0)
inc_Z = hom(Z, W, elem_type(W)[])
inc_Z = hom(Z, W, elem_type(W)[]; check=false)
comp = ComplexOfMorphisms(ModuleFP, [inc_Z, inc, theta], typ=:cochain, seed = -1)
return comp
end
Expand Down Expand Up @@ -578,10 +578,10 @@ function relative_cotangent_module(X::AbsProjectiveScheme{<:Ring, <:MPolyQuoRing

SP = homogeneous_coordinate_ring(P)
F = graded_free_module(SP, degree.(f))
jac = hom(F, eu[1], df)
jac = hom(F, eu[1], df; check=false)
jac_res = _change_base_ring_and_preserve_gradings(phi, jac, codomain_change = res_Omega1)
img_gens = [preimage(inc_W1X, jac_res(x)) for x in gens(domain(jac_res))]
psi = hom(domain(jac_res), W1X, img_gens)
psi = hom(domain(jac_res), W1X, img_gens; check=false)
return cokernel(psi)
end

Loading