Rebel wrote:Allow me some remarks. I deliberately take the Vas=innocent position for the sake of the discussion.
BB+ wrote: Here is a list that I came up with (again I rely partially on ZW) of "suspicious" things in Rybka:
* Re-use of exact same File/Rank/Line arrays in PST values (as opposed to an "idea" where statics would be built up in this way, but with different numbers)
One can only add the word suspicious if one have checked more programs (say 10-15) and found no such similarities. Perhaps things like these are common in many chess programs. Have Bob, Zach, you, checked 10-15 programs for its absence?
I have looked at many, many open source programs. I can assure you that no original engine has PSTs can be calculated with the same constant arrays. Fruit/Toga/other derivatives will have the same values, obviously. Sloppy is another case that has the same PSTs--but the author clearly said that his evaluation was copied from Fruit. If there are closed source programs that have PSTs from the same constants, I would likely have the same opinion about them as Rybka.
* Time management and UCI parsing, particularly the "0.0" appearance
The 0.0 case is indeed suspicious. UCI parsing: perhaps its code is public domain. Fabien took it and so did Vas. Has this option been researched by Zach, Bob and you?
This has some remote possibility of being true, but I think it can be ignored. The code as implemented in Fruit is licensed under the GPL, and AFAIK Fabien never released any part of Fruit as public domain. Fabien could have given the rights to Vas though. I think if either of these possibilities were true, someone would have said something about it (particularly Vas).
* Copying of the position at the top of the search (Fruit actually copies it back at every iteration), which is pointless as-is in Rybka (it is copied back after the search, again for no reason). Both search 4 ply when a move is forced. [You can also include setjmp under this "Search Start" heading if you like, and I haven't checked whether Rybka actually copies the position, as opposed to Strelka].
Mine does the same, copy the board before the search starts. It doesn't matter if that is pointless, there are many things in mine that are not in use, they are either remains of previous ideas and forgotten to remove or I leave them there on purpose for future ideas.
Mine searched forced moves 3 plies in the early days until I increased it to 5 in order to have a better move to ponder. I don't see the relevance, 4 is an excellent value also and I suspect most programs do it this way.
The whole root search is a bit more similar than just copying the board position. I need to bust out the old disassembler again and look at it, maybe I can say more here. I should really not waste my time though
The 4 plies is a pretty big "coincidence" IMO. Maybe there are other programs that have this same value, but I don't know of them. This one piece, like so many others, isn't a smoking gun that alone proves guilt, but it certainly isn't evidence of Rybka being original.
* Great similarity in evaluation. Here the "ideas" concept comes into play. Specific things could be the 1:2:4 weighting of minor:rook:queen (why not 3:5:9?) and the identical minutiae with the DrawBishopFlag -- to offset the former, Fruit has a linear interpolation across phases, while Rybka's is more complicated.
Using Vas own words: I took many things. I don't see the relevance.
When I was going through the Fruit-eval I wrote down 2 ideas, code for trapped (white) bishop (h6/a6) and the code for freeing ones rook in Kg1<>Rh1 situations. It's perfectly legal to add these ideas to mine, release it without any breach of the GPL. Again, what's the relevance?
I will note that Rybka took these too
In Rybka's case, for these patterns, the evidence is a bit more damning--there is a function just like eval_pattern in Fruit, where the same three patterns (the two you mention plus minor blocking D/E pawns IIRC) are evaluated in the exact same order. Again, somewhere between ideas and implementation, it's a big grey area. There's a lot of stuff there with evaluation, and focusing on one small part will probably not give you the full picture.
* The use of 10, 30, 60, 100 weighting in passed pawns. If this were a one-off, I could believe the recurrence of this numerology was accidental.
Mine has similar values. It's not suspicious at all.
It's actually not the values BB says--its {0, 24, 77, 154, 256}. IIRC I did a comparison and Rybka doesn't take 10-30-60-100, but rather the rounded values /256 (which was done by hand, since they all round up--i.e. not integer division). This is because the rounding is exact--if you take the Fruit values and multiply by the Rybka weights, it's exact, which wouldn't happen for just similar values.