If my understanding is correct, you and CW are arguing against using Fruit 2.1 as a template when reconstructing equivalent C code to the Rybka executable [whether it should be "equivalent" in the functional or semantic sense is a decision for a particular situation]. However, this use of a "template" is a standard procedure when comparing a specific source to an executable (or programs more generally). As others have noted, the main "sanity check" is to ensure that the source template is sufficiently idiosyncratic for an accidental match to be unlikely. This can usually be quantified (if desired), via something like the amount of code [under a suitable metric] that needs to be changed from the source to produce what is in the executable, and then comparing that to other specimens.Rebel wrote:But as you are used to criticize RF postings here I was wondering why you (yet?) did not address the what's called Fruitication issue.
E.g., the Rybka 1.0 Beta PST can be derived exactly from the Fruit 2.1 code with 2 added lines, 4 deleted lines, and 18 changes of constants ("tuning parameters" and/or scaling). I am unaware of a non-Fruit-based program (particularly from ~2005) for which the necessitated change-set is so small. As a specific example of this "sanity check", one can note that generating the PST for Fruit 1.0 appears to require (many) more modifications to the Fruit 2.1 code than Rybka 1.0 Beta does.
Thus, the exact "Rybka source code" [whether it exists or not] is largely irrelevant to determining whether a given Rybka executable is "substantially similar" to Fruit 2.1 and/or whether Rybka is "original". One doesn't elude "copying" via changing/re-typing variable names, moving code blocks around, changing iteration into recursion, tweaking constants, etc., any more than one could say the same concerning a literary work that changed some phrasing, added/subtracted jargon words, and permuted paragraphs, with a few extra plot twists to boot. The opinion of VR in this matter seems similar (in a case where he states that there were "extensive" changes). I strongly suspect the Strelka source code looks "quite different" from the corresponding Rybka source code, yet indeed a substantially similar result was obtained.