-
Notifications
You must be signed in to change notification settings - Fork 10
Impossible operation asserted in the SAWCore prelude #13
Comments
What do you mean, "cannot exist"? An operator with exactly this type is at the center of Higher Order Logic. Anyway, operationally this is another one of those "magic" ad-hoc-polymorphic functions that does lots of non-parametric stuff with its arguments. Currently it's used to model |
I'd argue that the "Bool" of higher order logic is very different than the "Bool" in SAWCore. As I understand it, HOL's Bool is the type of classical logical propositions (for which no notion of effective computability is assumed), whereas SAWCore's Bool is a computable 2-element type (or, perhaps, the flat domain with two nonbottom elements). SAWCore's Anyway, my problems with this function are two-fold. First, it cannot be total and computable (there exist types with no computable equality). Second, it cannot be parametric (unless it is actually a constant function, which is useless). RE ad-hoc polymorphsim: I think I understand how these pieces all fit together now, and more or less why they are this way. I think we can make this work more cleanly by using an explicit dictionary-passing translation. The ad-hoc polymorphism would then get compiled into type-directed explicit dictionary selection during the Cryptol->SAWCore translation. |
This operations is tied up into issues dealing with how we represent the type classes of Cryptol and the primitive operations that apply to all Cryptol types. Further discussion on this topic is better directed toward GaloisInc/cryptol-verifier#1 |
* updated to bv-sized branch of what4 * update to hackage bv-sized Co-authored-by: Ben Selfridge <[email protected]> Co-authored-by: Ben Selfridge <[email protected]>
Adapt to renaming of package `cryptol-verifier` to `cryptol-saw-core`.
In the intervening time since this ticket was opened, we reworked the translation of Cryptol's typeclasses to use explicit dictionary passing in SAWCore. The other dodgy parametric functions have since been removed, but the |
As far as I can tell, this (and the corresponding use on the JVM side) is the only remaining use of the Probably, we should just dispatch on the type and select the correct equality. |
Fixed via #176 |
The following polymorphic operation cannot exist in any meaningful capacity, but is nonetheless asserted to exist in the SAWCore prelude.
I would like to understand its purpose before deleting it.
The text was updated successfully, but these errors were encountered: