Sequential Quantum Gate Decomposer  v1.9.6
Powerful decomposition of general unitarias into one- and two-qubit gates gates
phase31_correctness_matrix_validation.py
Go to the documentation of this file.
1 #!/usr/bin/env python3
2 """Stage-A Phase 3.1 bounded correctness matrix (six-case inventory + slice counts).
3 
4 Run with:
5  python benchmarks/density_matrix/correctness_evidence/phase31_correctness_matrix_validation.py
6 """
7 
8 from __future__ import annotations
9 
10 from copy import deepcopy
11 from functools import lru_cache
12 
13 from benchmarks.density_matrix.correctness_evidence.case_selection import (
14  CORRECTNESS_EVIDENCE_CASE_KIND_CONTINUITY,
15  CORRECTNESS_EVIDENCE_CASE_KIND_MICROCASE,
16  _build_phase31_correctness_evidence_case_contexts_cached,
17 )
18 from benchmarks.density_matrix.correctness_evidence.common import (
19  CORRECTNESS_EVIDENCE_PHASE31_CASE_SCHEMA_VERSION,
20  phase31_correctness_evidence_output_dir,
21 )
22 from benchmarks.density_matrix.correctness_evidence.validation_support import (
23  assemble_positive_case_bundle,
24 )
25 from benchmarks.density_matrix.validation_scaffold import (
26  require_bundle_fields,
27  run_case_slice_cli,
28 )
29 
30 SUITE_NAME = "correctness_evidence_phase31_correctness_matrix"
31 ARTIFACT_FILENAME = "phase31_correctness_matrix_bundle.json"
32 DEFAULT_OUTPUT_DIR = phase31_correctness_evidence_output_dir("correctness_matrix")
33 ARTIFACT_CORE_FIELDS = (
34  "suite_name",
35  "status",
36  "record_schema_version",
37  "software",
38  "selected_candidate",
39  "summary",
40  "cases",
41 )
42 
43 
44 @lru_cache(maxsize=1)
45 def _build_phase31_matrix_cases_cached() -> tuple[dict, ...]:
46  return tuple(
47  dict(ctx.metadata)
49  )
50 
51 
52 def build_cases() -> list[dict]:
53  return deepcopy(list(_build_phase31_matrix_cases_cached()))
54 
55 
56 def build_artifact_bundle(cases: list[dict]) -> dict:
57  continuity_cases = sum(
58  case["case_kind"] == CORRECTNESS_EVIDENCE_CASE_KIND_CONTINUITY for case in cases
59  )
60  microcases = sum(
61  case["case_kind"] == CORRECTNESS_EVIDENCE_CASE_KIND_MICROCASE for case in cases
62  )
63  structured_cases = sum(case["case_kind"] == "structured_family" for case in cases)
64  external_slice_cases = sum(case["external_reference_required"] for case in cases)
65  status = (
66  "pass"
67  if len(cases) == 6
68  and continuity_cases == 2
69  and microcases == 4
70  and structured_cases == 0
71  and external_slice_cases == 5
72  else "fail"
73  )
74  summary = {
75  "package_kind": "phase31_stage_a_bounded",
76  "total_cases": len(cases),
77  "continuity_cases": continuity_cases,
78  "microcases": microcases,
79  "structured_cases": structured_cases,
80  "external_slice_cases": external_slice_cases,
81  "internal_only_cases": sum(case["validation_slice"] == "internal_only" for case in cases),
82  "internal_plus_external_cases": sum(
83  case["validation_slice"] == "internal_plus_external" for case in cases
84  ),
85  }
87  SUITE_NAME,
88  status,
89  summary,
90  cases,
91  record_schema_version=CORRECTNESS_EVIDENCE_PHASE31_CASE_SCHEMA_VERSION,
92  )
93  require_bundle_fields(bundle, ARTIFACT_CORE_FIELDS, "Phase 3.1 correctness matrix bundle")
94  return bundle
95 
96 
97 def main(argv: list[str] | None = None) -> int:
98  return run_case_slice_cli(
99  argv,
100  build_cases=build_cases,
101  build_artifact_bundle=build_artifact_bundle,
102  artifact_filename=ARTIFACT_FILENAME,
103  default_output_dir=DEFAULT_OUTPUT_DIR,
104  description=__doc__ or "",
105  output_dir_help="Directory to write the Phase 3.1 correctness matrix bundle into.",
106  quiet_report=lambda b: print(
107  "total_cases={total_cases}, external_slice_cases={external_slice_cases}".format(
108  **b["summary"]
109  )
110  ),
111  )
112 
113 
114 if __name__ == "__main__":
115  raise SystemExit(main())
def phase31_correctness_evidence_output_dir