Skip to content

Add dual and isdual axis-duality generics#214

Merged
mtfishman merged 4 commits into
mainfrom
mf/dual-isdual-generics
Jul 24, 2026
Merged

Add dual and isdual axis-duality generics#214
mtfishman merged 4 commits into
mainfrom
mf/dual-isdual-generics

Conversation

@mtfishman

@mtfishman mtfishman commented Jul 24, 2026

Copy link
Copy Markdown
Member

Summary

Adds dual and isdual as TensorAlgebra-owned generics for querying and taking the dual of an axis, with AbstractUnitRange fallbacks (isdual returns false, dual returns the range unchanged) since an ordinary range has no distinct dual. The TensorAlgebraTensorKitExt extension routes both to TensorKit's own space duality. This makes TensorAlgebra the ecosystem home for these functions, so GradedArrays and ITensorBase can extend and re-export them instead of each owning its own copy. Those downstream methods will land in follow-up PRs.

## Summary

Adds `dual` and `isdual` as TensorAlgebra-owned generics for querying and reversing an axis's arrow, with `AbstractUnitRange` fallbacks (`isdual` returns `false`, `dual` returns the range unchanged) since an ordinary range has no arrow to reverse. The `TensorAlgebraTensorKitExt` extension routes both to TensorKit's own space duality. This makes TensorAlgebra the ecosystem home for these functions, so GradedArrays and ITensorBase can extend and re-export them instead of each owning its own copy. Those downstream methods will land in follow-up PRs.
@codecov

codecov Bot commented Jul 24, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 81.58%. Comparing base (be15b6c) to head (cae3515).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #214      +/-   ##
==========================================
- Coverage   81.61%   81.58%   -0.03%     
==========================================
  Files          26       27       +1     
  Lines         990      994       +4     
==========================================
+ Hits          808      811       +3     
- Misses        182      183       +1     
Flag Coverage Δ
docs 22.08% <0.00%> (-0.10%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

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

@mtfishman
mtfishman enabled auto-merge (squash) July 24, 2026 13:41
@mtfishman
mtfishman merged commit 4e8b0fa into main Jul 24, 2026
20 of 21 checks passed
@mtfishman
mtfishman deleted the mf/dual-isdual-generics branch July 24, 2026 13:52
mtfishman added a commit that referenced this pull request Jul 24, 2026
## Summary

Adds a `TensorAlgebraTensorKitSectorsExt` extension defining `dual` on a
TensorKitSectors sector (its charge conjugation). This is the
sector-level companion to the TensorKit space `dual` and `isdual`
overloads added in #214,
keeping all overloads of TensorAlgebra generics on TensorKitSectors
types in a dedicated extension. GradedArrays will drop its own sector
`dual` in favor of this one.
mtfishman added a commit to ITensor/GradedArrays.jl that referenced this pull request Jul 24, 2026
…ys' own (#219)

## Summary

GradedArrays now extends the `dual` and `isdual` generics owned by
TensorAlgebra (added in
ITensor/TensorAlgebra.jl#214) rather than
defining its own copies, and re-exports them. Its `SectorRange`,
`SectorOneTo`, and `GradedOneTo` methods become `TensorAlgebra.dual` /
`TensorAlgebra.isdual` overloads. The `dual` on a raw TensorKitSectors
sector moves to `TensorAlgebraTensorKitSectorsExt`
(ITensor/TensorAlgebra.jl#215) and `dual` on a
TensorKit `ElementarySpace` moves to `TensorAlgebraTensorKitExt`, so
both are dropped here. Bumps the TensorAlgebra compat floor to 0.17.9.
mtfishman added a commit to ITensor/ITensorBase.jl that referenced this pull request Jul 24, 2026
## Summary

Forwards the `dual` and `isdual` generics owned by TensorAlgebra (added
in ITensor/TensorAlgebra.jl#214) through
`NamedUnitRange`, so `isdual(index)` and `dual(index)` work directly on
an `Index` instead of reaching into the wrapped range. Mirrors the
existing `conj` forwarding. Bumps the TensorAlgebra compat floor to
0.17.8.
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