Skip to content

Continuous-time Pauli propagation: real-space adaptive Lindbladian evolution#181

Open
AlexSchuckert wants to merge 8 commits into
split/1-translation-symmetryfrom
split/2-ctpp-core
Open

Continuous-time Pauli propagation: real-space adaptive Lindbladian evolution#181
AlexSchuckert wants to merge 8 commits into
split/1-translation-symmetryfrom
split/2-ctpp-core

Conversation

@AlexSchuckert

Copy link
Copy Markdown
Collaborator

PR 2 of 4 splitting #178 (stacked on #180). Full history: branch continuous-time-pauli-propagation.

The core CTPP method: direct Heisenberg-picture evolution O ← exp(dt·L*) O of Pauli observables under a Lindbladian, on an adaptively truncated Pauli-string basis. Exact in dt within the working basis — no Trotter splitting; the only approximation is truncation.

  • ppvm-lindblad crate: LindbladSpec precompiles Hermitian-Pauli jumps (fast diagonal path) and general complex Pauli-sum jumps (σ±/amplitude damping via a precomputed L†L expansion). pc_step = two-hop leakage enrichment + predictor/corrector matrix-free exponential (cached-CSC columns fed to quspin-expm, MIT-licensed pin; Al-Mohy–Higham Taylor partition selection with a truncation-matched relaxed table). Truncation policy in one PcStepConfig: max_basis rank cap (primary dial), admit_basis working-set bound (displacement truncation), drop_tol prune, tau_add admission filter.
  • Python: ppvm.Lindbladian with a numpy-array hot path plus string-keyed convenience API; mimalloc as the extension's global allocator (~50% peak-RSS reduction on the allocation-heavy adaptive paths); two jupytext demos.
  • Tests: action/generator/leakage against dense-Liouvillian and Pauli-table references; adaptive-evolution convergence to a closed bilinear solution; pc_step pinned against numpy.linalg.eig; O(dt³) per-step scaling of the predictor-corrector.

Benchmarks backing the design choices (190× vs Trotter at L=21 matched accuracy; external cross-validation vs Begušić & Chan, PRX Quantum 6, 020302 at L=41): ledgers arrive in PR 4 of the stack.

The translation-symmetric (momentum-sector) variant follows in PR 3.

🤖 Generated with Claude Code

…daptive Lindbladian evolution

Direct Heisenberg-picture evolution O ← exp(dt·L*)O on an adaptively
truncated Pauli-string basis: exact in dt within the working basis, no
Trotter splitting. LindbladSpec precompiles Hermitian-Pauli (fast
diagonal) and general complex Pauli-sum jumps (σ±, amplitude damping,
precomputed L†L); pc_step does two-hop leakage enrichment + predictor/
corrector matrix-free exponential via quspin-expm (MIT), with the
truncation policy in one PcStepConfig (max_basis rank cap, admit_basis
displacement bound, drop_tol prune, tau_add admission filter).

Python: ppvm.Lindbladian with numpy hot path + string convenience API,
mimalloc global allocator (~50% peak-RSS cut on adaptive paths), two
jupytext demos, tests against dense-Liouvillian / closed-form / eig
references.

Split 2/4 of the CTPP work; the momentum-sector (orbit-rep) evolution
follows in split 3. Full history: branch continuous-time-pauli-propagation.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Jul 16, 2026

Copy link
Copy Markdown
PR Preview Action v1.8.1

QR code for preview link

🚀 View preview at
https://QuEraComputing.github.io/ppvm/pr-preview/pr-181/

Built to branch gh-pages at 2026-07-16 14:58 UTC.
Preview will be ready when the GitHub Pages deployment is complete.

AlexSchuckert and others added 7 commits July 16, 2026 13:31
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ord) — cargo machete

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
bitvec implements BitStore for u64 only on 64-bit targets, so the
[u64; 2] word storage broke the wasm32 workspace build. The chunk type
is now target-gated: two u64 chunks on 64-bit targets (bit-identical to
before), four u32 chunks elsewhere — 128 qubits either way. The
chunk loops (anti_commutes / pauli_mul) were already width-agnostic.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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