Topic · data constraint Z3 coverage

Data constraint Z3 coverage

Gist

A data_constraint the encoder never lowers is a comment. Proof runs proof audit --check data_constraint_z3_coverage. A green completeness stamp on the checked set is not the skipped set. Jama still authors.

proof audit --check data_constraint_z3_coverage

Keep the SQL CHECK if it already gates a column. Keep Jama if it already holds the shall. Neither one names quota_exceeded skipped as direction_not_input.

01 · The silent skip

Verify can pass on the variables Z3 actually saw.

You can declare a boolean partition next to its consumers and still have the encoder drop it. Completeness still prints clean on the checked set. The skipped set was invisible.

The check is data_constraint_z3_coverage. It is VERIFY-stage. Default severity is warning. The hop counts authored data_constraint variables by logical key (component:name) against the count Z3 actually proved (data_completeness, data_exclusivity, behavioral_implication, or data_constraint_postcondition). It does not rewrite the YAML. It does not inspect the Go. It does not run Kind2 on a helper.

It fires on a skip, not on a failed proof. An empty condition: is empty_condition. direction: internal, mode, or state is direction_not_input. No parameters: and no depends_on: is no_parameters. No FRETish guarantee in that component that names the variable is orphan_no_requirement. An assumption-type FRETish that names it does not close that last filter. Duplicate rows of the same logical key collapse to one variable and print as a diagnostic, not as an extra unproved row.

The expensive miss is a direction: internal boolean whose consumers still look proven because the antecedent was never constrained. The audit then reports that every data constraint was proven, because it only counted the ones the encoder kept. This hop lists the skipped names so they can be fixed or marked proof_auxiliary: true.

This is not the partition of the cases you already named. That hop is data constraints complete. A gap or overlap among lowered cases is exclusivity. A case the encoder never kept is this hop. The help file teaches that first.

# quota_exceeded next to its consumers, never lowered
- name: quota_exceeded
  type: bool
  direction: internal
  data_constraint:
    domain: bool
    condition: quota_used >= quota_max

# proof audit --check data_constraint_z3_coverage
# [VERIFICATION] data_constraint_z3_coverage
# quota_exceeded: skipped (direction_not_input)
# silent pass: last stamp still on the checked set

The fix is on the row, not on another test. Flip direction: to input only after you author the complement and a req_type: guarantee that names both halves. Or mark the row proof_auxiliary: true when it is a helper partition. Then re-run the VERIFY stage. Do not jump to realize to hide a skip.

proof audit --check data_constraint_z3_coverage --verbose
proof verify-properties specs/system
proof help data_constraint_z3_coverage

02 · The exhibit

Same internal boolean. Silent skip, or this hop.

One last green verify on quota_exceeded. The encoder never lowered it. Click the tabs.

The stamp

  • Ask did verify still print all data_constraints proven
  • Stamp quota_exceeded last pass. internal bool, unused by encoder
  • Why the checked set is 100% proven. nobody asked who was dropped
Suite green

This hop

Nobody asked whether quota_exceeded reached Z3. A green completeness stamp is not the skip list. The finding kind is this hop.

Need unread

The stamp

Keep the live shall. Keep the SQL CHECK. That is not this hop.

Keep the record

Proof

  • Ask did every non-auxiliary data_constraint reach a Z3 check
  • Out data_constraint_z3_coverage, quota_exceeded skipped (direction_not_input)
Skip named

Same internal boolean. Silent skip, or this hop. Click the tabs.

Surface What they do What Proof does What we lose
Green verify The last clean run on the checked set. Whether an authored variable never entered that set. We do not re-prove the kept set here. A green stamp is not this hop.
Data constraints complete Whether authored cases cover the domain without overlap. Whether those cases were even lowered. Not the partition. See data constraints complete.
Variable orphans Whether a leftover name has a consumer. Whether a consumed name still reached Z3. Not leftover inventory. See variable orphans clean.
Z3 on one function A lemma on a helper. A skip filter on a data_constraint row. Not the helper. See Z3/Kind2 on one function.
Data-constraint SERP SQL CHECK. Ads volume 140. Nothing. That is not this hop. We do not rank the 140 head. The H1 stays this check.
Jama cell A shall, and a domain if you type it. A warning the audit can name next to the skip filter. Not Jama's V&V. Jama still authors. We have not run a frozen Jama pack.

The teaching graph is still one boolean whose condition looked like a quota check while direction: stayed internal. Close it by flipping direction only after you author the complement and a req_type: guarantee that names both halves, or by marking the row proof_auxiliary: true when it is a helper partition. Do not flip direction alone on a half partition. Completeness then fires on the new input, and the orphan filter still waits for a guarantee.

# quota_exceeded now has shape Z3 can lower
- name: quota_exceeded
  type: bool
  direction: input
  data_constraint:
    domain: bool
    depends_on: [quota_used, quota_max]
    condition: quota_used >= quota_max
    parameters:
      - name: quota_used
        type: int
        constraint: ">= 0"
      - name: quota_max
        type: int
        constraint: ">= 1"

# proof audit --check data_constraint_z3_coverage
# authored == checked. skip list empty
#
# VERIFY may still warn. a pass now sits on a lowered row

The partition hop stays on data constraints complete. Leftover inventory stays on variable orphans clean. The helper lemma stays on Z3/Kind2 on one function. Jama still authors. Proof vs Jama.

03 · The honest loss

Proof names the skip. It does not write the YAML, and it does not prove the Go.

A quiet proof audit --check data_constraint_z3_coverage can still mean every non-auxiliary row reached Z3. Jama still authors.

Warning, not fail, on the default. Strict mode in proof.yaml can raise it to error. proof_auxiliary: true is silence with a reason, not a proof that the row was unused on purpose. Duplicate logical rows are a diagnostic, not a fail. The hop does not rewrite the YAML. It does not add a shall. It does not prove the Go. It does not run Kind2. A quiet hop is not a proof that the lowered model is the one you meant, only that every collected non-auxiliary data_constraint entered a Z3 check. We have not scored this floor against a frozen Jama pack or a ReqIF export. The loss is named, not scored.

The partition hop stays on data constraints complete. Leftover inventory stays on variable orphans clean. The silent-domain hop stays on non-boolean inputs constrained. The helper lemma stays on Z3/Kind2 on one function. The engagement stays on software correctness audit. Jama still authors.

04 · Nearby questions

What people type next.

What is data constraint Z3 coverage? Same question. Same URL.

Is this data constraints complete? No. That hop is completeness and exclusivity of the cases you already named. This hop is whether those cases were even lowered. See data constraints complete.

Is this behavioral implications verified? No. That hop is whether a lowered implication holds for all inputs. This hop is whether the case was even lowered. See behavioral implications verified.

Is this variable orphans? No. That hop is leftover inventory. This hop is a consumed name the encoder still dropped. See variable orphans clean.

Is this Z3 on one function? No. That hop is a lemma on a helper. See Z3/Kind2 on one function.

Is this a SQL CHECK constraint? No. Ads 140 on data constraint is a column the database enforces at write. The H1 stays this check.

Does flipping direction to input close the hop? Not alone. Author the complement and a guarantee that names both halves, or mark the row auxiliary.

Does an assumption-type FRETish close orphan_no_requirement? No. Only a req_type: guarantee generates the behavioral implication the filter measures.

Does a quiet hop prove the lowered model is the right domain? No. The hop observes skip filters. It does not score the sentence.

Is Proof a Jama alternative for the domain? No. Jama still authors. Proof vs Jama.