Skip to content

Use Künneth for product bundle cohomology - #26

Draft
pbelmans wants to merge 10 commits into
mainfrom
feat/kunneth-bundle-cohomology
Draft

Use Künneth for product bundle cohomology#26
pbelmans wants to merge 10 commits into
mainfrom
feat/kunneth-bundle-cohomology

Conversation

@pbelmans

@pbelmans pbelmans commented Sep 1, 2026

Copy link
Copy Markdown
Member

Summary

  • recognize when a zero locus splits as a product from its defining data
  • recognize ambient presentations that are direct sums of external tensor products, independently of which constructors produced them
  • compute bundle cohomology by Künneth convolution when every factor is determined
  • fall back to the existing long-exact-sequence solver when recognition is ambiguous or factor cohomology remains symbolic
  • normalize one-step tangent filtrations so structural tangent recognition remains canonical
  • keep the exact degree-zero and specialized tangent paths ahead of general recognition
  • keep external-product construction separate from reverse structural recognition
  • recognize factor grids through exact matrix identities for additive degrees and multiplicative multiplicities
  • share graded-component reconstruction with ordinary FilteredBundle operations

New capability

For a quartic K3 surface S, main leaves external tangent constructions symbolic:

  • H*(T_S ⊠ T_S) = [400 + x₀ - x₁, x₀, x₁, 0, 0]
  • H*(T_S ⊞ T_S) = [-80 + x₀ - x₁ + x₂, x₀, x₁, x₂, 0]

This branch recognizes the factorization and determines:

  • H*(T_S ⊠ T_S) = [0, 0, 400, 0, 0]
  • H*(T_S ⊞ T_S) = [0, 40, 0, 40, 0]

The locus may be assembled directly from its defining bundles: no product provenance is stored. Bundle recognition likewise inspects only the current presentation terms.

Performance

Identical Julia and dependency versions, 500 cache-cold and 5,000 cache-warm evaluations per case:

Case main cold branch cold main warm branch warm main bytes branch bytes
irreducible tangent 0.194 ms 0.165 ms 0.0886 ms 0.0715 ms 96,968 84,432
product structure sheaf 0.273 ms 0.235 ms 0.0248 ms 0.00677 ms 32,632 16,120
external tangent tensor 0.791 ms 0.586 ms 0.428 ms 0.331 ms 541,096 327,984
external tangent sum 0.889 ms 0.597 ms 0.452 ms 0.350 ms 662,296 368,224
manual factorable bundle 0.211 ms 0.202 ms 0.0344 ms 0.0163 ms 37,976 21,464

Hodge and Hochschild algorithms are unchanged. On the Fano fourfold P¹ × Q³, both revisions return identical Hodge and Hochschild output; the warmed Hodge timings were 0.137 ms versus 0.134 ms.

The latest recognizer cleanup reduces an external tangent-product recognition from 118.3 to 91.4 μs and allocations from 97,584 to 76,528 bytes. Warmed cohomology drops from 279.0 to 229.0 μs and from 311,848 to 265,032 bytes. It also removes 40 lines from the branch overall rather than merely relocating the implementation.

Verification

  • 1,875 package tests pass
  • focused tests cover rectangular support, additive degrees, multiplicative multiplicities, connected components, repeated terms, mixed filtered factors, and conservative fallback
  • local executable-line coverage is 100% for src/Kunneth.jl
  • JuliaFormatter passes all tracked Julia files
  • documentation and doctests build successfully

@codecov

codecov Bot commented Sep 1, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant