Reconstructing Abstractions

I am interested in constructing higher-order functions (e.g. map/filter/fold) from stack-based byte-code generated from non-functional languages (like Java), where most things are expressed in for-loops. I am wondering what keywords would lead me to related work and if anyone knows some good papers to start with?

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

Refunctionalization

If the abstractions you want to reconstruct include functional abstractions, then check out refunctionalization.

Atsushi Ohori

A recent post of mine discusses the work of Atsushi Ohori. One of the things he has done is Proof-Directed De-compilation of Low-Level Code (PDF) where Java bytecode was used as the example. It decompiles into lambda terms, but I'm not sure how high-level the result is. If nothing else, it should become a simpler problem.

program transformation

Hi Christopher,

I would start here. There has been a lot of work on translating assembly language to 3GLs. Martin Ward's FermaT is a freely available program transformation engine that is quite powerful. It should meet your requirements.

Much appreciated

These are all excellent links and directions. It is exactly what I was hoping for. Strangely enough I managed to overlook the fact that what I am looking to do is a kind of decompilation, even though I am not going to the original source. Thank you all very much!