symq 0.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- symq-0.2.0/.gitattributes +3 -0
- symq-0.2.0/.github/CODEOWNERS +3 -0
- symq-0.2.0/.github/ISSUE_TEMPLATE/config.yml +5 -0
- symq-0.2.0/.github/ISSUE_TEMPLATE/correctness.yml +57 -0
- symq-0.2.0/.github/ISSUE_TEMPLATE/feature.yml +23 -0
- symq-0.2.0/.github/ISSUE_TEMPLATE/question.yml +15 -0
- symq-0.2.0/.github/PULL_REQUEST_TEMPLATE.md +33 -0
- symq-0.2.0/.github/dependabot.yml +22 -0
- symq-0.2.0/.github/workflows/affine-basis-study.yml +54 -0
- symq-0.2.0/.github/workflows/affine-phase.yml +45 -0
- symq-0.2.0/.github/workflows/affine-target-table.yml +45 -0
- symq-0.2.0/.github/workflows/anchored-kraus.yml +36 -0
- symq-0.2.0/.github/workflows/backward-ancilla.yml +50 -0
- symq-0.2.0/.github/workflows/channel-certificates.yml +48 -0
- symq-0.2.0/.github/workflows/ci.yml +262 -0
- symq-0.2.0/.github/workflows/cut-invariants.yml +48 -0
- symq-0.2.0/.github/workflows/double-isolated-miter.yml +44 -0
- symq-0.2.0/.github/workflows/formal-runtime-cnf.yml +58 -0
- symq-0.2.0/.github/workflows/hmr-table-contract.yml +38 -0
- symq-0.2.0/.github/workflows/isolated-miter-worker.yml +38 -0
- symq-0.2.0/.github/workflows/lean-phase-proofs.yml +59 -0
- symq-0.2.0/.github/workflows/nightly.yml +117 -0
- symq-0.2.0/.github/workflows/nonlinear-phase-bits.yml +46 -0
- symq-0.2.0/.github/workflows/phase-adaptive.yml +43 -0
- symq-0.2.0/.github/workflows/phase-delta-binding.yml +53 -0
- symq-0.2.0/.github/workflows/phase-discovery.yml +41 -0
- symq-0.2.0/.github/workflows/phase-factored.yml +50 -0
- symq-0.2.0/.github/workflows/phase-quotient.yml +48 -0
- symq-0.2.0/.github/workflows/phase-separator.yml +47 -0
- symq-0.2.0/.github/workflows/portable-phase-proofs.yml +77 -0
- symq-0.2.0/.github/workflows/qiskit-transpiler-pilot.yml +74 -0
- symq-0.2.0/.github/workflows/release.yml +308 -0
- symq-0.2.0/.github/workflows/research.yml +135 -0
- symq-0.2.0/.github/workflows/shift-diagonal-ancilla.yml +71 -0
- symq-0.2.0/.github/workflows/streaming-kraus.yml +46 -0
- symq-0.2.0/.github/workflows/table-xor-contract.yml +53 -0
- symq-0.2.0/.github/workflows/table-xor-public-api.yml +40 -0
- symq-0.2.0/.gitignore +23 -0
- symq-0.2.0/AGENTS.md +12 -0
- symq-0.2.0/CHANGELOG.md +701 -0
- symq-0.2.0/CITATION.cff +23 -0
- symq-0.2.0/CODE_OF_CONDUCT.md +34 -0
- symq-0.2.0/CONTRIBUTING.md +91 -0
- symq-0.2.0/LICENSE +21 -0
- symq-0.2.0/PKG-INFO +321 -0
- symq-0.2.0/README.md +259 -0
- symq-0.2.0/RELEASING.md +127 -0
- symq-0.2.0/SECURITY.md +49 -0
- symq-0.2.0/THIRD_PARTY_NOTICES.md +49 -0
- symq-0.2.0/benchmarks/README.md +120 -0
- symq-0.2.0/benchmarks/__init__.py +1 -0
- symq-0.2.0/benchmarks/affine_basis.py +316 -0
- symq-0.2.0/benchmarks/affine_basis_cases.py +135 -0
- symq-0.2.0/benchmarks/affine_basis_operations.py +191 -0
- symq-0.2.0/benchmarks/affine_basis_summary.py +146 -0
- symq-0.2.0/benchmarks/affine_phase.py +343 -0
- symq-0.2.0/benchmarks/affine_table.py +150 -0
- symq-0.2.0/benchmarks/anchored_kraus.py +232 -0
- symq-0.2.0/benchmarks/anchored_stream.py +144 -0
- symq-0.2.0/benchmarks/backward_ancilla.py +255 -0
- symq-0.2.0/benchmarks/bilinear_kmb.py +164 -0
- symq-0.2.0/benchmarks/bitset_degree.py +60 -0
- symq-0.2.0/benchmarks/channel_certificate.py +226 -0
- symq-0.2.0/benchmarks/classical_cones.py +151 -0
- symq-0.2.0/benchmarks/comparative.py +405 -0
- symq-0.2.0/benchmarks/comparative_manifest.json +194 -0
- symq-0.2.0/benchmarks/comparative_report.py +144 -0
- symq-0.2.0/benchmarks/comparative_worker.py +280 -0
- symq-0.2.0/benchmarks/corpus/kickmix/LICENSE-APACHE-2.0 +202 -0
- symq-0.2.0/benchmarks/corpus/kickmix/MANIFEST.json +46 -0
- symq-0.2.0/benchmarks/corpus/kickmix/README.md +16 -0
- symq-0.2.0/benchmarks/corpus/kickmix/cmul16_mod_21.kmx +77 -0
- symq-0.2.0/benchmarks/corpus/kickmix/iadd8_qc_2clean_6dirty.kmx +163 -0
- symq-0.2.0/benchmarks/corpus/kickmix/inc3.kmx +6 -0
- symq-0.2.0/benchmarks/corpus/kickmix/inc8.kmx +45 -0
- symq-0.2.0/benchmarks/corpus/kickmix/mul16_mod_21.kmx +688 -0
- symq-0.2.0/benchmarks/corpus/kickmix/qft_measurement.kmx +29 -0
- symq-0.2.0/benchmarks/corpus/qcec/5xp1_194.qasm +90 -0
- symq-0.2.0/benchmarks/corpus/qcec/C7552_205.qasm +85 -0
- symq-0.2.0/benchmarks/corpus/qcec/LICENSE_QCEC.txt +22 -0
- symq-0.2.0/benchmarks/corpus/qcec/MANIFEST.json +412 -0
- symq-0.2.0/benchmarks/corpus/qcec/README.md +11 -0
- symq-0.2.0/benchmarks/corpus/qcec/add6_196.qasm +234 -0
- symq-0.2.0/benchmarks/corpus/qcec/alu1_198.qasm +37 -0
- symq-0.2.0/benchmarks/corpus/qcec/apla_203.qasm +85 -0
- symq-0.2.0/benchmarks/corpus/qcec/c2_181.qasm +121 -0
- symq-0.2.0/benchmarks/corpus/qcec/c2_182.qasm +310 -0
- symq-0.2.0/benchmarks/corpus/qcec/cm150a_210.qasm +58 -0
- symq-0.2.0/benchmarks/corpus/qcec/cm151a_211.qasm +38 -0
- symq-0.2.0/benchmarks/corpus/qcec/cm163a_213.qasm +44 -0
- symq-0.2.0/benchmarks/corpus/qcec/cu_219.qasm +45 -0
- symq-0.2.0/benchmarks/corpus/qcec/dk17_224.qasm +54 -0
- symq-0.2.0/benchmarks/corpus/qcec/dk27_225.qasm +29 -0
- symq-0.2.0/benchmarks/corpus/qcec/example2_231.qasm +162 -0
- symq-0.2.0/benchmarks/corpus/qcec/mlp4_245.qasm +136 -0
- symq-0.2.0/benchmarks/corpus/qcec/mod5adder_306.qasm +115 -0
- symq-0.2.0/benchmarks/corpus/qcec/pcler8_248.qasm +27 -0
- symq-0.2.0/benchmarks/corpus/qcec/rd73_312.qasm +81 -0
- symq-0.2.0/benchmarks/corpus/qcec/rd84_313.qasm +118 -0
- symq-0.2.0/benchmarks/corpus/qcec/sym9_317.qasm +69 -0
- symq-0.2.0/benchmarks/corpus/qsyn/LICENSE-APACHE-2.0 +202 -0
- symq-0.2.0/benchmarks/corpus/qsyn/NOTICE.txt +17 -0
- symq-0.2.0/benchmarks/corpus/qualtran/LICENSE-APACHE-2.0 +203 -0
- symq-0.2.0/benchmarks/corpus/qualtran/README.md +68 -0
- symq-0.2.0/benchmarks/corpus/qualtran/gf2mul_mbuc_m1.json +237 -0
- symq-0.2.0/benchmarks/corpus/qualtran/gf2mul_mbuc_m2.json +402 -0
- symq-0.2.0/benchmarks/corpus/qualtran/rewrite/MANIFEST.json +28 -0
- symq-0.2.0/benchmarks/corpus/qualtran/rewrite/m1-full-missing_correction/replacement.json +29 -0
- symq-0.2.0/benchmarks/corpus/qualtran/rewrite/m1-full-missing_correction/request.json +47 -0
- symq-0.2.0/benchmarks/corpus/qualtran/rewrite/m1-full-missing_correction/source.json +54 -0
- symq-0.2.0/benchmarks/corpus/qualtran/rewrite/m1-full-none/replacement.json +40 -0
- symq-0.2.0/benchmarks/corpus/qualtran/rewrite/m1-full-none/request.json +47 -0
- symq-0.2.0/benchmarks/corpus/qualtran/rewrite/m1-full-none/source.json +54 -0
- symq-0.2.0/benchmarks/corpus/qualtran/rewrite/m2-full-missing_correction/replacement.json +141 -0
- symq-0.2.0/benchmarks/corpus/qualtran/rewrite/m2-full-missing_correction/request.json +53 -0
- symq-0.2.0/benchmarks/corpus/qualtran/rewrite/m2-full-missing_correction/source.json +170 -0
- symq-0.2.0/benchmarks/corpus/qualtran/rewrite/m2-full-none/replacement.json +152 -0
- symq-0.2.0/benchmarks/corpus/qualtran/rewrite/m2-full-none/request.json +53 -0
- symq-0.2.0/benchmarks/corpus/qualtran/rewrite/m2-full-none/source.json +170 -0
- symq-0.2.0/benchmarks/corpus/veriq/LICENSE-MIT +21 -0
- symq-0.2.0/benchmarks/corpus/veriq/NOTICE.txt +18 -0
- symq-0.2.0/benchmarks/cut_invariants.py +186 -0
- symq-0.2.0/benchmarks/environment.py +117 -0
- symq-0.2.0/benchmarks/gf24_basis_scan.py +90 -0
- symq-0.2.0/benchmarks/gf24_order_search.py +150 -0
- symq-0.2.0/benchmarks/gf24_tower_qualification.py +110 -0
- symq-0.2.0/benchmarks/historical/handoff_2026-10-27.json +29 -0
- symq-0.2.0/benchmarks/hmr_qualification.py +459 -0
- symq-0.2.0/benchmarks/hmr_qualification_manifest.json +90 -0
- symq-0.2.0/benchmarks/hmr_table_contract.py +203 -0
- symq-0.2.0/benchmarks/import_qcec.py +110 -0
- symq-0.2.0/benchmarks/indexed_substitution.py +119 -0
- symq-0.2.0/benchmarks/kmb.py +131 -0
- symq-0.2.0/benchmarks/kmb_affine_resources.py +80 -0
- symq-0.2.0/benchmarks/kmb_reset_cache.py +76 -0
- symq-0.2.0/benchmarks/kmb_resource_frontier.py +111 -0
- symq-0.2.0/benchmarks/kmx_source_index.py +119 -0
- symq-0.2.0/benchmarks/lean_phase_proofs.py +308 -0
- symq-0.2.0/benchmarks/nonlinear_phase_bits.py +64 -0
- symq-0.2.0/benchmarks/paired.py +135 -0
- symq-0.2.0/benchmarks/phase_adaptive.py +161 -0
- symq-0.2.0/benchmarks/phase_delta_binding.py +235 -0
- symq-0.2.0/benchmarks/phase_discovery.py +106 -0
- symq-0.2.0/benchmarks/phase_factored.py +155 -0
- symq-0.2.0/benchmarks/phase_quotient.py +212 -0
- symq-0.2.0/benchmarks/phase_separator.py +123 -0
- symq-0.2.0/benchmarks/phase_separator_frontier.py +96 -0
- symq-0.2.0/benchmarks/phase_separator_source.py +92 -0
- symq-0.2.0/benchmarks/portable_phase_proofs.py +130 -0
- symq-0.2.0/benchmarks/qiskit_rewrite_benchmark.py +116 -0
- symq-0.2.0/benchmarks/qiskit_transpiler_pilot.py +101 -0
- symq-0.2.0/benchmarks/quick.py +187 -0
- symq-0.2.0/benchmarks/report.py +285 -0
- symq-0.2.0/benchmarks/reset_cache.py +68 -0
- symq-0.2.0/benchmarks/rewrite_cli.py +120 -0
- symq-0.2.0/benchmarks/rewrite_kmb_context.py +262 -0
- symq-0.2.0/benchmarks/rewrite_qualtran_hmr.py +190 -0
- symq-0.2.0/benchmarks/roadmap_campaign.py +319 -0
- symq-0.2.0/benchmarks/roadmap_manifest.json +19 -0
- symq-0.2.0/benchmarks/run.py +340 -0
- symq-0.2.0/benchmarks/shift_diagonal_ancilla.py +321 -0
- symq-0.2.0/benchmarks/substitution_crosscheck.py +184 -0
- symq-0.2.0/benchmarks/substitution_manifest.json +237 -0
- symq-0.2.0/benchmarks/substitution_qualification.md +96 -0
- symq-0.2.0/benchmarks/substitution_qualification.py +591 -0
- symq-0.2.0/benchmarks/substitution_worker.py +18 -0
- symq-0.2.0/benchmarks/table_xor_contract.py +140 -0
- symq-0.2.0/docs/architecture.md +130 -0
- symq-0.2.0/docs/archive-index.md +90 -0
- symq-0.2.0/docs/audit/2026-11-03-next-wave-independent-review.md +355 -0
- symq-0.2.0/docs/audit/2026-11-04-next-wave-integration-decision.md +77 -0
- symq-0.2.0/docs/audit/formal_runtime_169.md +60 -0
- symq-0.2.0/docs/audit/research_159_162.md +40 -0
- symq-0.2.0/docs/demo.md +132 -0
- symq-0.2.0/docs/evidence/2026-11-03-compiler-handoff-seed.md +133 -0
- symq-0.2.0/docs/evidence/2026-11-03-miter-cnf-pilot.md +55 -0
- symq-0.2.0/docs/evidence/2026-11-03-miter-proof-c1.md +122 -0
- symq-0.2.0/docs/evidence/2026-11-03-qiskit-timing-qualification.md +81 -0
- symq-0.2.0/docs/evidence/2026-11-03-qiskit-transpiler-pilot.md +114 -0
- symq-0.2.0/docs/evidence/2026-11-03-reset-affine-pilot.md +127 -0
- symq-0.2.0/docs/evidence/2026-11-04-bounded-miter-encoding.md +77 -0
- symq-0.2.0/docs/evidence/2026-11-04-double-isolated-miter.md +189 -0
- symq-0.2.0/docs/evidence/2026-11-04-isolated-miter-worker.md +98 -0
- symq-0.2.0/docs/evidence/affine-target-table-2026-11-02.md +64 -0
- symq-0.2.0/docs/evidence/comparative-pilot-2026-11-01.md +94 -0
- symq-0.2.0/docs/evidence/data/2026-10-31/SHA256SUMS +16 -0
- symq-0.2.0/docs/evidence/data/2026-10-31/round1/dev-base.json +809 -0
- symq-0.2.0/docs/evidence/data/2026-10-31/round1/dev-head.json +809 -0
- symq-0.2.0/docs/evidence/data/2026-10-31/round1/extension-base.json +1275 -0
- symq-0.2.0/docs/evidence/data/2026-10-31/round1/extension-head.json +1275 -0
- symq-0.2.0/docs/evidence/data/2026-10-31/round1/holdout-base.json +967 -0
- symq-0.2.0/docs/evidence/data/2026-10-31/round1/holdout-head.json +967 -0
- symq-0.2.0/docs/evidence/data/2026-10-31/round1/synthetic-base.json +933 -0
- symq-0.2.0/docs/evidence/data/2026-10-31/round1/synthetic-head.json +933 -0
- symq-0.2.0/docs/evidence/data/2026-10-31/round2/dev-base.json +809 -0
- symq-0.2.0/docs/evidence/data/2026-10-31/round2/dev-head.json +809 -0
- symq-0.2.0/docs/evidence/data/2026-10-31/round2/extension-base.json +1275 -0
- symq-0.2.0/docs/evidence/data/2026-10-31/round2/extension-head.json +1275 -0
- symq-0.2.0/docs/evidence/data/2026-10-31/round2/holdout-base.json +967 -0
- symq-0.2.0/docs/evidence/data/2026-10-31/round2/holdout-head.json +967 -0
- symq-0.2.0/docs/evidence/data/2026-10-31/round2/synthetic-base.json +933 -0
- symq-0.2.0/docs/evidence/data/2026-10-31/round2/synthetic-head.json +933 -0
- symq-0.2.0/docs/evidence/data/2026-11-01/SHA256SUMS +2 -0
- symq-0.2.0/docs/evidence/data/2026-11-01/coverage.json +3740 -0
- symq-0.2.0/docs/evidence/data/2026-11-01/paired.json +8009 -0
- symq-0.2.0/docs/evidence/external-baselines.md +152 -0
- symq-0.2.0/docs/evidence/formal-runtime-20261103.md +69 -0
- symq-0.2.0/docs/evidence/formal-runtime-20261103b.md +55 -0
- symq-0.2.0/docs/evidence/formal-runtime-20261103c.md +107 -0
- symq-0.2.0/docs/evidence/hmr-qualification-2026-10-30.md +164 -0
- symq-0.2.0/docs/evidence/lean-kernel-phase-proofs-2026-11-03.md +79 -0
- symq-0.2.0/docs/evidence/nonlinear-phase-bits-2026-11-02.md +38 -0
- symq-0.2.0/docs/evidence/performance-2026-10-31.md +172 -0
- symq-0.2.0/docs/evidence/phase-adaptive-2026-11-02.md +116 -0
- symq-0.2.0/docs/evidence/phase-discovery-2026-11-02.md +48 -0
- symq-0.2.0/docs/evidence/phase-factored-2026-11-02.md +106 -0
- symq-0.2.0/docs/evidence/phase-feature-strategies-2026-11-02.md +126 -0
- symq-0.2.0/docs/evidence/qcec-findings-2026-10-27.md +89 -0
- symq-0.2.0/docs/evidence/roadmap-evidence.md +108 -0
- symq-0.2.0/docs/evidence/roadmap-status.md +61 -0
- symq-0.2.0/docs/evidence/strategy.md +48 -0
- symq-0.2.0/docs/getting-started.md +114 -0
- symq-0.2.0/docs/glossary.md +71 -0
- symq-0.2.0/docs/guide/affine-basis-study.md +281 -0
- symq-0.2.0/docs/guide/affine-phase.md +227 -0
- symq-0.2.0/docs/guide/affine-resources.md +113 -0
- symq-0.2.0/docs/guide/backends.md +144 -0
- symq-0.2.0/docs/guide/backward-ancilla.md +198 -0
- symq-0.2.0/docs/guide/channel-certificates.md +185 -0
- symq-0.2.0/docs/guide/classical-cones.md +205 -0
- symq-0.2.0/docs/guide/cut-invariants.md +249 -0
- symq-0.2.0/docs/guide/experimental-composition.md +167 -0
- symq-0.2.0/docs/guide/experimental-phases.md +156 -0
- symq-0.2.0/docs/guide/experimental.md +82 -0
- symq-0.2.0/docs/guide/gf2n-synthesis.md +158 -0
- symq-0.2.0/docs/guide/hmr-table-contract.md +237 -0
- symq-0.2.0/docs/guide/indexed-substitution.md +162 -0
- symq-0.2.0/docs/guide/kickmix-windows.md +97 -0
- symq-0.2.0/docs/guide/kmb-binary-windows.md +115 -0
- symq-0.2.0/docs/guide/kmb-resource-frontier.md +108 -0
- symq-0.2.0/docs/guide/kmb-source-index.md +76 -0
- symq-0.2.0/docs/guide/kmx-source-index.md +204 -0
- symq-0.2.0/docs/guide/phase-delta-binding.md +204 -0
- symq-0.2.0/docs/guide/phase-quotient.md +221 -0
- symq-0.2.0/docs/guide/proof-contracts.md +78 -0
- symq-0.2.0/docs/guide/reset-cache.md +173 -0
- symq-0.2.0/docs/guide/resources.md +72 -0
- symq-0.2.0/docs/guide/rewrite-bricks.md +166 -0
- symq-0.2.0/docs/guide/rewrite.md +452 -0
- symq-0.2.0/docs/guide/sat.md +138 -0
- symq-0.2.0/docs/guide/shared-affine-tables.md +96 -0
- symq-0.2.0/docs/guide/shift-diagonal-ancilla.md +277 -0
- symq-0.2.0/docs/guide/table-xor-contract.md +199 -0
- symq-0.2.0/docs/guide/table-xor-public-api.md +81 -0
- symq-0.2.0/docs/index.md +146 -0
- symq-0.2.0/docs/labs/README.md +24 -0
- symq-0.2.0/docs/labs/affine-hmr-portable.md +114 -0
- symq-0.2.0/docs/labs/affine-lift-reuse.md +205 -0
- symq-0.2.0/docs/labs/affine-target-tables.md +137 -0
- symq-0.2.0/docs/labs/bitset-degree.md +87 -0
- symq-0.2.0/docs/labs/formal-runtime-soundness.md +210 -0
- symq-0.2.0/docs/labs/hmr-repair.md +100 -0
- symq-0.2.0/docs/labs/lean-kernel-proofs.md +153 -0
- symq-0.2.0/docs/labs/nonlinear-phase-bits.md +83 -0
- symq-0.2.0/docs/labs/phase-adaptive.md +118 -0
- symq-0.2.0/docs/labs/phase-degree-bound.md +103 -0
- symq-0.2.0/docs/labs/phase-discovery.md +71 -0
- symq-0.2.0/docs/labs/phase-factored.md +83 -0
- symq-0.2.0/docs/labs/phase-source-seeds.md +67 -0
- symq-0.2.0/docs/labs/portable-phase-proofs.md +144 -0
- symq-0.2.0/docs/labs/research-outlook-20261102.md +155 -0
- symq-0.2.0/docs/labs/site-resources.md +175 -0
- symq-0.2.0/docs/labs/streaming-kraus.md +113 -0
- symq-0.2.0/docs/maintainers/release-checklist.md +144 -0
- symq-0.2.0/docs/plans/2026-11-01-substitution-roadmap.md +142 -0
- symq-0.2.0/docs/reference/api-core.md +1025 -0
- symq-0.2.0/docs/reference/phase-hmr-spec.md +102 -0
- symq-0.2.0/docs/stability.md +133 -0
- symq-0.2.0/examples/README.md +36 -0
- symq-0.2.0/examples/classical_equivalence.py +21 -0
- symq-0.2.0/examples/contextual_substitution.py +49 -0
- symq-0.2.0/examples/experimental/candidate.json +32 -0
- symq-0.2.0/examples/experimental/contract.json +9 -0
- symq-0.2.0/examples/experimental/mutant.json +24 -0
- symq-0.2.0/examples/experimental/reference.json +7 -0
- symq-0.2.0/examples/gf24_rewrite.py +24 -0
- symq-0.2.0/examples/hybrid_substitution.py +35 -0
- symq-0.2.0/examples/import_circuits.py +29 -0
- symq-0.2.0/examples/locate/reference.json +21 -0
- symq-0.2.0/examples/locate/source.json +34 -0
- symq-0.2.0/examples/prepare/candidate.json +5 -0
- symq-0.2.0/examples/prepare/contract.json +1 -0
- symq-0.2.0/examples/prepare/original.json +22 -0
- symq-0.2.0/examples/prepare/source.json +35 -0
- symq-0.2.0/examples/prepare/weights.json +10 -0
- symq-0.2.0/examples/public_demo.py +75 -0
- symq-0.2.0/examples/rewrite/replacement.json +30 -0
- symq-0.2.0/examples/rewrite/request.json +16 -0
- symq-0.2.0/examples/rewrite/source.qasm +7 -0
- symq-0.2.0/examples/rewrite_bricks/clean_product.json +325 -0
- symq-0.2.0/examples/sat_contract.py +18 -0
- symq-0.2.0/examples/search_loop.py +18 -0
- symq-0.2.0/examples/table_xor/contract.json +37 -0
- symq-0.2.0/examples/table_xor/linear.json +27 -0
- symq-0.2.0/examples/table_xor/selector.json +62 -0
- symq-0.2.0/examples/wide_and_blocks.py +17 -0
- symq-0.2.0/formal/portable_lrat/GateContracts.lean +38 -0
- symq-0.2.0/formal/portable_lrat/GateLemmas.lean +35 -0
- symq-0.2.0/formal/portable_lrat/lake-manifest.json +7 -0
- symq-0.2.0/formal/portable_lrat/lakefile.lean +5 -0
- symq-0.2.0/formal/portable_lrat/lean-toolchain +1 -0
- symq-0.2.0/formal/symq_runtime/AcyclicDAG.lean +954 -0
- symq-0.2.0/formal/symq_runtime/Contracts.lean +383 -0
- symq-0.2.0/formal/symq_runtime/GateCNF.lean +132 -0
- symq-0.2.0/formal/symq_runtime/GraphRewrites.lean +79 -0
- symq-0.2.0/formal/symq_runtime/PhaseBits.lean +71 -0
- symq-0.2.0/formal/symq_runtime/lake-manifest.json +7 -0
- symq-0.2.0/formal/symq_runtime/lakefile.lean +8 -0
- symq-0.2.0/formal/symq_runtime/lean-toolchain +1 -0
- symq-0.2.0/hatch_build.py +81 -0
- symq-0.2.0/pyproject.toml +156 -0
- symq-0.2.0/src/symq/__init__.py +100 -0
- symq-0.2.0/src/symq/__main__.py +732 -0
- symq-0.2.0/src/symq/_io.py +30 -0
- symq-0.2.0/src/symq/_native_hint.py +53 -0
- symq-0.2.0/src/symq/anf.py +101 -0
- symq-0.2.0/src/symq/backends/__init__.py +102 -0
- symq-0.2.0/src/symq/backends/_zdd.c +3042 -0
- symq-0.2.0/src/symq/backends/adaptive.py +215 -0
- symq-0.2.0/src/symq/backends/base.py +197 -0
- symq-0.2.0/src/symq/backends/linear.py +129 -0
- symq-0.2.0/src/symq/backends/packed.py +290 -0
- symq-0.2.0/src/symq/backends/reference.py +56 -0
- symq-0.2.0/src/symq/backends/sparse.py +111 -0
- symq-0.2.0/src/symq/backends/truthtable.py +90 -0
- symq-0.2.0/src/symq/backends/zdd.py +309 -0
- symq-0.2.0/src/symq/backends/zdd_native.py +450 -0
- symq-0.2.0/src/symq/circuit.py +356 -0
- symq-0.2.0/src/symq/corpus.py +100 -0
- symq-0.2.0/src/symq/doctor.py +156 -0
- symq-0.2.0/src/symq/equivalence.py +278 -0
- symq-0.2.0/src/symq/errors.py +63 -0
- symq-0.2.0/src/symq/experimental/__init__.py +40 -0
- symq-0.2.0/src/symq/experimental/api.py +229 -0
- symq-0.2.0/src/symq/experimental/blocks.py +398 -0
- symq-0.2.0/src/symq/experimental/capabilities.py +214 -0
- symq-0.2.0/src/symq/experimental/channel.py +465 -0
- symq-0.2.0/src/symq/experimental/contracts.py +121 -0
- symq-0.2.0/src/symq/experimental/domains.py +321 -0
- symq-0.2.0/src/symq/experimental/execution.py +362 -0
- symq-0.2.0/src/symq/experimental/hybrid.py +748 -0
- symq-0.2.0/src/symq/experimental/prepared.py +231 -0
- symq-0.2.0/src/symq/experimental/profiling.py +177 -0
- symq-0.2.0/src/symq/experimental/serialization.py +149 -0
- symq-0.2.0/src/symq/experimental/table_xor.py +597 -0
- symq-0.2.0/src/symq/external/__init__.py +64 -0
- symq-0.2.0/src/symq/external/cudd.py +190 -0
- symq-0.2.0/src/symq/external/polybori.py +82 -0
- symq-0.2.0/src/symq/external/qcec.py +75 -0
- symq-0.2.0/src/symq/facade.py +109 -0
- symq-0.2.0/src/symq/generators/__init__.py +89 -0
- symq-0.2.0/src/symq/generators/arithmetic.py +104 -0
- symq-0.2.0/src/symq/generators/bilinear_factors.py +187 -0
- symq-0.2.0/src/symq/generators/bilinear_optimization.py +232 -0
- symq-0.2.0/src/symq/generators/gf2n.py +487 -0
- symq-0.2.0/src/symq/hashing.py +24 -0
- symq-0.2.0/src/symq/kickmix.py +245 -0
- symq-0.2.0/src/symq/labs/__init__.py +62 -0
- symq-0.2.0/src/symq/labs/_isolated_miter_verifier.py +92 -0
- symq-0.2.0/src/symq/labs/_isolated_miter_worker.py +67 -0
- symq-0.2.0/src/symq/labs/affine_basis_study.py +629 -0
- symq-0.2.0/src/symq/labs/affine_hmr_portable.py +443 -0
- symq-0.2.0/src/symq/labs/affine_phase.py +595 -0
- symq-0.2.0/src/symq/labs/affine_table.py +201 -0
- symq-0.2.0/src/symq/labs/anchored_kraus.py +385 -0
- symq-0.2.0/src/symq/labs/anchored_stream.py +319 -0
- symq-0.2.0/src/symq/labs/backward_ancilla.py +498 -0
- symq-0.2.0/src/symq/labs/bilinear_substitution.py +121 -0
- symq-0.2.0/src/symq/labs/bitset_anf.py +218 -0
- symq-0.2.0/src/symq/labs/channel_certificate.py +519 -0
- symq-0.2.0/src/symq/labs/channel_composition.py +464 -0
- symq-0.2.0/src/symq/labs/classical_cone.py +600 -0
- symq-0.2.0/src/symq/labs/classical_transcript.py +237 -0
- symq-0.2.0/src/symq/labs/contextual_substitution.py +454 -0
- symq-0.2.0/src/symq/labs/corpus_qualification.py +452 -0
- symq-0.2.0/src/symq/labs/cut_invariants.py +685 -0
- symq-0.2.0/src/symq/labs/cyclotomic.py +412 -0
- symq-0.2.0/src/symq/labs/dyadic_phase.py +310 -0
- symq-0.2.0/src/symq/labs/finite_domain.py +182 -0
- symq-0.2.0/src/symq/labs/gf24_choice.py +82 -0
- symq-0.2.0/src/symq/labs/gf24_order.py +61 -0
- symq-0.2.0/src/symq/labs/gf24_tower.py +216 -0
- symq-0.2.0/src/symq/labs/hmr_repair.py +220 -0
- symq-0.2.0/src/symq/labs/hmr_table_contract.py +498 -0
- symq-0.2.0/src/symq/labs/hybrid_substitution.py +292 -0
- symq-0.2.0/src/symq/labs/importers.py +269 -0
- symq-0.2.0/src/symq/labs/indexed_substitution.py +379 -0
- symq-0.2.0/src/symq/labs/isolated_miter.py +394 -0
- symq-0.2.0/src/symq/labs/isolated_miter_supervisor.py +288 -0
- symq-0.2.0/src/symq/labs/kmb_affine_resources.py +293 -0
- symq-0.2.0/src/symq/labs/kmb_reset_cache.py +358 -0
- symq-0.2.0/src/symq/labs/kmb_resource_frontier.py +360 -0
- symq-0.2.0/src/symq/labs/kmb_source_index.py +238 -0
- symq-0.2.0/src/symq/labs/kmb_window.py +541 -0
- symq-0.2.0/src/symq/labs/kmx_source_index.py +528 -0
- symq-0.2.0/src/symq/labs/kmx_window.py +236 -0
- symq-0.2.0/src/symq/labs/kraus_graph.py +201 -0
- symq-0.2.0/src/symq/labs/ledger.py +178 -0
- symq-0.2.0/src/symq/labs/linear_certificate.py +42 -0
- symq-0.2.0/src/symq/labs/lrat_export.py +215 -0
- symq-0.2.0/src/symq/labs/lrat_lean.py +155 -0
- symq-0.2.0/src/symq/labs/lrat_rup.py +256 -0
- symq-0.2.0/src/symq/labs/miter_cnf.py +280 -0
- symq-0.2.0/src/symq/labs/miter_proof_bundle.py +228 -0
- symq-0.2.0/src/symq/labs/nonlinear_phase_bits.py +170 -0
- symq-0.2.0/src/symq/labs/phase_adaptive.py +285 -0
- symq-0.2.0/src/symq/labs/phase_delta_binding.py +387 -0
- symq-0.2.0/src/symq/labs/phase_discovery.py +328 -0
- symq-0.2.0/src/symq/labs/phase_factored.py +355 -0
- symq-0.2.0/src/symq/labs/phase_proof_bundle.py +289 -0
- symq-0.2.0/src/symq/labs/phase_quotient.py +437 -0
- symq-0.2.0/src/symq/labs/phase_separator.py +149 -0
- symq-0.2.0/src/symq/labs/proof_graph.py +433 -0
- symq-0.2.0/src/symq/labs/qasm3.py +187 -0
- symq-0.2.0/src/symq/labs/qcec_adapter.py +114 -0
- symq-0.2.0/src/symq/labs/qualtran.py +91 -0
- symq-0.2.0/src/symq/labs/rename.py +219 -0
- symq-0.2.0/src/symq/labs/reset_cache.py +244 -0
- symq-0.2.0/src/symq/labs/reset_support.py +324 -0
- symq-0.2.0/src/symq/labs/rewrite.py +310 -0
- symq-0.2.0/src/symq/labs/rewrite_bricks.py +345 -0
- symq-0.2.0/src/symq/labs/rewrite_engine.py +105 -0
- symq-0.2.0/src/symq/labs/rewrite_locator.py +154 -0
- symq-0.2.0/src/symq/labs/rewrite_prepare.py +267 -0
- symq-0.2.0/src/symq/labs/rewrite_request.py +441 -0
- symq-0.2.0/src/symq/labs/shared_table.py +258 -0
- symq-0.2.0/src/symq/labs/shift_diagonal_ancilla.py +391 -0
- symq-0.2.0/src/symq/labs/site_resources.py +510 -0
- symq-0.2.0/src/symq/labs/table_xor_contract.py +22 -0
- symq-0.2.0/src/symq/labs/verification_contracts.py +478 -0
- symq-0.2.0/src/symq/labs/xag.py +398 -0
- symq-0.2.0/src/symq/order.py +83 -0
- symq-0.2.0/src/symq/phase.py +401 -0
- symq-0.2.0/src/symq/phase_oracle.py +57 -0
- symq-0.2.0/src/symq/py.typed +0 -0
- symq-0.2.0/src/symq/qasm.py +243 -0
- symq-0.2.0/src/symq/resources.py +278 -0
- symq-0.2.0/src/symq/sat/__init__.py +47 -0
- symq-0.2.0/src/symq/sat/_solve.py +68 -0
- symq-0.2.0/src/symq/sat/assumptions.py +297 -0
- symq-0.2.0/src/symq/sat/composition.py +766 -0
- symq-0.2.0/src/symq/sat/encoding.py +348 -0
- symq-0.2.0/src/symq/sat/miter.py +272 -0
- symq-0.2.0/src/symq/strategy.py +200 -0
- symq-0.2.0/src/symq/verification.py +251 -0
- symq-0.2.0/tests/conftest.py +231 -0
- symq-0.2.0/tests/data/api_snapshot.json +3663 -0
- symq-0.2.0/tests/data/archived_engine_outputs.json +51 -0
- symq-0.2.0/tests/data/table_xor_qualification/A_anf.contract.json +44 -0
- symq-0.2.0/tests/data/table_xor_qualification/A_anf.source.json +55 -0
- symq-0.2.0/tests/data/table_xor_qualification/A_clean_read_ok.contract.json +44 -0
- symq-0.2.0/tests/data/table_xor_qualification/A_clean_read_ok.source.json +62 -0
- symq-0.2.0/tests/data/table_xor_qualification/A_dontcare.contract.json +44 -0
- symq-0.2.0/tests/data/table_xor_qualification/A_dontcare.source.json +89 -0
- symq-0.2.0/tests/data/table_xor_qualification/A_illegal_row_changed.contract.json +44 -0
- symq-0.2.0/tests/data/table_xor_qualification/A_illegal_row_changed.source.json +252 -0
- symq-0.2.0/tests/data/table_xor_qualification/A_minterm_clean.contract.json +44 -0
- symq-0.2.0/tests/data/table_xor_qualification/A_minterm_clean.source.json +252 -0
- symq-0.2.0/tests/data/table_xor_qualification/A_mut_addr_order.contract.json +44 -0
- symq-0.2.0/tests/data/table_xor_qualification/A_mut_addr_order.source.json +55 -0
- symq-0.2.0/tests/data/table_xor_qualification/A_mut_cell.contract.json +44 -0
- symq-0.2.0/tests/data/table_xor_qualification/A_mut_cell.source.json +55 -0
- symq-0.2.0/tests/data/table_xor_qualification/A_mut_dirty_clean_read.contract.json +43 -0
- symq-0.2.0/tests/data/table_xor_qualification/A_mut_dirty_clean_read.source.json +62 -0
- symq-0.2.0/tests/data/table_xor_qualification/A_mut_legal_widened.contract.json +47 -0
- symq-0.2.0/tests/data/table_xor_qualification/A_mut_legal_widened.source.json +252 -0
- symq-0.2.0/tests/data/table_xor_qualification/A_mut_omitted_update.contract.json +44 -0
- symq-0.2.0/tests/data/table_xor_qualification/A_mut_omitted_update.source.json +49 -0
- symq-0.2.0/tests/data/table_xor_qualification/A_mut_tgt_order.contract.json +44 -0
- symq-0.2.0/tests/data/table_xor_qualification/A_mut_tgt_order.source.json +55 -0
- symq-0.2.0/tests/data/table_xor_qualification/B_dirty_temps.contract.json +45 -0
- symq-0.2.0/tests/data/table_xor_qualification/B_dirty_temps.source.json +138 -0
- symq-0.2.0/tests/data/table_xor_qualification/B_full_theorem_classical.contract.json +45 -0
- symq-0.2.0/tests/data/table_xor_qualification/B_full_theorem_classical.source.json +138 -0
- symq-0.2.0/tests/data/table_xor_qualification/B_mut_borrowed_unrestored.contract.json +45 -0
- symq-0.2.0/tests/data/table_xor_qualification/B_mut_borrowed_unrestored.source.json +130 -0
- symq-0.2.0/tests/data/table_xor_qualification/C_mut_slot_swap.contract.json +39 -0
- symq-0.2.0/tests/data/table_xor_qualification/C_mut_slot_swap.source.json +66 -0
- symq-0.2.0/tests/data/table_xor_qualification/C_per_slot_contract.contract.json +39 -0
- symq-0.2.0/tests/data/table_xor_qualification/C_per_slot_contract.source.json +66 -0
- symq-0.2.0/tests/data/table_xor_qualification/C_two_tables.contract.json +39 -0
- symq-0.2.0/tests/data/table_xor_qualification/C_two_tables.source.json +66 -0
- symq-0.2.0/tests/data/table_xor_qualification/D_mut_post_relation.contract.json +42 -0
- symq-0.2.0/tests/data/table_xor_qualification/D_mut_post_relation.source.json +70 -0
- symq-0.2.0/tests/data/table_xor_qualification/D_mut_widened.contract.json +38 -0
- symq-0.2.0/tests/data/table_xor_qualification/D_mut_widened.source.json +69 -0
- symq-0.2.0/tests/data/table_xor_qualification/D_post_relation_ok.contract.json +42 -0
- symq-0.2.0/tests/data/table_xor_qualification/D_post_relation_ok.source.json +69 -0
- symq-0.2.0/tests/data/table_xor_qualification/D_restricted_ok.contract.json +42 -0
- symq-0.2.0/tests/data/table_xor_qualification/D_restricted_ok.source.json +69 -0
- symq-0.2.0/tests/data/table_xor_qualification/E_anf.contract.json +36 -0
- symq-0.2.0/tests/data/table_xor_qualification/E_anf.source.json +31 -0
- symq-0.2.0/tests/data/table_xor_qualification/E_mut_cell.contract.json +36 -0
- symq-0.2.0/tests/data/table_xor_qualification/E_mut_cell.source.json +31 -0
- symq-0.2.0/tests/data/table_xor_qualification/F_large_borrowed.contract.json +48 -0
- symq-0.2.0/tests/data/table_xor_qualification/F_large_borrowed.source.json +27 -0
- symq-0.2.0/tests/data/table_xor_qualification/G_alias.contract.json +45 -0
- symq-0.2.0/tests/data/table_xor_qualification/G_alias.source.json +55 -0
- symq-0.2.0/tests/data/table_xor_qualification/G_empty_legal.contract.json +38 -0
- symq-0.2.0/tests/data/table_xor_qualification/G_empty_legal.source.json +55 -0
- symq-0.2.0/tests/data/table_xor_qualification/G_truncated_table.contract.json +43 -0
- symq-0.2.0/tests/data/table_xor_qualification/G_truncated_table.source.json +55 -0
- symq-0.2.0/tests/data/table_xor_qualification/manifest.json +196 -0
- symq-0.2.0/tests/fixtures/kmb_v2_8_qubit_adder.hex +57 -0
- symq-0.2.0/tests/fixtures/kmb_v2_three_qubit_incrementer.hex +15 -0
- symq-0.2.0/tests/test_adders.py +101 -0
- symq-0.2.0/tests/test_affine_basis_qualification.py +169 -0
- symq-0.2.0/tests/test_affine_basis_study.py +527 -0
- symq-0.2.0/tests/test_affine_hmr_portable.py +291 -0
- symq-0.2.0/tests/test_affine_phase.py +420 -0
- symq-0.2.0/tests/test_affine_phase_qualification.py +144 -0
- symq-0.2.0/tests/test_affine_table.py +167 -0
- symq-0.2.0/tests/test_affine_table_independent.py +64 -0
- symq-0.2.0/tests/test_anchored_independent.py +35 -0
- symq-0.2.0/tests/test_anchored_kraus.py +75 -0
- symq-0.2.0/tests/test_anchored_provenance.py +18 -0
- symq-0.2.0/tests/test_anchored_stream.py +153 -0
- symq-0.2.0/tests/test_anf.py +38 -0
- symq-0.2.0/tests/test_api_snapshot.py +404 -0
- symq-0.2.0/tests/test_archived_parity.py +46 -0
- symq-0.2.0/tests/test_audit_regressions.py +193 -0
- symq-0.2.0/tests/test_backends.py +296 -0
- symq-0.2.0/tests/test_backward_ancilla.py +351 -0
- symq-0.2.0/tests/test_backward_ancilla_qualification.py +156 -0
- symq-0.2.0/tests/test_bilinear_contextual_integration.py +104 -0
- symq-0.2.0/tests/test_bilinear_kmb.py +74 -0
- symq-0.2.0/tests/test_bilinear_optimization.py +121 -0
- symq-0.2.0/tests/test_bitset_degree3_research.py +129 -0
- symq-0.2.0/tests/test_block_equivalence.py +183 -0
- symq-0.2.0/tests/test_build_native.py +392 -0
- symq-0.2.0/tests/test_cache_growth.py +84 -0
- symq-0.2.0/tests/test_capability_boundaries.py +151 -0
- symq-0.2.0/tests/test_channel_certificate.py +395 -0
- symq-0.2.0/tests/test_channel_certificate_qualification.py +108 -0
- symq-0.2.0/tests/test_channel_criterion.py +159 -0
- symq-0.2.0/tests/test_channel_oracle.py +134 -0
- symq-0.2.0/tests/test_ci_workflow.py +326 -0
- symq-0.2.0/tests/test_circuit.py +31 -0
- symq-0.2.0/tests/test_circuit_contract.py +93 -0
- symq-0.2.0/tests/test_classical_cone.py +393 -0
- symq-0.2.0/tests/test_cli_check.py +214 -0
- symq-0.2.0/tests/test_cli_rewrite_json.py +103 -0
- symq-0.2.0/tests/test_comparative.py +171 -0
- symq-0.2.0/tests/test_composition.py +858 -0
- symq-0.2.0/tests/test_contextual_substitution.py +513 -0
- symq-0.2.0/tests/test_continuous_simulation.py +111 -0
- symq-0.2.0/tests/test_corpus.py +80 -0
- symq-0.2.0/tests/test_cross_engine.py +355 -0
- symq-0.2.0/tests/test_cudd_lifetime.py +42 -0
- symq-0.2.0/tests/test_cut_invariants.py +485 -0
- symq-0.2.0/tests/test_cyclotomic_modular_zero.py +63 -0
- symq-0.2.0/tests/test_deadline_inheritance.py +66 -0
- symq-0.2.0/tests/test_doctor.py +88 -0
- symq-0.2.0/tests/test_equivalence.py +211 -0
- symq-0.2.0/tests/test_evidence.py +157 -0
- symq-0.2.0/tests/test_examples.py +21 -0
- symq-0.2.0/tests/test_exclusive_profile.py +136 -0
- symq-0.2.0/tests/test_experimental_api.py +262 -0
- symq-0.2.0/tests/test_experimental_cli.py +112 -0
- symq-0.2.0/tests/test_experimental_domains.py +98 -0
- symq-0.2.0/tests/test_experimental_execution.py +47 -0
- symq-0.2.0/tests/test_experimental_hybrid.py +171 -0
- symq-0.2.0/tests/test_experimental_phases.py +298 -0
- symq-0.2.0/tests/test_experimental_prepared_audit.py +91 -0
- symq-0.2.0/tests/test_experimental_serialization.py +98 -0
- symq-0.2.0/tests/test_external.py +141 -0
- symq-0.2.0/tests/test_facade.py +89 -0
- symq-0.2.0/tests/test_factored.py +206 -0
- symq-0.2.0/tests/test_finite_domain_research.py +111 -0
- symq-0.2.0/tests/test_forgetful_channel_maps_research.py +178 -0
- symq-0.2.0/tests/test_formal_axioms.py +197 -0
- symq-0.2.0/tests/test_formal_flat_cnf.py +167 -0
- symq-0.2.0/tests/test_formal_graph_rewrites.py +68 -0
- symq-0.2.0/tests/test_formal_graph_snapshot.py +150 -0
- symq-0.2.0/tests/test_formal_phase_bits.py +43 -0
- symq-0.2.0/tests/test_formal_runtime_contract.py +95 -0
- symq-0.2.0/tests/test_generators.py +64 -0
- symq-0.2.0/tests/test_gf24_rewrite.py +143 -0
- symq-0.2.0/tests/test_gf24_tower.py +153 -0
- symq-0.2.0/tests/test_hashing.py +52 -0
- symq-0.2.0/tests/test_hmr_block_soundness.py +672 -0
- symq-0.2.0/tests/test_hmr_channel_cost.py +328 -0
- symq-0.2.0/tests/test_hmr_contract.py +320 -0
- symq-0.2.0/tests/test_hmr_feedback_research.py +111 -0
- symq-0.2.0/tests/test_hmr_field_mac_research.py +113 -0
- symq-0.2.0/tests/test_hmr_native_channel_research.py +121 -0
- symq-0.2.0/tests/test_hmr_qualification.py +91 -0
- symq-0.2.0/tests/test_hmr_superposition.py +63 -0
- symq-0.2.0/tests/test_hmr_table_contract.py +364 -0
- symq-0.2.0/tests/test_hybrid_channel_research.py +361 -0
- symq-0.2.0/tests/test_hybrid_phase_stream_research.py +142 -0
- symq-0.2.0/tests/test_hybrid_substitution.py +444 -0
- symq-0.2.0/tests/test_hybrid_substitution_independent_kraus.py +158 -0
- symq-0.2.0/tests/test_importer_robustness.py +423 -0
- symq-0.2.0/tests/test_indexed_substitution.py +297 -0
- symq-0.2.0/tests/test_isolated_miter_audit.py +187 -0
- symq-0.2.0/tests/test_isolated_miter_supervisor.py +346 -0
- symq-0.2.0/tests/test_isolated_miter_worker.py +196 -0
- symq-0.2.0/tests/test_isolated_typed_ipc.py +113 -0
- symq-0.2.0/tests/test_kickmix.py +184 -0
- symq-0.2.0/tests/test_kmb_affine_resources.py +325 -0
- symq-0.2.0/tests/test_kmb_reset_cache.py +190 -0
- symq-0.2.0/tests/test_kmb_reset_cache_publication.py +108 -0
- symq-0.2.0/tests/test_kmb_reset_cache_replay_io.py +81 -0
- symq-0.2.0/tests/test_kmb_resource_frontier.py +253 -0
- symq-0.2.0/tests/test_kmb_resource_frontier_optional.py +25 -0
- symq-0.2.0/tests/test_kmb_snapshot.py +152 -0
- symq-0.2.0/tests/test_kmb_source_index.py +183 -0
- symq-0.2.0/tests/test_kmb_window.py +417 -0
- symq-0.2.0/tests/test_kmx_source_index.py +273 -0
- symq-0.2.0/tests/test_kmx_window.py +195 -0
- symq-0.2.0/tests/test_kmx_window_audit.py +80 -0
- symq-0.2.0/tests/test_kraus_graph.py +123 -0
- symq-0.2.0/tests/test_labs_review_regressions.py +289 -0
- symq-0.2.0/tests/test_linear_backend.py +66 -0
- symq-0.2.0/tests/test_liveness.py +99 -0
- symq-0.2.0/tests/test_liveness_exact.py +163 -0
- symq-0.2.0/tests/test_lrat_adversarial.py +180 -0
- symq-0.2.0/tests/test_lrat_export.py +135 -0
- symq-0.2.0/tests/test_lrat_lean.py +200 -0
- symq-0.2.0/tests/test_lrat_rup.py +171 -0
- symq-0.2.0/tests/test_miter_cnf.py +140 -0
- symq-0.2.0/tests/test_miter_encoding_limits.py +191 -0
- symq-0.2.0/tests/test_miter_proof_bundle.py +270 -0
- symq-0.2.0/tests/test_native_collection.py +145 -0
- symq-0.2.0/tests/test_native_fault_injection.py +282 -0
- symq-0.2.0/tests/test_native_fuzz.py +353 -0
- symq-0.2.0/tests/test_native_hint.py +110 -0
- symq-0.2.0/tests/test_native_integration_audit.py +100 -0
- symq-0.2.0/tests/test_native_limits.py +194 -0
- symq-0.2.0/tests/test_native_roadmap.py +293 -0
- symq-0.2.0/tests/test_nonlinear_phase_bits.py +106 -0
- symq-0.2.0/tests/test_nonlinear_phase_independent.py +41 -0
- symq-0.2.0/tests/test_order_policy.py +127 -0
- symq-0.2.0/tests/test_packaging.py +58 -0
- symq-0.2.0/tests/test_phase.py +188 -0
- symq-0.2.0/tests/test_phase8_external.py +73 -0
- symq-0.2.0/tests/test_phase8_research.py +249 -0
- symq-0.2.0/tests/test_phase_adaptive.py +224 -0
- symq-0.2.0/tests/test_phase_adaptive_completion.py +111 -0
- symq-0.2.0/tests/test_phase_delta_binding.py +571 -0
- symq-0.2.0/tests/test_phase_delta_binding_qualification.py +125 -0
- symq-0.2.0/tests/test_phase_discovery.py +167 -0
- symq-0.2.0/tests/test_phase_discovery_adversarial.py +93 -0
- symq-0.2.0/tests/test_phase_factored.py +227 -0
- symq-0.2.0/tests/test_phase_independent_cohort.py +51 -0
- symq-0.2.0/tests/test_phase_proof_bundle.py +179 -0
- symq-0.2.0/tests/test_phase_quotient.py +353 -0
- symq-0.2.0/tests/test_phase_quotient_qualification.py +111 -0
- symq-0.2.0/tests/test_phase_revocation.py +75 -0
- symq-0.2.0/tests/test_phase_separator.py +87 -0
- symq-0.2.0/tests/test_phase_separator_frontier.py +36 -0
- symq-0.2.0/tests/test_phase_separator_integration.py +132 -0
- symq-0.2.0/tests/test_phase_separator_source.py +109 -0
- symq-0.2.0/tests/test_product_identities.py +96 -0
- symq-0.2.0/tests/test_public_api.py +175 -0
- symq-0.2.0/tests/test_public_compiler_rewrite.py +187 -0
- symq-0.2.0/tests/test_public_demo.py +32 -0
- symq-0.2.0/tests/test_public_docs.py +107 -0
- symq-0.2.0/tests/test_public_docstrings.py +185 -0
- symq-0.2.0/tests/test_public_qualification.py +22 -0
- symq-0.2.0/tests/test_pypi_readme.py +165 -0
- symq-0.2.0/tests/test_qasm.py +71 -0
- symq-0.2.0/tests/test_qcec_crosscheck.py +270 -0
- symq-0.2.0/tests/test_qiskit_transpiler_pilot.py +147 -0
- symq-0.2.0/tests/test_qiskit_workflow_hardening.py +39 -0
- symq-0.2.0/tests/test_qualtran_channel.py +30 -0
- symq-0.2.0/tests/test_qualtran_import.py +87 -0
- symq-0.2.0/tests/test_quantum_composition.py +393 -0
- symq-0.2.0/tests/test_quick_bench.py +95 -0
- symq-0.2.0/tests/test_release_check.py +583 -0
- symq-0.2.0/tests/test_release_text.py +108 -0
- symq-0.2.0/tests/test_release_workflow.py +294 -0
- symq-0.2.0/tests/test_reset_cache.py +146 -0
- symq-0.2.0/tests/test_reset_support.py +316 -0
- symq-0.2.0/tests/test_rewrite_bricks.py +386 -0
- symq-0.2.0/tests/test_rewrite_cli.py +290 -0
- symq-0.2.0/tests/test_rewrite_engine.py +193 -0
- symq-0.2.0/tests/test_rewrite_initial_assumption.py +319 -0
- symq-0.2.0/tests/test_rewrite_kmb_context.py +82 -0
- symq-0.2.0/tests/test_rewrite_locator.py +167 -0
- symq-0.2.0/tests/test_rewrite_prepare.py +309 -0
- symq-0.2.0/tests/test_rewrite_prepare_publication.py +296 -0
- symq-0.2.0/tests/test_rewrite_qualtran_hmr.py +54 -0
- symq-0.2.0/tests/test_roadmap_campaign.py +21 -0
- symq-0.2.0/tests/test_sat_availability.py +45 -0
- symq-0.2.0/tests/test_sat_encoding_deadline.py +322 -0
- symq-0.2.0/tests/test_sat_equivalence.py +318 -0
- symq-0.2.0/tests/test_sat_timeout.py +290 -0
- symq-0.2.0/tests/test_shared_table.py +144 -0
- symq-0.2.0/tests/test_shift_diagonal_ancilla.py +245 -0
- symq-0.2.0/tests/test_shift_diagonal_qualification.py +205 -0
- symq-0.2.0/tests/test_site_resources.py +407 -0
- symq-0.2.0/tests/test_stability.py +40 -0
- symq-0.2.0/tests/test_stack106_112_adversarial.py +114 -0
- symq-0.2.0/tests/test_strategy.py +195 -0
- symq-0.2.0/tests/test_substitution_qualification.py +103 -0
- symq-0.2.0/tests/test_table_xor_contract.py +461 -0
- symq-0.2.0/tests/test_table_xor_predicates.py +218 -0
- symq-0.2.0/tests/test_table_xor_public.py +88 -0
- symq-0.2.0/tests/test_temporal_transcript_research.py +140 -0
- symq-0.2.0/tests/test_tiers.py +90 -0
- symq-0.2.0/tests/test_timing_marker.py +118 -0
- symq-0.2.0/tests/test_tower_factors.py +127 -0
- symq-0.2.0/tests/test_transcript_deadlines.py +208 -0
- symq-0.2.0/tests/test_verification_contracts.py +679 -0
- symq-0.2.0/tests/test_verification_portfolio.py +302 -0
- symq-0.2.0/tests/test_verification_session.py +55 -0
- symq-0.2.0/tests/test_worker_cleanup.py +303 -0
- symq-0.2.0/tests/test_xag_decompositions.py +432 -0
- symq-0.2.0/tests/test_zdd_native.py +717 -0
- symq-0.2.0/tests/testkit/__init__.py +6 -0
- symq-0.2.0/tests/testkit/affine_basis_oracle.py +101 -0
- symq-0.2.0/tests/testkit/affine_loader_cases.py +80 -0
- symq-0.2.0/tests/testkit/affine_phase_oracle.py +56 -0
- symq-0.2.0/tests/testkit/continuous.py +94 -0
- symq-0.2.0/tests/testkit/factored_channel.py +224 -0
- symq-0.2.0/tests/testkit/field_hmr_reference.py +114 -0
- symq-0.2.0/tests/testkit/field_oracle.py +36 -0
- symq-0.2.0/tests/testkit/hmr_families.py +102 -0
- symq-0.2.0/tests/testkit/hmr_profile.py +307 -0
- symq-0.2.0/tests/testkit/hmr_table_cases.py +129 -0
- symq-0.2.0/tests/testkit/kraus_loader_cases.py +122 -0
- symq-0.2.0/tests/testkit/kraus_oracle.py +130 -0
- symq-0.2.0/tests/testkit/liveness.py +43 -0
- symq-0.2.0/tests/testkit/nonlinear_phase_cases.py +38 -0
- symq-0.2.0/tests/testkit/nonlinear_phase_cohort.py +109 -0
- symq-0.2.0/tests/testkit/phase_delta_oracle.py +114 -0
- symq-0.2.0/tests/testkit/phase_mixing_cohort.py +106 -0
- symq-0.2.0/tests/testkit/scalar_channel.py +200 -0
- symq-0.2.0/tests/testkit/sparse_branch_oracle.py +186 -0
- symq-0.2.0/tests/testkit/table_channel_oracle.py +199 -0
- symq-0.2.0/tests/testkit/width_study.py +224 -0
- symq-0.2.0/tools/api_snapshot.py +657 -0
- symq-0.2.0/tools/build_native.py +490 -0
- symq-0.2.0/tools/check_formal_axioms.py +314 -0
- symq-0.2.0/tools/formal_graph_snapshot.py +108 -0
- symq-0.2.0/tools/generate_qualtran_fixtures.py +197 -0
- symq-0.2.0/tools/pypi_readme.py +173 -0
- symq-0.2.0/tools/release_check.py +342 -0
- symq-0.2.0/tools/sanitize_native.py +81 -0
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
name: Correctness or soundness bug
|
|
2
|
+
description: A wrong verdict, a wrong witness, a crash, or an unsupported input that was accepted.
|
|
3
|
+
labels: [bug]
|
|
4
|
+
body:
|
|
5
|
+
- type: markdown
|
|
6
|
+
attributes:
|
|
7
|
+
value: |
|
|
8
|
+
A wrong `equivalent` or `different` verdict is the most serious kind of report. Please
|
|
9
|
+
give the exact inputs: an `inconclusive` or `unsupported` result is not a proof, and a
|
|
10
|
+
slow run is a performance report, not a correctness bug.
|
|
11
|
+
- type: input
|
|
12
|
+
id: version
|
|
13
|
+
attributes:
|
|
14
|
+
label: SymQ version or commit SHA
|
|
15
|
+
description: Output of `python -c "import symq; print(symq.__version__)"`, or the exact commit.
|
|
16
|
+
validations:
|
|
17
|
+
required: true
|
|
18
|
+
- type: textarea
|
|
19
|
+
id: environment
|
|
20
|
+
attributes:
|
|
21
|
+
label: Environment
|
|
22
|
+
description: Paste the output of `python -m symq doctor`.
|
|
23
|
+
render: text
|
|
24
|
+
validations:
|
|
25
|
+
required: true
|
|
26
|
+
- type: dropdown
|
|
27
|
+
id: layer
|
|
28
|
+
attributes:
|
|
29
|
+
label: Layer
|
|
30
|
+
options:
|
|
31
|
+
- Core (symq, symq.sat, backends, CLI check/anf/doctor)
|
|
32
|
+
- symq.experimental (opt-in)
|
|
33
|
+
- symq.labs (research, no API promise)
|
|
34
|
+
validations:
|
|
35
|
+
required: true
|
|
36
|
+
- type: input
|
|
37
|
+
id: theorem
|
|
38
|
+
attributes:
|
|
39
|
+
label: Theorem and engine
|
|
40
|
+
description: For example `classical_full` with `zdd-native`, or a SAT contract.
|
|
41
|
+
validations:
|
|
42
|
+
required: true
|
|
43
|
+
- type: textarea
|
|
44
|
+
id: reproducer
|
|
45
|
+
attributes:
|
|
46
|
+
label: Minimal reproducer
|
|
47
|
+
description: The smallest circuits or files and the exact call or command line. Do not attach private circuits.
|
|
48
|
+
render: python
|
|
49
|
+
validations:
|
|
50
|
+
required: true
|
|
51
|
+
- type: textarea
|
|
52
|
+
id: result
|
|
53
|
+
attributes:
|
|
54
|
+
label: Expected and observed result
|
|
55
|
+
description: Include the verdict, the reason and the witness, if any.
|
|
56
|
+
validations:
|
|
57
|
+
required: true
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
name: Feature or extension request
|
|
2
|
+
description: A new gate, theorem, importer, backend or command.
|
|
3
|
+
labels: [enhancement]
|
|
4
|
+
body:
|
|
5
|
+
- type: textarea
|
|
6
|
+
id: statement
|
|
7
|
+
attributes:
|
|
8
|
+
label: Statement to prove or task to support
|
|
9
|
+
description: State the exact theorem or task, its input grammar and what must be refused.
|
|
10
|
+
validations:
|
|
11
|
+
required: true
|
|
12
|
+
- type: textarea
|
|
13
|
+
id: motivation
|
|
14
|
+
attributes:
|
|
15
|
+
label: Motivation and a concrete example
|
|
16
|
+
description: A public circuit, format or workflow that needs it.
|
|
17
|
+
validations:
|
|
18
|
+
required: true
|
|
19
|
+
- type: textarea
|
|
20
|
+
id: oracle
|
|
21
|
+
attributes:
|
|
22
|
+
label: Independent reference
|
|
23
|
+
description: How could the result be checked against a simple independent oracle?
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
name: Question
|
|
2
|
+
description: How to express a verification task, or what a result means.
|
|
3
|
+
labels: [question]
|
|
4
|
+
body:
|
|
5
|
+
- type: textarea
|
|
6
|
+
id: question
|
|
7
|
+
attributes:
|
|
8
|
+
label: Question
|
|
9
|
+
description: What are you trying to prove, on which circuits, and what did you try?
|
|
10
|
+
validations:
|
|
11
|
+
required: true
|
|
12
|
+
- type: input
|
|
13
|
+
id: version
|
|
14
|
+
attributes:
|
|
15
|
+
label: SymQ version or commit SHA
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
## Scope and theorem
|
|
2
|
+
|
|
3
|
+
Describe the supported input grammar, ancilla preparation, observed outputs,
|
|
4
|
+
theorem type (classical, SAT contract, strict HMR branch, channel, instrument)
|
|
5
|
+
and what this PR does **not** establish.
|
|
6
|
+
|
|
7
|
+
## Changes
|
|
8
|
+
|
|
9
|
+
- Code / documentation:
|
|
10
|
+
- Exact base and head SHA:
|
|
11
|
+
- Dependence on other PRs, if any:
|
|
12
|
+
|
|
13
|
+
## Tests and evidence
|
|
14
|
+
|
|
15
|
+
- [ ] Independent reference/oracle and positive/negative mutants (when applicable)
|
|
16
|
+
- [ ] Witness replay and resource/unsupported paths
|
|
17
|
+
- [ ] Python/native/pure-wheel checks as relevant
|
|
18
|
+
- [ ] Exact-head CI link
|
|
19
|
+
- [ ] Raw experiment source/binary hashes, environment and all failure counts (if measured)
|
|
20
|
+
|
|
21
|
+
## Provenance and publication
|
|
22
|
+
|
|
23
|
+
- [ ] External code/corpus license and upstream commit verified
|
|
24
|
+
- [ ] No secrets, private fixtures or identifying local paths
|
|
25
|
+
- [ ] Historical measurements not relabeled as new holdout
|
|
26
|
+
- [ ] Research conclusions and API stability stated narrowly
|
|
27
|
+
- [ ] No external publication, release or merge assumed without approval
|
|
28
|
+
|
|
29
|
+
## Review decision requested
|
|
30
|
+
|
|
31
|
+
What is the smallest safe integration unit? Document remaining blockers and
|
|
32
|
+
whether this is a maintained-code fix, experimental research, or historical
|
|
33
|
+
archive. See [CONTRIBUTING.md](../CONTRIBUTING.md).
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Keeps the SHA-pinned GitHub Actions and the bounded development tools (ruff, mypy) current.
|
|
2
|
+
# The package itself has no runtime dependency.
|
|
3
|
+
version: 2
|
|
4
|
+
updates:
|
|
5
|
+
- package-ecosystem: pip
|
|
6
|
+
directory: /
|
|
7
|
+
schedule:
|
|
8
|
+
interval: weekly
|
|
9
|
+
groups:
|
|
10
|
+
dev-tools:
|
|
11
|
+
patterns: ['*']
|
|
12
|
+
commit-message:
|
|
13
|
+
prefix: build
|
|
14
|
+
- package-ecosystem: github-actions
|
|
15
|
+
directory: /
|
|
16
|
+
schedule:
|
|
17
|
+
interval: weekly
|
|
18
|
+
groups:
|
|
19
|
+
actions:
|
|
20
|
+
patterns: ['*']
|
|
21
|
+
commit-message:
|
|
22
|
+
prefix: ci
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
name: Affine basis and cache study
|
|
2
|
+
on:
|
|
3
|
+
pull_request:
|
|
4
|
+
paths:
|
|
5
|
+
- 'src/symq/labs/affine_basis_study.py'
|
|
6
|
+
- 'src/symq/labs/affine_phase.py'
|
|
7
|
+
- 'src/symq/labs/dyadic_phase.py'
|
|
8
|
+
- 'src/symq/resources.py'
|
|
9
|
+
- 'src/symq/phase.py'
|
|
10
|
+
- 'src/symq/phase_oracle.py'
|
|
11
|
+
- 'benchmarks/affine_basis*.py'
|
|
12
|
+
- 'tests/test_affine_basis*.py'
|
|
13
|
+
- 'tests/testkit/affine_basis_oracle.py'
|
|
14
|
+
- 'docs/guide/affine-basis-study.md'
|
|
15
|
+
- '.github/workflows/affine-basis-study.yml'
|
|
16
|
+
workflow_dispatch:
|
|
17
|
+
permissions:
|
|
18
|
+
contents: read
|
|
19
|
+
concurrency:
|
|
20
|
+
group: affine-basis-study-${{ github.ref }}
|
|
21
|
+
cancel-in-progress: true
|
|
22
|
+
jobs:
|
|
23
|
+
qualification:
|
|
24
|
+
runs-on: ubuntu-latest
|
|
25
|
+
timeout-minutes: 10
|
|
26
|
+
env:
|
|
27
|
+
SYMQ_SKIP_NATIVE: '1'
|
|
28
|
+
SYMQ_TEST_REQUIRE: checkout
|
|
29
|
+
steps:
|
|
30
|
+
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
|
|
31
|
+
with:
|
|
32
|
+
fetch-depth: 0
|
|
33
|
+
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
|
|
34
|
+
with:
|
|
35
|
+
python-version: '3.12'
|
|
36
|
+
cache: pip
|
|
37
|
+
- run: python -m pip install -e ".[dev]"
|
|
38
|
+
- run: ruff check .
|
|
39
|
+
- run: >-
|
|
40
|
+
python -m pytest -q tests/test_affine_basis_study.py
|
|
41
|
+
tests/test_affine_basis_qualification.py tests/test_affine_phase.py
|
|
42
|
+
tests/test_public_docs.py tests/test_public_api.py
|
|
43
|
+
- run: >-
|
|
44
|
+
python -m benchmarks.affine_basis --repetitions 3
|
|
45
|
+
--output evidence/affine-basis.json
|
|
46
|
+
- run: >-
|
|
47
|
+
python -m benchmarks.affine_basis_summary evidence/affine-basis.json
|
|
48
|
+
--output evidence/affine-basis-summary.json
|
|
49
|
+
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
|
50
|
+
if: always()
|
|
51
|
+
with:
|
|
52
|
+
name: affine-basis-study-evidence
|
|
53
|
+
path: evidence/
|
|
54
|
+
if-no-files-found: error
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
name: Affine phase research
|
|
2
|
+
on:
|
|
3
|
+
pull_request:
|
|
4
|
+
paths:
|
|
5
|
+
- 'src/symq/labs/affine_phase.py'
|
|
6
|
+
- 'src/symq/labs/dyadic_phase.py'
|
|
7
|
+
- 'src/symq/phase.py'
|
|
8
|
+
- 'src/symq/resources.py'
|
|
9
|
+
- 'tests/test_affine_phase*.py'
|
|
10
|
+
- 'tests/testkit/affine_phase_oracle.py'
|
|
11
|
+
- 'benchmarks/affine_phase.py'
|
|
12
|
+
- 'docs/guide/affine-phase.md'
|
|
13
|
+
- '.github/workflows/affine-phase.yml'
|
|
14
|
+
workflow_dispatch:
|
|
15
|
+
permissions:
|
|
16
|
+
contents: read
|
|
17
|
+
concurrency:
|
|
18
|
+
group: affine-phase-${{ github.ref }}
|
|
19
|
+
cancel-in-progress: true
|
|
20
|
+
jobs:
|
|
21
|
+
qualification:
|
|
22
|
+
runs-on: ubuntu-latest
|
|
23
|
+
timeout-minutes: 15
|
|
24
|
+
env:
|
|
25
|
+
SYMQ_REQUIRE_NATIVE: '1'
|
|
26
|
+
SYMQ_TEST_REQUIRE: native,sat,checkout
|
|
27
|
+
steps:
|
|
28
|
+
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
|
|
29
|
+
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
|
|
30
|
+
with:
|
|
31
|
+
python-version: '3.12'
|
|
32
|
+
cache: pip
|
|
33
|
+
- run: python -m pip install -e ".[dev]"
|
|
34
|
+
- run: ruff check .
|
|
35
|
+
- run: >-
|
|
36
|
+
python -m pytest -q tests/test_affine_phase.py
|
|
37
|
+
tests/test_affine_phase_qualification.py tests/test_phase8_research.py
|
|
38
|
+
tests/test_public_docs.py tests/test_public_api.py
|
|
39
|
+
- run: python -m benchmarks.affine_phase --repetitions 3 --output evidence/affine-phase.json
|
|
40
|
+
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
|
41
|
+
if: always()
|
|
42
|
+
with:
|
|
43
|
+
name: affine-phase-evidence
|
|
44
|
+
path: evidence/
|
|
45
|
+
if-no-files-found: error
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
name: Affine target table research
|
|
2
|
+
on:
|
|
3
|
+
pull_request:
|
|
4
|
+
paths:
|
|
5
|
+
- 'src/symq/labs/affine_table.py'
|
|
6
|
+
- 'src/symq/labs/anchored_stream.py'
|
|
7
|
+
- 'src/symq/labs/anchored_kraus.py'
|
|
8
|
+
- 'src/symq/labs/kraus_graph.py'
|
|
9
|
+
- 'src/symq/resources.py'
|
|
10
|
+
- 'benchmarks/affine_table.py'
|
|
11
|
+
- 'tests/test_affine_table.py'
|
|
12
|
+
- 'tests/test_affine_table_independent.py'
|
|
13
|
+
- 'tests/testkit/affine_loader_cases.py'
|
|
14
|
+
- 'tests/testkit/table_channel_oracle.py'
|
|
15
|
+
- 'docs/labs/affine-target-tables.md'
|
|
16
|
+
- '.github/workflows/affine-target-table.yml'
|
|
17
|
+
workflow_dispatch:
|
|
18
|
+
permissions:
|
|
19
|
+
contents: read
|
|
20
|
+
jobs:
|
|
21
|
+
qualification:
|
|
22
|
+
runs-on: ubuntu-latest
|
|
23
|
+
timeout-minutes: 15
|
|
24
|
+
env:
|
|
25
|
+
SYMQ_TEST_REQUIRE: sat
|
|
26
|
+
steps:
|
|
27
|
+
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
|
|
28
|
+
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
|
|
29
|
+
with:
|
|
30
|
+
python-version: '3.12'
|
|
31
|
+
- run: python -m pip install -e ".[dev]"
|
|
32
|
+
- run: ruff check .
|
|
33
|
+
- run: python -m pytest -q tests/test_affine_table.py tests/test_affine_table_independent.py tests/test_anchored_stream.py tests/test_kraus_graph.py tests/test_anchored_independent.py
|
|
34
|
+
- run: |
|
|
35
|
+
mkdir -p evidence
|
|
36
|
+
git rev-parse HEAD > evidence/commit.txt
|
|
37
|
+
git rev-parse 'HEAD^{tree}' > evidence/tree.txt
|
|
38
|
+
git diff --exit-code
|
|
39
|
+
python -m benchmarks.affine_table --programs 100 --output evidence/affine-target-table.json
|
|
40
|
+
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
|
41
|
+
if: always()
|
|
42
|
+
with:
|
|
43
|
+
name: affine-target-table-evidence
|
|
44
|
+
path: evidence/
|
|
45
|
+
if-no-files-found: error
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
name: Anchored Kraus symbolic research
|
|
2
|
+
on:
|
|
3
|
+
pull_request:
|
|
4
|
+
paths:
|
|
5
|
+
- 'src/symq/labs/anchored_kraus.py'
|
|
6
|
+
- 'benchmarks/anchored_kraus.py'
|
|
7
|
+
- 'tests/test_anchored_kraus.py'
|
|
8
|
+
- 'docs/labs/research-outlook-20261102.md'
|
|
9
|
+
- '.github/workflows/anchored-kraus.yml'
|
|
10
|
+
workflow_dispatch:
|
|
11
|
+
permissions:
|
|
12
|
+
contents: read
|
|
13
|
+
jobs:
|
|
14
|
+
qualification:
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
timeout-minutes: 15
|
|
17
|
+
steps:
|
|
18
|
+
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
|
|
19
|
+
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
|
|
20
|
+
with:
|
|
21
|
+
python-version: '3.12'
|
|
22
|
+
- run: python -m pip install -e ".[dev]"
|
|
23
|
+
- run: ruff check .
|
|
24
|
+
- run: python -m pytest -q tests/test_anchored_kraus.py tests/test_hmr_table_contract.py
|
|
25
|
+
- run: |
|
|
26
|
+
mkdir -p evidence
|
|
27
|
+
git rev-parse HEAD > evidence/commit.txt
|
|
28
|
+
git rev-parse 'HEAD^{tree}' > evidence/tree.txt
|
|
29
|
+
git diff --exit-code
|
|
30
|
+
python -m benchmarks.anchored_kraus --programs 400 --output evidence/anchored-kraus.json
|
|
31
|
+
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
|
32
|
+
if: always()
|
|
33
|
+
with:
|
|
34
|
+
name: anchored-kraus-evidence
|
|
35
|
+
path: evidence/
|
|
36
|
+
if-no-files-found: error
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
name: Backward ancilla research
|
|
2
|
+
on:
|
|
3
|
+
push:
|
|
4
|
+
branches: [main]
|
|
5
|
+
paths:
|
|
6
|
+
- 'src/symq/labs/backward_ancilla.py'
|
|
7
|
+
- 'src/symq/experimental/hybrid.py'
|
|
8
|
+
- 'src/symq/resources.py'
|
|
9
|
+
- 'benchmarks/backward_ancilla.py'
|
|
10
|
+
- 'benchmarks/corpus/qualtran/**'
|
|
11
|
+
- 'tests/test_backward_ancilla*.py'
|
|
12
|
+
- '.github/workflows/backward-ancilla.yml'
|
|
13
|
+
pull_request:
|
|
14
|
+
paths:
|
|
15
|
+
- 'src/symq/labs/backward_ancilla.py'
|
|
16
|
+
- 'src/symq/experimental/hybrid.py'
|
|
17
|
+
- 'src/symq/resources.py'
|
|
18
|
+
- 'benchmarks/backward_ancilla.py'
|
|
19
|
+
- 'benchmarks/corpus/qualtran/**'
|
|
20
|
+
- 'tests/test_backward_ancilla*.py'
|
|
21
|
+
- '.github/workflows/backward-ancilla.yml'
|
|
22
|
+
permissions:
|
|
23
|
+
contents: read
|
|
24
|
+
concurrency:
|
|
25
|
+
group: backward-ancilla-${{ github.ref }}
|
|
26
|
+
cancel-in-progress: true
|
|
27
|
+
jobs:
|
|
28
|
+
qualification:
|
|
29
|
+
runs-on: ubuntu-latest
|
|
30
|
+
timeout-minutes: 15
|
|
31
|
+
steps:
|
|
32
|
+
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
|
|
33
|
+
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
|
|
34
|
+
with:
|
|
35
|
+
python-version: '3.12'
|
|
36
|
+
cache: pip
|
|
37
|
+
- run: python -m pip install -e '.[dev]'
|
|
38
|
+
env:
|
|
39
|
+
SYMQ_SKIP_NATIVE: '1'
|
|
40
|
+
- run: >-
|
|
41
|
+
python -m pytest -q tests/test_backward_ancilla.py
|
|
42
|
+
tests/test_backward_ancilla_qualification.py
|
|
43
|
+
tests/test_hybrid_channel_research.py tests/test_public_docs.py
|
|
44
|
+
- run: python -m benchmarks.backward_ancilla --repetitions 3 --output evidence/backward-ancilla.json
|
|
45
|
+
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
|
46
|
+
if: always()
|
|
47
|
+
with:
|
|
48
|
+
name: backward-ancilla-evidence
|
|
49
|
+
path: evidence/
|
|
50
|
+
if-no-files-found: error
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
name: HMR certificate research
|
|
2
|
+
on:
|
|
3
|
+
pull_request:
|
|
4
|
+
paths:
|
|
5
|
+
- 'src/symq/**'
|
|
6
|
+
- 'tests/test_channel_certificate*.py'
|
|
7
|
+
- 'benchmarks/channel_certificate.py'
|
|
8
|
+
- 'benchmarks/corpus/**'
|
|
9
|
+
- 'docs/guide/channel-certificates.md'
|
|
10
|
+
- 'pyproject.toml'
|
|
11
|
+
- '.github/workflows/channel-certificates.yml'
|
|
12
|
+
push:
|
|
13
|
+
branches: [main]
|
|
14
|
+
paths:
|
|
15
|
+
- 'src/symq/**'
|
|
16
|
+
- 'tests/test_channel_certificate*.py'
|
|
17
|
+
- 'benchmarks/channel_certificate.py'
|
|
18
|
+
- 'benchmarks/corpus/**'
|
|
19
|
+
- '.github/workflows/channel-certificates.yml'
|
|
20
|
+
workflow_dispatch:
|
|
21
|
+
permissions:
|
|
22
|
+
contents: read
|
|
23
|
+
concurrency:
|
|
24
|
+
group: research-channel-certificates-${{ github.ref }}
|
|
25
|
+
cancel-in-progress: true
|
|
26
|
+
jobs:
|
|
27
|
+
qualification:
|
|
28
|
+
runs-on: ubuntu-latest
|
|
29
|
+
timeout-minutes: 10
|
|
30
|
+
env:
|
|
31
|
+
SYMQ_SKIP_NATIVE: '1'
|
|
32
|
+
SYMQ_TEST_REQUIRE: checkout
|
|
33
|
+
steps:
|
|
34
|
+
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4.4.0
|
|
35
|
+
- uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5.6.0
|
|
36
|
+
with:
|
|
37
|
+
python-version: '3.12'
|
|
38
|
+
cache: pip
|
|
39
|
+
- run: python -m pip install -e ".[dev]"
|
|
40
|
+
- run: python -m pytest -q tests/test_channel_certificate.py tests/test_channel_certificate_qualification.py tests/test_channel_criterion.py tests/test_public_api.py
|
|
41
|
+
- name: Reproduce bounded development qualification
|
|
42
|
+
run: python -m benchmarks.channel_certificate --repetitions 3 --output evidence/channel-certificates.json
|
|
43
|
+
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
|
44
|
+
if: always()
|
|
45
|
+
with:
|
|
46
|
+
name: channel-certificates-evidence
|
|
47
|
+
path: evidence/
|
|
48
|
+
if-no-files-found: error
|