Skip to content

Test proof-irrelevance and parameterised records systematically - #110

Open
mvr wants to merge 4 commits into
mainfrom
coln-compiler/more-ir-tests
Open

Test proof-irrelevance and parameterised records systematically#110
mvr wants to merge 4 commits into
mainfrom
coln-compiler/more-ir-tests

Conversation

@mvr

@mvr mvr commented Jul 29, 2026

Copy link
Copy Markdown
Collaborator

Many of the Set/Prop combinations will end up being lowered differently, so I think it's worth doing all possibilities just to be sure. For these families, the runtime test is exactly the same across all the variants: the point is that the user shouldn't see that the storage for the theories could be very different.

  • dependent-function-* tests (a : A) -> B a
  • dependent-function-argument-* tests (a : A) -> (b : B a) -> C a b
  • family-argument-* tests (a : A) -> B a -> Set/Prop
  • lookup-{argument,field}-projection-* tests families indexed by the output of a function
  • lookup-composition-* tests the same for a composite of functions

Some other compiler pathways were still missing tests:

  • param-record-* tests records parameterised by various things
  • param-record-type-family-* tests records parameterised by a type family specifically
  • proof-record-* tests records that contain a proof field
  • prop-record-* tests records that themselves live in Prop
  • equality-record-* tests equality of records
  • param-alias-* tests parameterised records and aliases
  • empty-prop-record-function tests functions into a trivial proposition
  • record-nested is a minimal nested record case

mvr added 4 commits July 29, 2026 13:10
It feels excessive, but many of the combinations will end up being
lowered differently.

* `dependent-function-*` tests `(a : A) -> B a`
* `dependent-function-argument-*` tests `(a : A) -> (b : B a) -> C a b`
* `family-argument-*` tests `(a : A) -> B a -> Set/Prop`
* `lookup-{argument,field}-projection-*` tests families indexed by the output of a function
* `lookup-composition-*` tests the same for two a composite of functions
* `lookup-proof-result-argument` is a special case (could be expanded to 8 cases)
* `param-record-*` tests records parameterised by various things
* `param-record-type-family-* tests records parameterised by a type family specifically
* `proof-record-* tests records that contain a proof field
* `prop-record-* tests records that themselves live in `Prop`
* `equality-record-* tests equality of records
* `param-alias-*` tests parameterised records and aliases
* `empty-prop-record-function` tests functions into a trivial proposition
* `record-nested` is a minimal nested record case
Remove subsumed `lookup-proof-result-argument` special case
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant