Skip to content

feat: add plev, TensorTrain, tensor contraction, diag utilities#29

Merged
shinaoka merged 7 commits intomainfrom
feat/combined
Apr 7, 2026
Merged

feat: add plev, TensorTrain, tensor contraction, diag utilities#29
shinaoka merged 7 commits intomainfrom
feat/combined

Conversation

@shinaoka
Copy link
Copy Markdown
Member

@shinaoka shinaoka commented Apr 7, 2026

Summary

  • Add prime level (plev) support to Index type
  • Add TensorTrain type alias + is_chain / _assert_chain runtime checks
  • Add contract(t1::Tensor, t2::Tensor) + * operator
  • Add is_mps_like / is_mpo_like runtime checkers
  • Add diag_embed / diag_trace for MPS-like ↔ MPO-like tensor manipulation

Depends on: tensor4all/tensor4all-rs#398 (plev + tensor contraction C API)

Changes

Prime level support

  • plev(i), prime(i), noprime(i), setprime(i, n) functions
  • ==, hash, sim include plev
  • commoninds, uniqueinds, replaceinds, hasind, hasinds are plev-aware
  • ITensors extension preserves plev in both conversion directions

TensorTrain alias

  • TensorTrain = TreeTensorNetwork{Int} (same type as MPS/MPO)
  • is_chain(ttn): runtime check for chain topology
  • _assert_chain(ttn): throws for non-chain

Tensor contraction

  • contract(t1::Tensor, t2::Tensor): via t4a_tensor_contract C API
  • t1 * t2 operator

Utility functions

  • is_mps_like(tt): each vertex has 1 site index
  • is_mpo_like(tt): each vertex has 2 site indices
  • diag_embed(t, idx): duplicate idx as primed copy (diagonal)
  • diag_trace(t, idx, idx'): extract diagonal

Test plan

  • Index plev tests: 39/39 pass
  • ITensors extension: 26/26 pass
  • TreeTN tests: 121/121 pass
  • Tensor contraction + diag tests pass

🤖 Generated with Claude Code

shinaoka and others added 5 commits April 7, 2026 11:21
Add plev across the Julia wrapper:
- C_API.jl: t4a_index_get_plev, t4a_index_set_plev, t4a_index_prime wrappers
- Tensor4all.jl: plev(), prime(), noprime(), setprime() functions
- Updated ==, hash, sim, show to include plev
- commoninds/uniqueinds/replaceinds/hasind/hasinds now plev-aware
- ITensors extension preserves plev in both conversion directions
- Tests for all plev functionality

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- TensorTrain = TreeTensorNetwork{Int} (same type as MPS/MPO)
- is_chain(ttn): runtime check for chain topology
  - Int variant: verifies vertices are 1:n with sequential connectivity
  - Generic variant: checks path graph properties (degree ≤ 2, connected)
- _assert_chain(ttn): throws ArgumentError for non-chain topology
- Tests: 121/121 TreeTN tests pass

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- contract(t1::Tensor, t2::Tensor): tensor-tensor contraction via C API
- t1 * t2 operator for tensors
- is_mps_like(tt): check each vertex has 1 site index
- is_mpo_like(tt): check each vertex has 2 site indices
- diag_embed(t, idx): duplicate idx as primed copy (MPS→MPO-like)
- diag_trace(t, idx, idx'): extract diagonal (MPO→MPS-like)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@shinaoka shinaoka enabled auto-merge April 7, 2026 04:28
shinaoka and others added 2 commits April 7, 2026 13:59
Update TENSOR4ALL_RS_FALLBACK_COMMIT to latest main which includes
plev support and t4a_tensor_contract C API.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@shinaoka shinaoka merged commit 8d7c27c into main Apr 7, 2026
4 checks passed
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