Closed Blaisorblade closed 10 years ago
so I had no clue what the code snippet meant
Ah, I see the problem. I merged your fix. Thanks a lot.
It would be cooler if the Template Haskell API accepted the name of the function to convert
Nice idea, I opend an issue for that: https://github.com/apunktbau/co4/issues/107
are there restrictions on k
It must either one of the types you defined in your constraint or either one of CO4's prelude types: so there is now way right now to pass functional value. And unfortunately I don't have a clue how to support that.
Finally: is there any link to any Haddock documentation?
No there was not. But I just uploaded the Haddock documentation to http://www.imn.htwk-leipzig.de/~abau/co4/doc/html/co4/ . I recommend to start with CO4.Solve
And unfortunately I don't have a clue how to support that.
My PhD is not in verification but in PL (or anyway, in a somewhat different (sub)area from yours), but I still heard of a couple of very good papers which seem relevant.
There's a standard technique to transform higher-order programs to first-order ones, called defunctionalization (introduced by Reynolds). That's used (IIRC) in HALO: haskell to logic through denotational semantics? They use SAT (and/or SMT)-solvers to check if a program satisfies a contract, with both the program and the contract expressed in Haskell, and they do support higher-order functions using (essentially) this technique.
But I've not seen them do synthesis — in that paper, they just produce counterexamples (at most). Instead, this year at PLDI I've seen people use SAT-solvers to produce pieces of programs: http://dl.acm.org/citation.cfm?doid=2594291.2594340 — unfortunately, in this other work higher-order functions are simply inlined away, so they can't be synthesized.
encMain
andmain
are not currently described — both the README and the actual program useencConstraint
andconstraint
. It took me a while to figure out what was happening.