I'm not sure of any algorithm reformulation systems in general. The idea seems IMHO to violate Hilbert's Tenth Problem/Halting Theorem.
I was thinking of a constrained brute-force (stupidly so) method of algorithm formulation that, given certain conditions, should eventually produce a solution that is isomorphic for a limited selection of algorithms (I think this should work for functions that do not maintain state between calls and can be expected to or purposefully be designed to halt). I think it would presume some kind of functional language or environment that cleans up all the nasty imperative side effects.
Since the full run of a given system's state before and after a function call is finite, it's susceptable to just plain brute-force number crunching.
What such a system would have to be given is a pre-packaged problem set:
1) an exemplar of the algorithm it must reformulate
2) a limit on the algorithm's input size (ie. "find a new algorithm that works on a given input/packet size or smaller")
a)This input packet must include the input data, various system variables, and anything else that might change how the instructions execute (it would be huge, but finite). This corresponds to one entry in a whole list that corresponds to the full input range possible within the bounds of a given system (huger).
3) a limit on the size of the reformulated solution (ie. "find a new algorithm that is no bigger than N instructions")
4) a limit on the run-time (halt within X cycles on all inputs or be considered invalid), since usability limits will probably disallow any solution that takes 10,000 years
5) an output trace that corresponds to the outputs of the function that corresponds to all the results of the exemplar algorithm running the contents of the input packet (also huge)
The formulator will include a simulator of the target architecture, and it could just produce every combination of instructions in the ISA up the size limit, run each algorithm on the input and compare it to the output of the exemplar.
If there are N instructions in the ISA, and the size limit of the solution is X, then it's something like N^X+(N-1)^X+(N-2)^X... combinations. It's massive, but finite.
The size of the input list would correspond to the every combination of the binary representation of system state + input packet.
2^P in size.
The number of cycles that would be run would be at maximum the time/cycle constraint given.
Checking the output against the exemplar's output trace would be linear to the size of the output list, though that would in the worst case be equal to the size of the input list. It could probably happen in parallel or nearly so with the completion of a test run.
So finding a solution would take in the worst case would be proportional to
(TimeLimit*#InstructionCombos*InputListSize)
One is a fixed value, one is a summation of exponential factors, one is exponential, and they're multiplied together. So it would probably take a while.
On the one hand, this solution is very naive, it doesn't cull out nonsense combinations and it doesn't reuse results. On the other, it is unbelievably parallel, so I guess we'll finally have an excuse to have all those cores after all.
Ways of culling out pointless execution or reusing results would cut down on the vast amount of waste, but they could interfere with the perfect independence of each test case. Smarter use of induction to find repetitive outputs or to prove scalability to all input sizes would also compress the problem size.
Hopefully, whenever a tester finds a valid answer, it can share the result with everyone else.
Since, once you have an answer, you'd know that there would be no better solution for a given architecture within the size limit. If we'd just plug in the formulator program into a formulator program, I suppose we'd be able to find the ultimate formulator for a limited set of functions.
Most expert systems, be it Prolog backwards chaining or Rete-based forward chaining (JESS/CLIPS/etc) seem to devolve into imperative style once they grow beyond a certain complexity.
Prolog, that's what I had in school.