New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Merged by Bors] - feat(slim_check): sampleable instance for generating functions and injective functions #3967
Conversation
a4b0e91
to
cf7c86f
Compare
cf7c86f
to
118ce3c
Compare
…fine `printable_prop`
Co-authored-by: Bryan Gin-ge Chen <bryangingechen@gmail.com>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The tests look really nice, there are some interesting features added here. But I'll admit that again I find this PR very difficult to review. I don't have a sense of what al the high-level additions are.
From the new tests, it's clear there are new testable instances that let slim_check
work on Prop goals and function properties, which is great, and I see instances that add this (and a module doc specifically about functions). Are these features independent or related? I also see instances about functors -- is that part of these features? Another feature that doesn't appear in the tests? Are there other added features?
Basically, this is 1300 lines where my only guidance for reviewing is "new subtype instances of sampleable" and some tests. Besides my minor comments the code looks stylistically fine. And again the tests look great, having slim_check
work on prop logic goals is really nice. But I don't know how to say much about the code as a whole because I can't separate the changes from the new features or the new features from each other.
Are all the changes here too intertwined to separate them? Ideally, there would be a PR that just adds the prop logic functionality (and tests), one that adds the function instances (and tests), etc.
The bulk of this PR is to allow me to generate samples of pi types. Because pi types mostly cannot have
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@cipher1024 I'm sorry, I just don't know how to review this properly. There are too many changes in too many different places, and I don't have a good sense of what single goal the PR is trying to accomplish.
Do you promise that every new feature is documented and has multiple tests? If so: if you can address my couple comments here and change the PR title to show what features have been added, you can merge. But please, really try to split these PRs up as much as you can. If code needs to be refactored for a new feature to work, you can do the refactoring in one PR and the new feature in another. If two features are related but not the same, they should be two different PRs. I can't look at a diff this size and figure out myself the reasons for the changes.
bors d+
✌️ cipher1024 can now approve this pull request. To approve and merge a pull request, simply reply with |
@robertylewis I promise all I did was tested and motivated by the tests I wrote. I take your point however and will try to break things up a bit more. Now that the basics for |
And without further ado, I'm now going to merge it. Thanks @robertylewis ! bors r+ |
…jective functions (#3967) This also adds `printable_prop` to trace why propositions hold or don't hold and `sampleable_ext` to allow the data structure generated and shrunken by `slim_check` to have a different type from the type we are looking for.
Build failed (retrying...): |
…jective functions (#3967) This also adds `printable_prop` to trace why propositions hold or don't hold and `sampleable_ext` to allow the data structure generated and shrunken by `slim_check` to have a different type from the type we are looking for.
Pull request successfully merged into master. Build succeeded: |
…jective functions (#3967) This also adds `printable_prop` to trace why propositions hold or don't hold and `sampleable_ext` to allow the data structure generated and shrunken by `slim_check` to have a different type from the type we are looking for.
This also adds
printable_prop
to trace why propositions hold or don't hold andsampleable_ext
to allow the data structure generated and shrunken byslim_check
to have a different type from the type we are looking for.