On Dalke

Code, algorithms, languages, construction...
syzygy
Posts: 148
Joined: Sun Oct 16, 2011 4:21 pm

Re: On Dalke

Post by syzygy » Sun Mar 11, 2012 1:26 pm

Damir Desevac wrote:Isn't this exactly what all other commerciall authors are doing with open source Robbo ? Some of them even went so far to plagiarize Robbo for commercial purposes, and yet we haven't seen any complain from you or ICGA on this matter.
I think I've seen lots of complaints here and there. Official complaints of course make no sense unless those engines are entered into a tournament or you're the copyright holder.
ICGA is run by a bunch of hypocrats for their own selfish purposes, as long as it benefits their own means.
How does the ICGA benefit?

syzygy
Posts: 148
Joined: Sun Oct 16, 2011 4:21 pm

Re: On Dalke

Post by syzygy » Tue Mar 27, 2012 11:49 pm

syzygy wrote:As I understand it, what Vas is being accussed of is that he took Fruit's source code and either loaded it directly into his editor to work further on it, or had it in a window next to his editor to essentially copy/convert it line by line.
Now that I have looked better at this case, I do not believe the evidence available supports that this is what happened.
lmader wrote:The evaluation of a chess position can be written an infinite number of ways, and the choices made in terms of what to consider, what is useful knowledge vs what isn't, has been an area that chess programmers all do differently, and there is no single best answer. This area is always being changed and improved. The EVAL_COMP document shows that Vas took a huge number of the same eval components as Fruit and used them in the same order.

This is the crux of the issue. User923005 and others argue that Fruit's choice of eval components and the ordering of them is simply an algorithm that is not protectable. This is not true, because the level of creative art involved in arriving at these choices goes way beyond the definition of simple algorithm -> it is the heart of what makes Fruit's algorithm excellent. To say that Fruit's evaluation is just an algorithm that can be taken and used pretty much as is, is to take that level of abstraction too far.
Here I have doubts. I do not doubt that Vas has looked at and taken from Fruit's eval (he essentially admits this, and I accept that the chart in EVAL_COMP confirms this), but I have the impression that in the end he made his own selection of evaluation features.

That some or many of the individual common evaluation features might have been calculated in a "semantically equivalent" manner seems irrelevant to me. None of those individual common evaluation features was "copied" by taking the corresponding source code from Fruit. What was taken, for each of these features, was only the non-copyrightable idea of that individual feature, e.g. determining bishop mobility by counting the number of attacked squares not occupied by friendly pieces.

Had Vas blindly copied all those features (and preferably in the same order), that would probably infringe copyright. But the impression I have at the moment is rather that he made his own selection from Fruit and other sources, and maybe even added some original evaluation ideas.

The argument that "adding 20 of your own does not make it ok to copy 40 from someone else" fails here. The indiivual features are not copyrightable. It is the specific selection of non-copyrightable elements that that is important. Adding 20 of your own is relevant for that reason.

syzygy
Posts: 148
Joined: Sun Oct 16, 2011 4:21 pm

Re: On Dalke

Post by syzygy » Wed Mar 28, 2012 12:28 am

Regarding paragraph 6.3.2 of RYBKA_FRUIT_Mar11.pdf, it seems to be accepted now that the decompiled line "if (movetime >= 0.0) {" should have read "if (movetime > 0.0) {". In other words, the ">=" from Fruit cannot be found in Rybka.

A panel member has suggested that this error in the decompiled Rybka code was already known to him and at least one of the other the panel members in 2010, and therefore certainly at the time of the official investigation.

Is this true? If so, why was this not corrected in RYBKA_FRUIT_Mar11.pdf?

According to this panel member, it was not important. In his words:
You think that a different comparison just invalidates that entire section of the comparison? Not for me.
Could anyone explain this point? Why was it not important that the readers of this document (i.e. the other panel members, the ICGA Board, the public) were presented facts that were as accurate as possible?

User923005
Posts: 616
Joined: Thu May 19, 2011 1:35 am

Re: On Dalke

Post by User923005 » Wed Mar 28, 2012 2:25 am

syzygy wrote:
syzygy wrote:As I understand it, what Vas is being accussed of is that he took Fruit's source code and either loaded it directly into his editor to work further on it, or had it in a window next to his editor to essentially copy/convert it line by line.
Now that I have looked better at this case, I do not believe the evidence available supports that this is what happened.
Without the code to examine (the result of reverse engineering is *not* the code) we are left with guessing "Did Vas modify existing code until it did what he wanted, or did he learn what Fabian was doing and then do something very similar himself?" I consider either outcome a possibility. The problem, as I see it, is that it is very, very difficult to tell which is which.
lmader wrote:The evaluation of a chess position can be written an infinite number of ways, and the choices made in terms of what to consider, what is useful knowledge vs what isn't, has been an area that chess programmers all do differently, and there is no single best answer. This area is always being changed and improved. The EVAL_COMP document shows that Vas took a huge number of the same eval components as Fruit and used them in the same order.

This is the crux of the issue. User923005 and others argue that Fruit's choice of eval components and the ordering of them is simply an algorithm that is not protectable. This is not true, because the level of creative art involved in arriving at these choices goes way beyond the definition of simple algorithm -> it is the heart of what makes Fruit's algorithm excellent. To say that Fruit's evaluation is just an algorithm that can be taken and used pretty much as is, is to take that level of abstraction too far.
Algorithms are not protectable without a patent. Whether or not Vas has gone beyond fair use with bits of code or whether his use of creative expression extracted from Fruit being beyond what is allowed with copyright laws would probably require a level of legal expertize that nobody involved has (just guessing here, but I doubt any of the panel members is an expert is software intellectual rights).
Here I have doubts. I do not doubt that Vas has looked at and taken from Fruit's eval (he essentially admits this, and I accept that the chart in EVAL_COMP confirms this), but I have the impression that in the end he made his own selection of evaluation features.

That some or many of the individual common evaluation features might have been calculated in a "semantically equivalent" manner seems irrelevant to me. None of those individual common evaluation features was "copied" by taking the corresponding source code from Fruit. What was taken, for each of these features, was only the non-copyrightable idea of that individual feature, e.g. determining bishop mobility by counting the number of attacked squares not occupied by friendly pieces.

Had Vas blindly copied all those features (and preferably in the same order), that would probably infringe copyright. But the impression I have at the moment is rather that he made his own selection from Fruit and other sources, and maybe even added some original evaluation ideas.
I agree with this assessment. I do not know if Vas has done something wrong. I also think that the fact that he is disliked by many computer chess programmers is a problem. When an actual jury is selected in a real trial, the defense attorney and the prosecutor carefully quiz the candidates to make sure that they do not have existing prejudices and can arrive at a fair decision. Now, you might say, "But this was not a trial." True, it wasn't. But the outcome had the weight of a trial. A man was claimed to be a bad person in the international press due to the findings.

The argument that "adding 20 of your own does not make it ok to copy 40 from someone else" fails here. The indiivual features are not copyrightable. It is the specific selection of non-copyrightable elements that that is important. Adding 20 of your own is relevant for that reason.
The problem is the process. We can't see what actually happened to generate the code. We also can't see the original, real code that was written by Vas. The structure of the fault-finding process itself was also bad. I don't really know one way or another if Vas has done something wrong. The only thing I am sure of is that I do not like the manner in which he was convicted. I am not blind to the evidence that Vas has clearly used Fruit ideas. But then, it is really a question of degree, since almost every sensible chess programmer uses the excellent ideas collected from Fruit. LMR anyone? How about the extensive use of assert() statements to verify the correctness of the code (a common and excellent programming technique in general, but not found in many chess programs before fruit and certainly not as extensively)? There are lots of things in Fruit that are worthy of duplication, and if we don't duplicate it then we are not doing a good job. Now, the way that we duplicate it and the extent to which we copy his ideas can clearly cross some line where it is no longer a program that I have written but simply a copy of Fabian's program. But sometimes this line is very grey and I think it a very bad idea to pretend that the line is black and white when it is not.

Valters
Posts: 2
Joined: Sat Jul 03, 2010 7:23 pm

Re: On Dalke

Post by Valters » Wed Mar 28, 2012 3:12 pm

Regarding paragraph 6.3.2 of RYBKA_FRUIT_Mar11.pdf, it seems to be accepted now that the decompiled line "if (movetime >= 0.0) {" should have read "if (movetime > 0.0) {". In other words, the ">=" from Fruit cannot be found in Rybka.
actually in the Rybka 1.0 source code generated by HexRays decompiler (found in Ed Schröder's page http://www.top-5000.nl/sourcecode.htm), you can find ">=" not ">", only the ">" sign is the other way because the code in "if" clause has switched places by the code in the "else" clause, other-ways it is exactly as in "RYBKA_FRUIT_Mar11.pdf".

Rybka v1.0 Beta.w32 (c++).c

Code: Select all

  if ( (long double)v45 <= 0.0 )
  {
    if ( v37 > 0 )
    {
      v40 = v37 - 5000;
      v39 = v36 * (v2 - 1) + v37 - 5000;
      v38 = v39 / v2;
      if ( v39 / v2 >= v40 )
        v38 = v40;
      v41 = v39 >> 1;
      dword_667A18 = v38;
      if ( v41 <= (unsigned int)v38 )
        v41 = v38;
      if ( v41 >= (unsigned int)v40 )
        v41 = v40;
      dword_667A1C = v41;
    }
  }
  else
  {
    dword_667A18 = 5 * v3;
    dword_667A1C = 1000 * v3;
  }
RYBKA_FRUIT_Mar11.pdf

Code: Select all

if (movetime >= 0.0) {
time_limit_1 = 5 * movetime;
time_limit_2 = 1000 * movetime;
} else if (time > 0) {
time_max = time - 5000;
alloc = (time_max + inc * (movestogo - 1)) / movestogo;
if (alloc >= time_max) alloc = time_max;
time_limit_1 = alloc;
alloc = (time_max + inc * (movestogo - 1)) / 2;
if (alloc < time_limit_1) alloc = time_limit_1;
if (alloc > time_max) alloc = time_max;
time_limit_2 = alloc;
}

hyatt
Posts: 1242
Joined: Thu Jun 10, 2010 2:13 am
Real Name: Bob Hyatt (Robert M. Hyatt)
Location: University of Alabama at Birmingham
Contact:

Re: On Dalke

Post by hyatt » Wed Mar 28, 2012 6:49 pm

syzygy wrote:Regarding paragraph 6.3.2 of RYBKA_FRUIT_Mar11.pdf, it seems to be accepted now that the decompiled line "if (movetime >= 0.0) {" should have read "if (movetime > 0.0) {". In other words, the ">=" from Fruit cannot be found in Rybka.

A panel member has suggested that this error in the decompiled Rybka code was already known to him and at least one of the other the panel members in 2010, and therefore certainly at the time of the official investigation.

Is this true? If so, why was this not corrected in RYBKA_FRUIT_Mar11.pdf?

According to this panel member, it was not important. In his words:
You think that a different comparison just invalidates that entire section of the comparison? Not for me.
Could anyone explain this point? Why was it not important that the readers of this document (i.e. the other panel members, the ICGA Board, the public) were presented facts that were as accurate as possible?

After Ed pointed the >= vs > comparison error out, I remembered that I had seen this a while back. I originally thought Mark Watkins might have mentioned it, and asked him. He thought it had come up on CCC in mid-2010. I did not recall this until Ed's comment. And even then, the "recollection" was vague and I still don't know exactly when/where/who mentioned it.

The reason I said "this is unimportant" is that this is a single line of code, out of all the evidence that has been shown. It is not even 0.1% of the total evidence. And as I said, "If you remove that line" nothing changes. The rest of the code around that line STILL matches between the two programs, not to mention the search and eval code included in the report.

Clear enough???

syzygy
Posts: 148
Joined: Sun Oct 16, 2011 4:21 pm

Re: On Dalke

Post by syzygy » Wed Mar 28, 2012 8:03 pm

It is not up to you to decide whether leaving this out is unimportant. The purpose of the document is to present the evidence to the reader, so that the reader can make up his mind himself. Or am I missing something here?

orgfert
Posts: 183
Joined: Fri Jun 11, 2010 5:35 pm
Real Name: Mark Tapley

Re: On Dalke

Post by orgfert » Wed Mar 28, 2012 8:41 pm

syzygy wrote:It is not up to you to decide whether leaving this out is unimportant. The purpose of the document is to present the evidence to the reader, so that the reader can make up his mind himself. Or am I missing something here?
A sense of proportion.

syzygy
Posts: 148
Joined: Sun Oct 16, 2011 4:21 pm

Re: On Dalke

Post by syzygy » Wed Mar 28, 2012 9:36 pm

orgfert wrote:
syzygy wrote:It is not up to you to decide whether leaving this out is unimportant. The purpose of the document is to present the evidence to the reader, so that the reader can make up his mind himself. Or am I missing something here?
A sense of proportion.
Maybe you think I am protesting the fact that an error was made and ended up in one of the reports. I am not. Errors happen.

What I would like to know is why, if the error was known already in 2010, it was not corrected. Ok, maybe it was simply forgotten so that it is a case of error upon error. Fine then.

What I do protest is the fact that one or more panel members do not seem to care that this error is present in the report. "Doesn't matter, he is guilty anyway." This I find a very serious problem. It implies e.g. that these panel members are of the view that the ICGA Board didn't need to know the full facts before deciding.

syzygy
Posts: 148
Joined: Sun Oct 16, 2011 4:21 pm

Re: On Dalke

Post by syzygy » Wed Mar 28, 2012 9:47 pm

User923005 wrote:Without the code to examine (the result of reverse engineering is *not* the code) we are left with guessing "Did Vas modify existing code until it did what he wanted, or did he learn what Fabian was doing and then do something very similar himself?" I consider either outcome a possibility. The problem, as I see it, is that it is very, very difficult to tell which is which.
The way I understand things now, there are basically two separate accusations.

One is about literal code copying (with some modifications afterwards). The time allocation code allegedly is an example of this.

The other is about non-literal code copying. The set of common evaluation features allegedly is an example of this.

The two are not completely unrelated, but I would say they do not add up: if both can only be "half proven", this does not add up to a "full proof" of wrong doing.

Having the Rybka source would probably help for the first accusation, especially if there turns out to be much more than the few small pieces that I have seen so far. Those few pieces seem to allow for alternative explanations, especially since a lot of those pieces are explained e.g. by reading the UCI protocol. One could also wonder whether, even assuming those pieces were copied, this amounts to an infringement of Rule 2. The pieces are tiny compared to the whole programs and are hardly related to game play (sure, time allocation is a little bit game play related).

Suppose those tiny pieces had been copied with full permission from Fabien. Would Vas then have infringed Rule 2 for not entering Fabien's name as co-author on the form? I think not. (Note that Fabien (not) giving permission is not an element of Rule 2: whether he gave it or not does not change whether Vas violated Rule 2 or not.)

The second accusation I have already discussed in my comment above. I don't have the impression that having the Rybka source code would make much difference here. The code implementing the evaluation featurse was certainly not copied. It is completely different. The only question here is whether Vas crossed the line between idea and expression in selecting his set of evaluation features. I would say no, but I accept that reasonable people can disagree on this point. One thing is certain: this is a grey area.
User923005 wrote:Algorithms are not protectable without a patent. Whether or not Vas has gone beyond fair use with bits of code or whether his use of creative expression extracted from Fruit being beyond what is allowed with copyright laws would probably require a level of legal expertize that nobody involved has (just guessing here, but I doubt any of the panel members is an expert is software intellectual rights).
This area is so grey, that it seems almost sure that different jurisdictions would come to different conclusions. It seems rather credible that Vas honestly thought he did nothing wrong when "copying" evaluation ideas. Even if the ICGA would have to disagree that he did nothing wrong, it seems very questionable to punish Vas so heavily for happening to be on the "wrong" side of a very vague line.

And then of course there is the whole conviction process. Although the ICGA Board bears responsibility for the final decision, the panel was clearly intended to prepare the decision for the Board. This in itself is not a problem at all, but it does mean that all panel members should have been impartial. This was clearly not the case.

Even if the ICGA Board has not acted unlawfully by not ensuring a fair procedure (which is debatable), that is not an excuse. (If it was an excuse, the Board could as well have decided straight away, without any investigation.)

Until recently, for me the by far strongest argument against Vas was his lack of cooperation. However, now that I have seen a bit more of the history of this whole issue I can understand that Vas did not see any point in cooperating with a panel basically led by Bob. Bob was not the whole panel, but it takes a lot of faith to believe that the panel could have deviated from his views.

Post Reply