Mark, Chris and I are two different persons, we differ on some R=F issues yet we come to the same main conclusion. Perhaps it's not a coincidence we are both ex-commercials and therefore have different weight-factors.BB+ wrote: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.
Bob, Chris and I hand-typed those PST's. And the information in all those cells is already very limited and are very similar between programs. Modern programmers don't type them but create them via a formula and a couple of weight factors and so the information in the PST's are even more reduced.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.
I understand the concept of RE including semantics very well, don't let Bob fool you. All my chess programs were in assembler since 1982 (Z80, 6502, RISC and finally PC since 1992). In the process I learned C for speeding up ASM programming, I first type everything in C, test it and and when it's good I run that piece of code through the compiler using -o -code, import the optimized code into my ASM sources and then manually optimize it further, looks circuitous but in practice pays off time with a factor of 2-3.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.
Strelka then, a blunder of Vas to call Strelka his own, oil on the fire for those who already were suspicious and as such they doubled their energy. Same blunder as to state in December 2005, "I went forwards and backwards the Fruit sources and took many things". The problem I see here that it portraits Vas as an incompetent person not able to oversee his public words if he indeed was a cheater and copy boy. He shows exact the opposite behaviour one would suspect from a cloner, they hide, operate in secrecy. Cloners don't say, "I took many things.......", it would be the first time.