top | item 11320344

Higher-Order Symbolic Execution

76 points| akakievich | 10 years ago |arxiv.org | reply

10 comments

order
[+] auggierose|10 years ago|reply
On page 3, I see this:

    (define/contract (f x)
    (positive? . âĘŠ . negative?) ; contract
    (* x -1))
Am I missing fonts or does âĘŠ actually mean something?
[+] groovy2shoes|10 years ago|reply
I see the same thing, but I think it's supposed to be a rightward arrow, as in a function from positive numbers to negative numbers. At least, that's how it usually appears in the Racket documentation.
[+] samth|10 years ago|reply
This is now fixed.
[+] spdegabrielle|10 years ago|reply
"it can form the basis of automated verification and bug-finding tools for higher-order programs. "

Does this mean I can verify C++, Haskell, Python, JavaScript & Common Lisp code that uses Higher Order Functions?

[+] samth|10 years ago|reply
That's the idea. We've only done it for Racket so far.
[+] quietplatypus|10 years ago|reply
How is this different from defunctionalizing and converting to smt backend or prolog engine without higher-order capabilities?
[+] samth|10 years ago|reply
Other people have taken that approach, for example the HALO project in Haskell. But the imprecision of the defunctionalizaton often makes it hard to prove the properties you want, especially without static types.
[+] jsli|10 years ago|reply
I am looking for papers about converting to prolog backend. Could you name one for me? Thanks.