Skip to content

INFERENCE lemmas are accepted without mechanical verification #3

@mzargham

Description

@mzargham

Summary

INFERENCE lemmas in symproof/verification.py (lines 407–430) are verified only structurally — the verifier checks that depends_on is non-empty and rule is non-empty, but performs no mechanical verification that the inference follows from its premises.

Problem

The current checks (lines 407–421):

  • depends_on must be non-empty
  • rule must be non-empty

What is not checked:

  • Whether lemmas named in depends_on actually exist in the proof script
  • Whether the named rule is a recognized logical principle
  • Whether the conclusion (lemma.expr) actually follows from the cited dependencies

This means any claim can pass verification by citing an arbitrary rule name and dependency name. While the docs are honest about this limitation, sealed proof bundles do not clearly flag which steps are human-asserted vs. machine-checked.

Suggested improvements

  1. Minimum: Validate that all depends_on names resolve to earlier lemmas in the script
  2. Medium: Add an advisory to sealed bundles explicitly listing INFERENCE lemmas as human-asserted steps
  3. Long-term: Consider a registry of known inference rules with mechanized checking

Files

  • symproof/verification.py:407-430

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions