Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

qslib command line

The qslib command is a thin interface over the validated Rust kernels. It lets a physicist inspect conventions, validate a Hamiltonian, calculate a tiny exact ground state or evolution, run a small TFIM SSE demonstration, and inspect an artifact directory without writing Rust.

Build it locally from the repository root:

cargo build --release -p qslib-quantum-cli
target/release/qslib inspect conventions

Use --json for scripts and notebooks. Without it, the command prints one labelled field per line. Errors are written to stderr and return exit status 2. They identify the physical field or convention that failed validation.

Configuration conventions

Configuration files are YAML or JSON. Dense coupling matrices are square, symmetric, zero-diagonal arrays in canonical row-major site order. Each upper triangle entry is one resolved pair coefficient, including zero coefficients. basis names the simulation basis (z, x, or y where the model supports it), while physical observable axes remain separate concepts.

Every configuration must declare the versioned scientific contract. The CLI rejects unknown fields and rejects convention metadata that does not match the selected model basis:

schema_version: qslib-model-input-v1
conventions:
  schema: qslib-conventions-v1
  site_order: row_major
  byte_order: little_endian
  basis: z

JSON results include a provenance object with this schema, the resolved model family, basis, interaction count, and operator-term count. This makes a result inspectable without guessing which convention was used.

For TFIM,

[ H=-\sum_{i<j}J_{ij}\sigma_i^z\sigma_j^z-\sum_i h_i\sigma_i^x ]

when basis: z. fields therefore contains one transverse field per site. Heisenberg configurations use the same pair matrix and represent J_ij S_i . S_j with S = sigma/2. Rydberg configurations use omega and detuning arrays in addition to the pair matrix. J1-J2 configurations use lx, ly, j1, and j2, with optional open or periodic boundaries.

Commands

qslib inspect conventions [--json]
qslib inspect environment [--json]
qslib model validate CONFIG [--json]
qslib exact ground-state CONFIG [--json]
qslib exact evolve CONFIG --t-max TIME [--imaginary] [--json]
qslib sse run CONFIG [--json]
qslib artifacts inspect PATH [--json]
qslib conformance self-test [--json]

exact ground-state reports the total energy, exact-basis dimension, and the residual norm (|H|\psi\rangle-E|\psi\rangle|). Degenerate ground spaces should be interpreted through the energy and residual, not a phase-sensitive individual eigenvector. exact evolve starts from canonical basis state zero; real time uses (e^{-iHt}), and imaginary time uses the normalized (e^{-H\tau}) convention.

The SSE command is a small-system TFIM demonstration. It reports the mean energy per site across independent logical chains. It does not claim an autocorrelation-corrected confidence interval; production studies must choose thermalization, sweep, chain, and uncertainty controls for the physical question.

artifacts inspect PATH accepts a qslib Parquet dataset directory. It validates the versioned manifest, exact completion marker, immutable part checksums, and returns the configuration checksum and convention schema. A directory that only happens to contain a file named COMPLETE is rejected.

conformance self-test reports smoke_pass for one independent one-site TFIM matrix fixture. It is an installation smoke test, not a replacement for the full conformance suite run by CI.

Worked examples

cargo run -p qslib-quantum-cli -- model validate examples/heisenberg_disordered_4.yaml
cargo run -p qslib-quantum-cli -- exact ground-state examples/tfim_4.yaml
cargo run -p qslib-quantum-cli -- exact evolve examples/tfim_4.yaml --t-max 0.1
cargo run -p qslib-quantum-cli -- sse run examples/tfim_thermal_4.yaml

The examples are executed by the CLI integration tests. The Python equivalent uses the qslib_quantum import documented in python.md.