You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Two additions on top of the structural agreement work in 1d09ef6 + 3678d64.
1. Extended allocFreeModule exercising all four OwnershipIntent
constructors in a single witness.
allocFreeWithBorrowModule has four functions exercising the full
constructor set:
* alloc : [Produces 0]
* read : [Borrows 1]
* update : [BorrowsExclusive 2]
* free : [Consumes 0]
Witnesses constructed: allocFreeWithBorrowSpecAccepts,
allocFreeWithBorrowVerifierAccepts, allocFreeWithBorrowSourceAccepts.
Confirms the structural witness machinery handles ILAProduces,
ILABorrows, ILABorrowsExclusive, ILAConsumes in a single
FunctionsAccepted spine.
Two further discrimination paths now exist alongside the
Consumes/Consumes case in 3678d64:
* badDoubleProduceModule — [Produces 0, Produces 0]
rejected via TFProducesOther / Refl pattern.
* badConsumeProduceMixModule — [Consumes 0, Produces 0]
rejected via TFProducesOther inside an ILAConsumes shell.
These exercise distinct constructor combinations in the rejection
witness, showing the L10 single-occurrence rule applies regardless
of intent direction.
2. ExtendedAgreement — constructive bridge from VADifferential to
structural acceptance.
The structuralAgreement value (commit 1d09ef6) closes the
structural sublattice but leaves VADifferential witnesses dangling:
no provable VerifierAccepts → SpecAccepts function exists for the
differential case because a fixture name + id alone carry no
structural information.
ExtendedAgreement relocates the trust-injection from "every
VADifferential consumer" to "fixture registration time":
* record TrustedFixture m
— pairs a fixture name + id with the structural witness the
fixture is claimed to certify. Constructing one IS the
trust-injection moment. Grep MkTrustedFixture to
enumerate every fixture trust-injection in the codebase.
* trustedToVerifier / trustedToSpec / trustedToSource
— project a TrustedFixture to each of the three acceptance
predicates via the structural constructor. No further
trust at use site.
* record ExtendedAgreement
— StructuralAgreement plus a fixtureLookup mapping
(module, name, id) to Maybe TrustedFixture.
* emptyExtendedAgreement
— concrete inhabitant with the empty lookup; future fixture
audits replace the lookup with non-empty dispatchers.
* verifierImpliesSpecExtended / sourceImpliesSpecExtended
— total functions promoting VerifierAccepts / SourceAccepts
to Maybe SpecAccepts via the extended agreement.
Structural witnesses pass through; differential witnesses
consult the fixture registry.
Net effect: the VerifierSpecAgreement / SourceVerifierAgreement
records (still obligations for the unconditional case) now have a
constructive sibling that's provable up to fixture registration —
a concrete shape for the multi-week residual rather than a
"multi-week TODO".
Idris2 0.8.0 build green: 22/22 modules. Zero new believe_me,
assert_total, postulate, sorry, assert_smaller. %default total
preserved.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
0 commit comments