Skip to content

proofs(lean4): land the green half of the η extension (PARTIAL — ET-1..3 η) - #34

Merged
hyperpolymath merged 1 commit into
mainfrom
proofs/l1-eta-extension
Jul 28, 2026
Merged

proofs(lean4): land the green half of the η extension (PARTIAL — ET-1..3 η)#34
hyperpolymath merged 1 commit into
mainfrom
proofs/l1-eta-extension

Conversation

@hyperpolymath

Copy link
Copy Markdown
Owner

Partial, deliberately. Salvaged from the η campaign whose four attempts all hit the monthly spend limit before reporting. One had written six modules; five build green and are landed; the sixth is excluded.

Module Contents
EtaNormal η-long forms NfE/SpEne restricted to .star, so every arrow-kinded normal form is a lam (the discipline β-only Nf lacks)
EtaConversion DefEqE = β rules + a genuine η rule, and defEq_to_defEqE : DefEq t u → DefEqE t u
EtaSubstLemmas 26-theorem cast/exchange toolkit
EtaHsub hereditary substitution on η-long forms
EtaDecEq DecidableEq for NfE/SpE

Excluded and why: EtaExpand.lean stubs two cases of adjWkv with the identifier sorryAx_placeholder, which doesn't exist — so it doesn't compile. Honest (it can't pass as proven) but it means goal 2, the normalizer nfE, is genuinely unproven. Shipping it unlisted would trip the very failure mode this repo's gate is built to catch.

Does NOT close the OPEN row. Landed = goals 1, 3, DecidableEq half of 7. Open = normalizer, soundness, completeness, defEqE_iff_nfE, decDefEqE, anti-vacuity example. PROOF-STATUS says exactly that; issue #32 tracks the rest.

Verified: cold rebuild 21 jobs green; all three gates real exit 0; #print axioms[propext, Quot.sound].

…1..3 eta)

Salvaged from a campaign whose four attempts all died on a spend limit before
reporting. One attempt had written six modules; five build green and are landed
here. The sixth (EtaExpand) is NOT included -- see below.

Landed, axiom-audited [propext, Quot.sound]:
  EtaNormal      eta-long normal forms NfE/SpE. The core design point: `ne` is
                 restricted to `.star` (`ne : Var G k -> SpE G k .star ->
                 NfE G .star`), so every arrow-kinded normal form is a `lam` --
                 the discipline the beta-only `Nf` deliberately lacks. Plus
                 spEKindLe.
  EtaConversion  DefEqE = all DefEq rules PLUS a genuine eta rule
                 `DefEqE t (.lam (.app (wkTy .vz t) (.var .vz)))`, and
                 defEq_to_defEqE : DefEq t u -> DefEqE t u (eta extends beta).
  EtaSubstLemmas 26 theorems: cast/exchange toolkit for NfE/SpE.
  EtaHsub        hereditary substitution on eta-long forms.
  EtaDecEq       DecidableEq instances for NfE and SpE.

NOT landed, and why: EtaExpand.lean fails to compile because the agent stubbed
two cases of `adjWkv` (a weakening-exchange lemma for adjacent variable pairs)
with the identifier `sorryAx_placeholder`, which does not exist. That is an
honest failure -- it cannot masquerade as proven -- but it means goal 2 (the
eta-long normalizer nfE) is genuinely unproven, so the file is excluded rather
than shipped unlisted (an unMANIFESTed proof file is one of the failure modes
this repo's gate deliberately catches).

Scope, stated so nothing drifts: this does NOT close the "ET-1..3 (eta)" OPEN
row. Landed = goals 1, 3, and the DecidableEq half of 7. Still open = the
normalizer, soundness, completeness, defEqE_iff_nfE, decDefEqE, and the
anti-vacuity example. PROOF-STATUS records exactly that.

Verified: cold rebuild green (21 jobs); check-proofs.sh and scan-dangerous.sh
real exit 0; check-proof-status.sh real exit 0 after the gated 15->20 update.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@sonarqubecloud

Copy link
Copy Markdown

@gitar-bot

gitar-bot Bot commented Jul 28, 2026

Copy link
Copy Markdown

Note

Automatic reviews are paused because your trial's included automatic processing has been used for this period. Upgrade now, or comment "Gitar review" to run a review anytime.
Learn more

CI failed: K9 contract validation failed because 18 scanned K9 files are missing required fields such as the 'K9!' magic number, signature, and pedigree blocks.

Overview

A single validation job failed due to 20 errors in K9 contract file formatting and required metadata blocks across 18 scanned files, directly blocking the CI pipeline.

Failures

K9 Contract Validation Failure (confidence: high)

  • Type: configuration
  • Affected jobs: 90323294827
  • Related to change: yes
  • Root cause: The K9 contract files are missing required K9 validation fields, magic numbers ('K9!'), signatures, or correct pedigree structures expected by the validation script.
  • Suggested fix: Update the .k9.ncl contract files to include the required magic number 'K9!' on the first non-empty line, valid signature fields, and complete pedigree blocks with all required metadata fields.

Summary

  • Change-related failures: 1 configuration/validation failure involving 20 errors across 18 K9 contract files.
  • Infrastructure/flaky failures: None.
  • Recommended action: Fix the formatting and required fields in the K9 contract files introduced or modified in this PR so that validate-k9.sh passes successfully.
Code Review ✅ Approved 1 resolved / 1 findings

Lands five verified Lean 4 modules implementing η-long forms, conversion rules, substitution lemmas, hereditary substitution, and decidable equality. Consider adding the new DecidableEq instances to Audit.lean for proper axiom auditing.

Auto-approved and auto-merge armed: No blocking issues found.
Please see Auto-approve Docs for details on setting custom approval criteria. — merges when pipeline and required approvals pass.

✅ 1 resolved
Quality: DecidableEq instances not axiom-audited in Audit.lean

📄 verification/proofs/lean4/Systemet/Audit.lean:39-42 📄 verification/proofs/lean4/Systemet/L1/EtaDecEq.lean:18 📄 verification/proofs/lean4/Systemet/L1/EtaDecEq.lean:54 📄 verification/proofs/lean4/Systemet/L1/EtaDecEq.lean:73-75
The PR explicitly claims the "DecidableEq for NfE/SpE ... landed and axiom-clean" (PROOF-STATUS and PR summary), yet Audit.lean only adds #print axioms for spEKindLe and defEq_to_defEqE. The β side audits both decEqNf and decDefEq (Audit.lean:37-38), so omitting decEqNfE/decEqSpE breaks that convention and leaves the axiom-cleanliness of the delivered DecidableEq half unverified by the gate. Add #print axioms Systemet.L1.decEqNfE and #print axioms Systemet.L1.decEqSpE to Audit.lean to match the β-side pattern and back the stated claim.

Tip

Comment Gitar fix CI to trigger a fix.

Options

Display: compact → Showing less information.

Comment with these commands to change the behavior for this request:

Compact
gitar display:verbose         

Was this helpful? React with 👍 / 👎 | Gitar

Comment thread verification/proofs/lean4/Systemet/Audit.lean
@gitar-bot

gitar-bot Bot commented Jul 28, 2026

Copy link
Copy Markdown

⚠️ Gitar auto-approved this PR but could not enable auto-merge: auto-merge is disabled for this repository — enable "Allow auto-merge" in the repository settings.

@gitar-bot gitar-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Gitar has auto-approved this PR and enabled auto-merge (configure)

@gitar-bot gitar-bot Bot added the gitar-approved Added by Gitar label Jul 28, 2026
@hyperpolymath
hyperpolymath marked this pull request as ready for review July 28, 2026 16:08
@hyperpolymath
hyperpolymath merged commit b4a59d0 into main Jul 28, 2026
42 of 45 checks passed
@hyperpolymath
hyperpolymath deleted the proofs/l1-eta-extension branch July 28, 2026 16:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

gitar-approved Added by Gitar

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant