Two kinds of progress on Project X
I have a working proof-of-concept written in Delphi, which can invoke the ncd executable and retrieve its results through the use of temporary files, including a batch file. It's a bit hacky, but it could be the basis for a robust approach, especially if I build a complete file of all the lines in the second witness, and run each line of the first witness against it. The command line has -t [filename of multiple lines] -f [filename of single line to compare], and the results come back space-separated, so they're easy to parse. This is probably the best option; the hard thing is going to be providing useful feedback, but it would make sense to batch up the input lines into groups of 10, so we can keep showing incrementing progress, and allow for cancelling out of the procedure.
At the same time, I'm toying with the idea of implementing the algorithm itself natively in Delphi. The difficulty will be doing arithmetic on the huge numbers which are the compressed streams of data; I have no idea how to do that, so I've put out a couple of feelers and I'm letting the idea percolate in my brain a little. I found this very useful library, which I had to tweak a bit to get it to compile under Delphi 2009; it should give me the arithmetic support I need, and I think the rest is just a matter of figuring out how to get compressed streams into the byte arrays representing huge integers.