Skip to content

Lemma assumptions bypass axiom justification requirement #4

@mzargham

Description

@mzargham

Summary

seal() checks that lemma assumptions do not contradict axioms, but does not require the axiom set to justify those assumptions. This creates a gap in the explicit-assumptions model that is central to symproof's value proposition.

Problem

verify_lemma() actively uses Lemma.assumptions in two ways:

  1. Substitutes assumption-enhanced symbols into expressions (line 235–236)
  2. Passes assumptions as Q-context to sympy.ask() for QUERY lemmas (lines 350–351)

seal() runs _check_assumptions_consistent() (bundle.py lines 32–63) which only checks that axiom expressions are not provably False under the lemma assumptions. Indeterminate results are allowed (line 44: "Only proven contradictions are rejected").

The load-bearing audit (_audit_load_bearing) catches Symbol constructor assumptions (e.g., Symbol("x", positive=True)) that affect verification but lack axiom backing. However, dict-based assumptions passed via Lemma.assumptions — which feed directly into sympy.ask() contexts — are not subject to load-bearing analysis.

A proof author can introduce {"x": {"positive": True}} in a lemma's assumptions dict without any axiom declaring x > 0. The proof will seal successfully as long as the assumption doesn't contradict existing axioms.

Suggested fix

Extend _audit_load_bearing (or add a parallel check) to also cover dict-based Q-context assumptions on QUERY lemmas, requiring that each such assumption is backed by an axiom in the set.

Files

  • symproof/verification.pyverify_lemma(), _build_assumption_subs(), _build_q_context()
  • symproof/bundle.pyseal(), _check_assumptions_consistent(), _audit_load_bearing()

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions