{
  "api": "scanpy.get.aggregate(adata, by='group', func='sum', axis='obs', mask='keep')",
  "artifacts": {
    "certificates": "formal/Observed.lean",
    "entry": "docs/catalog-entry.md",
    "pins": "evidence/pins.json",
    "probes": "evidence/limit-probes.json",
    "proof": "formal/ScanpyAggregate.lean",
    "transcripts": "evidence/cases.json"
  },
  "assumptions": [
    "Faithful Python extraction and serialization of input and actual output",
    "Faithful Python as_integer_ratio decoding of observed binary64 values",
    "Pinned package/toolchain loading and runtime integrity",
    "Lean kernel and standard logical foundations (propext, Quot.sound)"
  ],
  "backends": [
    "numpy.ndarray int64 -> float64",
    "scipy.sparse.csr_matrix int64 -> int64",
    "scipy.sparse.csc_matrix int64 -> int64"
  ],
  "claim": "A Lean-proved checker certifies serialized actual Scanpy grouped-count outputs, including group/feature labels and source-index/name witnesses.",
  "contract": {
    "adapter_dimensions": "nonempty observations/features, at least one assigned category",
    "counts": "nonnegative integer",
    "grouping": "single categorical observation column, explicit order, Boolean inclusion mask",
    "labels": "unique nonempty printable ASCII names/categories",
    "masked_only_groups": "retained with zeros",
    "max_entry_and_group_feature_sum": 9007199254740992,
    "missing_assignments": "excluded",
    "sparse_storage": "canonical, unique indices; explicit or implicit zeros",
    "unused_categories": "removed"
  },
  "id": "scanpy-1.12.4-grouped-count-sum-checker",
  "lean": "Lean (version 4.34.1, x86_64-unknown-linux-gnu, commit 5045d0056413266e57c625dcd7c365b10e377c52, Release)",
  "limits": [
    "No Python/Numba/SciPy/AnnData implementation refinement",
    "No IEEE-754 reduction proof",
    "No other reducers, axes, multiple grouping columns, negative/general floating inputs, GPU/Dask/backed data",
    "Finite synthetic examples do not establish package-wide correctness or scientific validity"
  ],
  "numba_config": {
    "disable_jit": 0,
    "threading_layer": "workqueue",
    "threads": 2
  },
  "orientation": "observations by features",
  "original_implementation_refinement": false,
  "published": false,
  "python": "3.13.15",
  "reproduce": "./scripts/check.sh",
  "results": {
    "accepted_production_executions": 41,
    "cases_sha256": "e1022ca51113506968807f5bec7a963b60ff9f0ca36909a2ce4fb2c6b0ca6e7a",
    "checker_sha256": "6370f25f8e4eee9e2aa1c859582c1b944658c2a605e22a5edfa4976523843a81",
    "kernel_proved_rejections": 14,
    "out_of_contract_probes": 6,
    "proof_sha256": "0070878c71b7b1baf8fa3630d03b0d37c83527c7aa3f4000b289c30f45742968",
    "seed": 765321
  },
  "sources": {
    "anndata": {
      "commit": "a487b81d38d4bfe7c7d76f01eed72a8622665c65",
      "files_sha256": {
        "_core/aligned_mapping.py": "9a6941b42a1ab41795ddac8fe14cf942c0be7a1e22354561bdbe672edb2686d6",
        "_core/anndata.py": "a96df8772b389cb3c03de02427a7434e6011a64aa299829265ef8152703a5c6c"
      },
      "git_tree": "fa10a66f4382b85689079f91382b09d87ba92ef3",
      "license": "BSD-3-Clause",
      "license_sha256": "55cad7a0454c86d36ebccbca6063fe23994c4fca99ffa7457f6d9fb0bd7cd2a0",
      "url": "https://github.com/scverse/anndata",
      "version": "0.13.4"
    },
    "scanpy": {
      "commit": "ff2133115f639fccce9633aa7f5309c36a0972e7",
      "files_sha256": {
        "_compat.py": "2c415973ac538d31eb04d7beb39606c666d43a78d5d79811b422327d37fa4ae8",
        "get/_aggregated.py": "44462822c465c704ff1526ea7af97b39894c26879463677a6eb0da8d1732c67d",
        "get/_kernels.py": "19f516d4c4b12b94ccd6542364d16b4676eacd53bf1e63402bd454e6b47eec3d",
        "get/get.py": "8011375fc4db6d8116577ad89463bc163fa563736258996b47fccfde5a8f6cba"
      },
      "git_tree": "7caeeb29db2e8ecfa98d77e9fda9d9fdd753099c",
      "license": "BSD-3-Clause",
      "license_sha256": "fb02749e4f251401f2c4023b7a30e71f40a21e138b87025036f74c980cfa63b2",
      "url": "https://github.com/scverse/scanpy",
      "version": "1.12.4"
    }
  },
  "stack": {
    "anndata": "0.13.4",
    "fast-array-utils": "1.5.1",
    "llvmlite": "0.50.0",
    "numba": "0.68.0",
    "numpy": "2.5.3",
    "pandas": "3.0.6",
    "scanpy": "1.12.4",
    "scipy": "1.18.1"
  },
  "status": "local-unpublished-draft",
  "theorems": [
    "check_sound",
    "filtered_sum_eq",
    "accepted_group_identity",
    "accepted_source_identity",
    "accepted_feature_identity",
    "accepted_group_coverage",
    "accepted_sum_bound",
    "bounded_prefix_no_wrap",
    "bounded_wordSum_exact"
  ],
  "title": "Scanpy grouped-count sums: label-preserving output certificates",
  "upstream_endorsement": false,
  "verification_class": "verified-output-checker",
  "whole_package_verified": false,
  "witness_boundary": "Source indices/names are adapter-supplied; Scanpy does not return them. Lean checks them against the serialized input."
}
