Skip to content

Conversation

@jankoboehm
Copy link
Contributor

Make the generic modules work over the integers and fields. Also singles out the abstraction layer for the backend of the generic modules. The respective functions have atomic in their name. In a second iteration, the implementations of the atomic functions will be moved to separate files, and documentation of the abstraction layer will be added.

@codecov
Copy link

codecov bot commented May 21, 2025

Codecov Report

Attention: Patch coverage is 84.53608% with 30 lines in your changes missing coverage. Please review.

Project coverage is 84.89%. Comparing base (ef8b41c) to head (e7f069e).
Report is 1 commits behind head on master.

Files with missing lines Patch % Lines
src/Modules/UngradedModules/FreeResolutions.jl 20.00% 8 Missing ⚠️
src/Modules/UngradedModules/Methods.jl 0.00% 6 Missing ⚠️
src/Modules/UngradedModules/ModuleGens.jl 72.72% 6 Missing ⚠️
...al/InjectiveResolutions/src/ModuleFunctionality.jl 87.87% 4 Missing ⚠️
src/Modules/UngradedModules/FreeModuleHom.jl 87.50% 2 Missing ⚠️
src/Modules/UngradedModules/Presentation.jl 97.70% 2 Missing ⚠️
...c/Modules/UngradedModules/SubModuleOfFreeModule.jl 89.47% 2 Missing ⚠️
Additional details and impacted files
@@           Coverage Diff            @@
##           master    #4915    +/-   ##
========================================
  Coverage   84.88%   84.89%            
========================================
  Files         697      697            
  Lines       94040    94203   +163     
========================================
+ Hits        79823    79970   +147     
- Misses      14217    14233    +16     
Files with missing lines Coverage Δ
...l/InjectiveResolutions/src/InjectiveResolutions.jl 93.86% <ø> (ø)
src/Modules/UngradedModules/FreeMod.jl 87.78% <100.00%> (+0.09%) ⬆️
src/Modules/UngradedModules/FreeModuleHom.jl 93.78% <87.50%> (+0.25%) ⬆️
src/Modules/UngradedModules/Presentation.jl 96.81% <97.70%> (+0.54%) ⬆️
...c/Modules/UngradedModules/SubModuleOfFreeModule.jl 69.02% <89.47%> (+0.91%) ⬆️
...al/InjectiveResolutions/src/ModuleFunctionality.jl 83.00% <87.87%> (+0.52%) ⬆️
src/Modules/UngradedModules/Methods.jl 87.82% <0.00%> (-1.39%) ⬇️
src/Modules/UngradedModules/ModuleGens.jl 77.67% <72.72%> (-0.38%) ⬇️
src/Modules/UngradedModules/FreeResolutions.jl 82.08% <20.00%> (+0.38%) ⬆️

... and 2 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@jankoboehm jankoboehm force-pushed the intfieldmodules branch 5 times, most recently from 4182ba5 to 34998f3 Compare June 3, 2025 17:46
@HechtiDerLachs
Copy link
Collaborator

Touched upon during triage. @jankoboehm still wants to add one more functions and then this will be ready for review.

Eventually @jankoboehm and @HechtiDerLachs will look into designing a solve context for the sparse setting. Currently this uses the dense version provided by @thofma and @joschmitt . But this is for another PR to come (and probably picks up some of the stuff in #3969 ).

@jankoboehm jankoboehm marked this pull request as ready for review June 6, 2025 06:47
```

```@docs
size(M::SubquoModule{T}) where {T<:Union{ZZRingElem, FieldElem}}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

stupid question, but: should we use size for this, given that it has a specific meaning in Julia already?

This is why we used order for groups or finite fields instead of size, even though e.g. GAP uses Size primarily (with Order "just" an alias. That said, order is somewhat common as terminology for groups and finite field, but I don't think it is usual for e.g. modules?

If we decide size is a good fit, then perhaps we should ponder whether to also allow it for fields and groups as an alias to order, simply for user convenience / easier discoverability...

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am also fine with order and it is a better fit. a Shall we change it?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Of course there are also orders in number theory, so I think we should keep size as it is.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this meanwhile settled?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am OK with using size here but it would be good if @thofma and @fieker could briefly chime in

if task == :via_transform
std, _ = lift_std(M)
return coordinates_via_transform(a, std)
return coordinates_via_transform(a, std)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
return coordinates_via_transform(a, std)
return coordinates_via_transform(a, std)

Copy link
Member

@fingolfin fingolfin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In principle seems OK to me, left some minor nitpicks as comments

@HechtiDerLachs
Copy link
Collaborator

HechtiDerLachs commented Jun 13, 2025

Timings for the local cohomology test suite:

With this PR:

Test Summary:                  | Pass  Total     Time
first local cohomology example |    9      9  2m01.7s
Test Summary:      | Pass  Total     Time
hartshorne example |    6      6  2m39.6s
Test Summary:              | Pass  Total   Time
local cohomology of module |    1      1  58.1s

On master:

julia> include("experimental/InjectiveResolutions/test/local_cohomology.jl")
Test Summary:                  | Pass  Total     Time
first local cohomology example |    9      9  2m05.5s
Test Summary:      | Pass  Total     Time
hartshorne example |    6      6  2m46.1s
Test Summary:              | Pass  Total     Time
local cohomology of module |    1      1  1m02.1s

So these changes seem to be fine from the point of view of performance.

@jankoboehm jankoboehm added the release notes: to be added PRs introducing changes that should be (but have not yet been) mentioned in the release notes label Jun 18, 2025
@fingolfin fingolfin enabled auto-merge (squash) June 18, 2025 09:43
@fingolfin fingolfin changed the title Generic modules over the integers and fields Add support for generic modules over the integers and fields Jun 18, 2025
@fingolfin fingolfin added release notes: use title For PRs: the title of this PR is suitable for direct use in the release notes and removed release notes: to be added PRs introducing changes that should be (but have not yet been) mentioned in the release notes labels Jun 18, 2025
@fingolfin fingolfin merged commit 95b3c8d into oscar-system:master Jun 18, 2025
35 of 40 checks passed
@lgoettgens lgoettgens removed the triage label Jun 25, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

release notes: use title For PRs: the title of this PR is suitable for direct use in the release notes topic: commutative algebra

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants