Continuous-time Pauli propagation: real-space adaptive Lindbladian evolution#181
Open
AlexSchuckert wants to merge 8 commits into
Open
Continuous-time Pauli propagation: real-space adaptive Lindbladian evolution#181AlexSchuckert wants to merge 8 commits into
AlexSchuckert wants to merge 8 commits into
Conversation
…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>
This was referenced Jul 16, 2026
|
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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*) Oof Pauli observables under a Lindbladian, on an adaptively truncated Pauli-string basis. Exact indtwithin the working basis — no Trotter splitting; the only approximation is truncation.ppvm-lindbladcrate:LindbladSpecprecompiles 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 toquspin-expm, MIT-licensed pin; Al-Mohy–Higham Taylor partition selection with a truncation-matched relaxed table). Truncation policy in onePcStepConfig:max_basisrank cap (primary dial),admit_basisworking-set bound (displacement truncation),drop_tolprune,tau_addadmission filter.ppvm.Lindbladianwith a numpy-array hot path plus string-keyed convenience API;mimallocas the extension's global allocator (~50% peak-RSS reduction on the allocation-heavy adaptive paths); two jupytext demos.pc_steppinned againstnumpy.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