Not logged inRybka Chess Community Forum
Up Topic Rybka Support & Discussion / Rybka Discussion / For non programmers (locked)
1 2 3 4 5 6 7 8 9 10 Previous Next  
Parent - - By AWRIST (****) Date 2011-07-30 13:22
But I understand it right Bob is still a married man, no?
Parent - By bob (Gold) Date 2011-07-31 19:42
for 43 years and counting, yes.
Parent - - By M ANSARI (*****) Date 2011-07-31 19:35
I can shed more light on when Vas left CCC.  It was during a time where a vast majority of posts were about Rybka or Rybka related.  That did not sit well with a lot of people and once Rybka went commercial, there was an active campaign to stop Rybka posts because it supposedly was against the CCC charter.  Vas then went on to start the Rybka forum and pretty much quit CCC.
Parent - By bob (Gold) Date 2011-07-31 19:43
That one is actually correct.  The CCC charter specifically excludes posts that exhort a commercial product.  We let a release announcement slip through, but not a whole thread of posts about it...
Parent - By M ANSARI (*****) Date 2011-07-31 06:42
A very good point and it really is so arrogant in many ways.  Throw a bunch of stuff at the general public, and then when they disagree with the findings ... just give them the finger and tell them they are too stupid to understand any of it.  Very arrogant ... if it IS only designed to be understood by programmers, why push it on everyone.  Copying in my book is "copying" as understood by everyone else.  Why should ignorant idiots like us (non programmers) have to "understand" that copying is actually not really copying ???
Parent - - By bob (Gold) Date 2011-07-30 16:41
You should also see my response to Chris.  If you use a fixed, fractional multiplier to convert from A to B, where the multiplier is a decimal number, and the A/B arrays are integers, you can not then take corresponding elements of A and B and then compute the fractional multiplier.  Because integer truncation means you don't have the "exact" conversion number, you have an integer approximation.

I am absolutely amazed at how little supposed "programmers" know about basic computer science concepts.

But I guess I am still learning.  Except that I am learning how much you have not learned...

Parent - - By Rebel (****) Date 2011-07-30 17:15
Nice rhetoric, don't post the evidence, shoot the messenger instead.

Now post those PST's (the evidence) instead of referring to non-existence code in Rybka.

Question: were the full PST's published and scrutinized during the investigation of the panel ?

Or did the panel members took your rhetoric for granted ?
Parent - - By bob (Gold) Date 2011-07-30 17:27
Mark watkins has a paper, I think dated March 11, that gives the Rybka PST values and the Fruit PST values.

do a little homework, rather than continuously bitching about what you don't know.  None of this was hidden.  The link to his paper is on the ICGA panel wiki.  I did not look to see if it is "public" but believe all such reports were made public.  I think the link (under Mark Watkins on the wiki) is to a document:  " RYBKA_FRUIT_Mar11.pdf"  The Rybka PST values are there.  That's where I did the comparison to in response to Chris' claim that the numbers didn't match.

There was no "my rhetoric" with respect to the PSTs.  Zach started the ball rolling a couple of years back when he found the "conversion formula" to make Fruit's code produce Rybka's numbers.  Mark added to that.  It is all in the various reports.

Why do you want to be critical of something you haven't even read, apparently???

This is a trend here it seems...
Parent - - By Rebel (****) Date 2011-07-30 17:45
Look Bob, you make the accusation -> Fruit (PST) = Rybka (PST).

You provide the evidence, right ?

And you did not answer my question, did the panel (or did the panel not) scrutinize byte by byte the PST's from Fruit and Rybka ?
Parent - - By bob (Gold) Date 2011-07-30 18:52
I believe I answered that.  Those of us that read the reports certainly saw it all.  Chris said Zach's code was wrong.  I spent about an hour finding the old code I had used to verify Zach's numbers, and posted the results yesterday.  I did not copy Rybka's numbers because Mark has them in some sort of format that copy/paste screws up.  Instead I pointed to the document that has the rybka and fruit PST numbers...

BTW, _I_ didn't make that accusation.  Zach discovered it.  Maybe every now and then you can get something right???

As for who on the panel did what, I can't speak for them.  This is not a "Borg collective".  You'll have to ask them yourself.  Did YOU read the stuff?  Why didn't YOU join the panel, and the discussions?  YOU signed the original complaint.  Seems funny that you didn't have time when the panel was deliberating, but you have plenty of time now.  Some sort of "popularity contest" agenda???

So where were YOU when it really counted?  MIA.
Parent - - By RFK (Gold) Date 2011-07-30 19:04

> Seems funny that you didn't have time when the panel was deliberating, but you have plenty of time now.  Some sort of "popularity contest" agenda???

> So where were YOU when it really counted?  MIA.

What is with you, Bob?  That you have to chastise and question the motives of someone for making the decision to step back and take another look -and admittedly a more critical look- at what past as solid evidence -and is now looking more and more untenably and contestably as controvertible evidence! What? Are you so afraid of ending up alone in your views?
Parent - - By bob (Gold) Date 2011-07-30 19:19
No, that he says "it was my claim, I should show the data."  The PST stuff was discovered, and reported by, Zach.  The data is in his and Mark's reports.  Ed signed a letter that said he had reviewed the information and felt an ICGA investigation was required.  It is always "copy the relevant data and post it here..."  Too much trouble, it seems, to go read the reports so that everything is in context...

This is a world of adults.  Feed yourself or starve.  I'm not spoon-feading anyone.
Parent - - By RFK (Gold) Date 2011-07-30 19:40
Are you going to take your ball and go home now, too? You cannot have it all your way Bob!
Parent - - By bob (Gold) Date 2011-07-30 19:45
I haven't taken "my ball" anywhere...  I'm still here.
Parent - - By RFK (Gold) Date 2011-07-30 19:47
Everything evolves around you Bob! :yell:
Parent - - By bob (Gold) Date 2011-07-30 19:52
So that is what, 20+ posts today, not one scintilla of technical discussion among 'em?

Sunday a slow day for you???
Parent - - By RFK (Gold) Date 2011-07-30 20:14
Hey, Bob! Look on the bright side. Not all the student evaluations were critical of you. A few denoted your penchant for being opinionated and warned others to watch what they said to you- and that you liked telling stupid jokes. But beyond that you did okay.
Parent - By bob (Gold) Date 2011-07-30 20:42
You have none, but keep up the pretense.  It's about all you have left...
Parent - - By Rebel (****) Date 2011-07-30 20:06
Evading questions by adding non relevant stuff into the discussion is a known tactic.

Together with your refusal to post the PST's and discuss it here I will have to take that as a NO then.

Else please show me the panel postings about the Fruit (PST) vs Rybka (PST).

Your evasive answers imply that it wasn't discussed at all.

We can't have that, now can we ?
Parent - - By bob (Gold) Date 2011-07-30 20:55
Ed, I'll give you the same advice I gave another person here.  Grow up.  You are _supposed_ to be an adult.  YOU signed the formal complaint to the ICGA.  The invitations for the panel were made public.  I don't see your name as one of the 34.  I am not going to rehash panel discussions you could have participated in if you had just taken the time.  I won't speak for other panel members as to what they read and what they didn't.  There were some that discussed the PST data before the panel was formed.  I was one of those.  I took the code that Zach provided and converted it into a program.  And modified fruit to dump it's PST values after they were initialized, and they matched.  I changed the 4 constants in Zach's code and ran it again and compared the output to the Rybka PST values that had been disassembled.  They matched.  So _some_ of the panel were familiar with that in detail.  I told you quite directly to look at the March_11 paper by Mark.  He compares the _numbers_ in fruit/rybka PSTs, by giving both side-by-side.  Then he shows how to translate from one to the other.  The paper is on the ICGA wiki.

I was not evasive in the least.  I wonder why it is so important now, but not important enough for you to join in?  The _others_ on the letter joined.  Sort of strange sounding, when you think about it.

But if you are interested, look for the march_11 document Mark submitted.  Read it.  The actual PST values from Fruit and Rybka are there.  And they matched the numbers I got when I ran both versions of Zach's code that is published in his report.  Seems simple enough to me.
Parent - - By Rebel (****) Date 2011-07-30 21:09
Your refusal to post the evidence is noticed and recorded for the third time now.

I get the feeling Chris is right when he said:

By Trotsky   Date 2011-07-29 17:48 Apologies for jumping in, but ......

But don't you think that by just showing the PST's from Fruit and Rybka would have been a lot more clear for everybody ?

well, if You, Ed were doing this, you would be seeking to find TRUTH, so your suggestion would be more than sensible.

But Zach was trying to prove guilt, which ain't the same thing at all. He NEEDS side by side visual matching to wave around the wiki panel, the icga and then the public forums. Idea is that nobody can argue with two columns of "identical" stuff.

If he puts side by side PST pairs, there's no visual match.

If he puts side by side PST pairs, and next to them their division matrix, trying to show multiplicative matching through the division matrix showing one constant, it will work a bit but nowhere enough, the bulk of the tables would be too different.

So that leaves the apparently most damning side by side possibility consisting of the Fruit source alongside Zachs entirely fantasy source. So that was chosen. Objective: to prove guilt.

And this "proof" worked amongst the esteemed panel and among the icga board and was released (as links) in the public document, presumably also available to the world's press.

It was only when it got to the REAL "court", ie open debate, that the "proof" fell apart, but it had done it's job by then. So, as Zach tried to say: "move along now, nothing to see here".


I also think you are doing Mark Watkins and Zach Wegner a very bad service.
Parent - By bob (Gold) Date 2011-07-30 21:20 Edited 2011-07-30 21:23
I think you are doing yourself a "very bad service" by showing that you are not willing to do any work at all, you want to sit back and be spoon-fed like a 1 year old.  Even kids 2 or 3 years old want to feed themselves.

I have already posted the fruit PST numbers here in the thread started by Chris.  I could not figure out how to copy/paste from Mark's paper, the numbers would not copy correctly and show up here in anything but a long string of digits.  So I suggested that to see those, they can be found in the paper.  How is telling you where they are, because I can't copy them here, "refusing to show them?"  You do realize just how bad such a statement makes you look.  I suppose I could spend a couple of hours trying to figure out how to cut/paste from some odd table-structure inside a pdf document, and get it to post on this message board properly, or I could spend an hour or so copying the numbers one by one by hand.  Or you could just go look at the report from Mark which would take you 15 seconds to download, open, and skip down to where he has the fruit and rybka PST values side-by-side.

Exactly how am I doing Zach and Mark a "very bad service"???  By referring you to their papers?  By not spoon-feeding you?

I had zero problem finding the data in response to Chris's nonsense about "constant multiplier" yesterday.  Surely you can match my ability to point and click in a browser at the ICGA wiki???


Forgot about this.  You _could_ take the code from Zach, using the "rybka constants" and run it.  That will give you the exact Rybka PST values, as confirmed by several of us...  I can post that code here if you want...
Parent - - By RFK (Gold) Date 2011-07-30 21:18

> Ed, I'll give you the same advice I gave another person here.  Grow up.

Ed, you've done a hell of a lot more growing than Dr. Hyatt and I'd encourage you to stay on and continue your work in evaluating the ICGA report.

> There were some that discussed the PST data before the panel was formed.  I was one of those.  I took the code that Zach provided and converted it into a program.  And modified fruit to dump it's PST values after they were initialized, and they matched.  I changed the 4 constants in Zach's code and ran it again and compared the output to the Rybka PST values that had been disassembled.  They matched.

You took the code that Zach provided and converted it into a program?  You the one with the largest axe to grind? You were  left in charge of these details. With the recent reports of poor science being practiced.

My God man! No wonder you are manically driven to quiet this whole affair up. What is under all this Dr. Hyatt that you don't want anyone to see? 1200 posts of nothing to hide?
Parent - - By bob (Gold) Date 2011-07-30 21:38 Edited 2011-07-30 21:40
Ok, small words so you can follow.

Zach's paper gives us code to produce the fruit and/or rybka PST values.  It gives a "code fragment" (sorry if that is too big a word, but it is the best one).  The code won't run as anyone that programs in C understands.  It has no "int main(){" on the front.  It has no code to print the values at the bottom.  I copied Zach's code exactly, added the "int main" and the loops at the bottom to print the arrays out.  Zach's code was untouched.  The code with the 4 constants he gives for fruit produces a set of 128 values for the knight that matches Fruit's values exactly.  How do I know?  I took fruit 2.1, and in pst.cpp I added code in the procedure pst_init() to print the knight PST values after initialization was complete.  I posted both sets of numbers in the thread Chris started about this.  I then changed just the 4 constants needed to alter zach's code from fruit PST values to Rybka PST values and printed those.  And also posted them in the thread Chris started.  I compared those to the disassembled PST values Mark had included in his march_11 report (which has fruit/rybka pst values side-by-side.  They matched.

Seems pretty simple to me.  If you know anything about programming, all you have to do is take Zach's paper, look at the PST code at the top, cut/paste it into a file.  Add the "int main() {" at the front.  and a "}" to the end.  Right before that "}" add a double loop to print the 64 values for one of the tables.  Duplicate that code but change the subscript from opening to endgame, and dump those.

Not that hard.  Nothing untoward.  If you like, I can post the code.  In fact, here it is...

======================code added=======================
#include <stdio.h>

#define square_file(s) (s & 7)
#define square_rank(s) (s >> 3)
======================end code added=====================

int KnightLine[8] = { -4, -2, +0, +1, +1, +0, -2, -4 };
int KnightRank[8] = { -2, -1, +0, +1, +2, +3, +2, +1 };

int KnightCentreOpening = 5;
int KnightCentreEndgame = 5;
int KnightRankOpening = 5;
int KnightBackRankOpening = 0;
int KnightTrapped = 100;

=====================code added==================
int main() {
  static int ko[64], ke[64], sq;
=====================end code added================
  for (sq = 0; sq < 64; sq++) {
    ko[sq] += KnightLine[square_file(sq)] * KnightCentreOpening;
    ko[sq] += KnightLine[square_rank(sq)] * KnightCentreOpening;
    ke[sq] += KnightLine[square_file(sq)] * KnightCentreEndgame;
    ke[sq] += KnightLine[square_rank(sq)] * KnightCentreEndgame;
  for (sq = 0; sq < 64; sq++) {
    ko[sq] += KnightRank[square_rank(sq)] * KnightRankOpening;
  for (sq = A1; sq <= H1; sq++) {
    ko[sq] -= KnightBackRankOpening;
  ko[56] -= KnightTrapped;
  ko[63] -= KnightTrapped;
=======================code added====================
  for (sq = 0; sq <= 56; sq += 8) {
    int t;
    for (t = sq; t < sq + 8; t++)
      printf("%5d ", ko[t]);
  for (sq = 0; sq <= 56; sq += 8) {
    int t;
    for (t = sq; t < sq + 8; t++)
      printf("%5d ", ke[t]);
======================end code added====================

I've even added comments on what I had to add.  The two macros to extract the rank or file from a square were not in his code.  I defined those.

Now, want to show me where I did something "dishonest" or "underhanded" here?

If you change the 4 constants at the top of Zach's code to use the values he gives for Rybka, then you get the rybka numbers that match precisely with what Mark gave in his PST analysis where he provided the disassembled numbers right out of Rybka.

Pretty easy, eh???  And yeah, Ed is _really_ doing a good job here...  I just don't know what his job is supposed to be.

One other change.  Fruit uses a 3d array.  Pst[piece][square][phase]

I replaced that by ko (knight opening) and ke(knight endgame) for simplicity.  Compare to Zach's code to see the change...
Parent - - By Nick (*****) Date 2011-07-30 21:54
Bear with me here, I am not a chess programmer, but here are some points:

1) There are a number of ways that Vas could have written his PST generating code, a trivial example change would be to use an outer loop ranging from 1 to 8 (ranks or files) and an inner loop ranging from 1 to 8 (files or ranks)

2) Vas did not ship his PST generating code in the Rybka executable, he shipped the outputs of it and statically linked them into the exe (which I assume is why it's so big compared to other chess engines) ..

Isn't this just a superb stroke of genius that allows idea taking from Fruit or any other chess program and at the same time ensures that no code is shipped to violate the GPL?  Or, is your claim that the Rybka PST's do not violate the GPL, they just violate "originality"?

> Now, want to show me where I did something "dishonest" or "underhanded" here?

The dishonest piece was suggesting that the code is in the Rybka executable by putting it in a column entitled "Rybka" in Zach's report, because as you admitted, it is not in Rybka.  The presentation of it is dishonest.
Parent - - By bob (Gold) Date 2011-07-31 01:45
It is not the code, it is the numbers the code produces.  Again, realistically thinking in terms of probabilities, we can tackle this in several ways.

1.  There are 64 values in a single table.  What is the probability that two different programmers produce the _same_ values (except for the differences in material value of a pawn)?  if we restrict the PST values to 8000, since Rybkas values cover that kind of span.  SO 1 in 8000 to choose the same number for one square. 1 in 8000 to the 64th power.

2.  Just take the 2 8-word vectors that are multiplied, one for the ranks, one for the files, never mind the others.  What is the probability of picking 16 values that are the same?  These numbers are a bit smaller, say between -4 and 5 for a range of 10.  To pick one the same is 1/10 probability.  To pick all 16 is 1/10 ^ 16, which is tiny.

3.  Assume somehow that the two 8 word vectors were chosen the same, just by chance.  What is the probability that the 4 multipliers are chosen so that the two tables are proportionally the same?  Say 10,000 values for each, so 1/10000 ^ 4.  Again, tiny.

That's the point.  The chances of two different programs using the same "formula" (a complex one at that) and then hitting on the values that make them similar when scaled to a pawn=100 score is _still_ extremely small.  By itself, one might say "OK, similar, but perhaps the second was not copied from the first by just scaling the numbers."  Then you move on to the rest of Zach's and Mark's reports, and you keep finding things that individually stretch the laws or probability very thin, but when you "add" 'em all together (with probabilities, if you know the P(A) = X, and P(B) = Y, then the P(AB) = X*Y) by multiplying, the probability really shrinks close enough to zero that no one would quibble with using zero.

It is the sum total of the evidence, which is a HUGE pile.  Not any individual piece.  Too many think "if I can just prove one tiny thing wrong, then we can throw the whole report out."  Not likely nor reasonable.
Parent - - By Nick (*****) Date 2011-07-31 03:20

> It is not the code, it is the numbers the code produces. 

This is important, it appears that as this code is not in Rybka, the discussion has moved away from "code copying" to the "numbers the code produces" copying.  Even though those numbers that are being produced are different from the Fruit numbers.  Is this somewhere between code copying and idea copying in your mind? Do you think it's a GPL violation to have different numbers in Rybka to those in Fruit?

>  The chances of two different programs using the same "formula" (a complex one at that) and then hitting on the values that make them similar when scaled to a pawn=100 score is _still_ extremely small.

Hang on, I have shown that code to implement this complex formula could be different from the Fruit code (use two loops rather than one is a simple example but there are many many others).  A chess algorithm is a complex formula, but in your book it's ok to copy algorithms isn't it?  I cannot see the similarity in the crafty and Fruit code, but I know that they are doing a lot of the same things "under the covers" (alpha-beta, pruning, LMR, whatever you chaps do in chess engines these days ...).  In your presentation of the fantasy Rybka code, it's like if you rewrote the bits of crafty that do LMR into the same code that Fruit does LMR with and put them in two columns next to eachother in a report, then crafty would look like it had copied code from Fruit, would it not?
Parent - - By bob (Gold) Date 2011-07-31 03:35
It has not moved from "code was copied to numbers were copied."  We have shown in the report that _both_ were done.  The problem with the numbers is that Fruit and Rybka use wildly different material scores for a pawn.  The numbers between the two tables are all proportional to each other, which suggests more than just random chance they were chosen...

But that is just a small part of the overall evidence. 

For your second question, I'm not sure you can really copy an "algorithm" if it is implemented in code and you copy the code.  If you mean "idea" then clearly it is OK.  But algorithm implies implementation, depending on how low-level or high-level the algorithm is specified.

For your last question, I would not need to do that.  Because the Crafty code is already in C.  But to answer your question, no, they are not implemented anything like each other.  The basis of Fruit's LMR is on the history counters which determine whether a move can be reduced or not.  I use nothing like that.  The only thing they have in common is that they "reduce" some moves.  I reduce most by 2 plies.  Fruit by 1.  Fruit uses history counters to make the primary decision.  I use other ideas instead.  Very much like most chess programs extend some moves.  But that is all that they have in common.  For example, I don't extend all checks.  If the check appears to be unsafe, it is not extended.  Fruit doesn't reduce checks.  If the check appears to be unsafe (using SEE) I do reduce.  Fruit doesn't reduce captures.  If the capture appears to lose material, I do reduce.  As you can see, huge differences, but all based on the same basic idea that some moves deserve extensions to see how they will affect the tree, some moves deserve reductions because they appear to be lousy.  But it is the "how" that makes the code unique...

So no, the crafty code would look _nothing_ like the fruit code, except for the one line that says depth = depth-1 for the actual reduction (although mine is -2, but that's a minor detail here...)
Parent - - By Nick (*****) Date 2011-07-31 04:00

> But that is just a small part of the overall evidence. 

It is my belief that the first part of the Zach report, that deals with PSTs (an important part of the engine) is not relevant to any "code copying" discussion.

> So no, the crafty code would look _nothing_ like the fruit code, except for the one line that says depth = depth-1 for the actual reduction (although mine is -2, but that's a minor detail here...)

Fabien said that Fruit contained nothing really new, just a re-implementation of existing ideas, some of those ideas must have come from crafty, so it must be possible to re-write parts of the crafty code, put it next to Fruit, and have them appear to match, LMR is not a good example clearly, but as I said, I'm not a chess programmer.
Parent - - By Nelson Hernandez (Gold) Date 2011-07-31 12:22
Not a programmer but a person with far above-average intelligence, individually quite unrepresentative of the general population.  Now, can you imagine this whole case going before a jury trial, with twelve people who have absolutely no understanding of programming, probably ten out of twelve who do not know how to play chess, all twelve knowing nothing about computer chess?  Can you imagine them, yanked from their regular lives and jobs with their normal share of cares and worries, children to think about, tasks at work going undone, maybe a boss who thinks they are a slacker for having allowed themselves to be selected for the jury?

Just imagine a typical jury.  Have you ever served on one?  I have.  One or two retirees, completely computer illiterate.  One or two unemployed individuals living a hand-to-mouth existence.  One or two drama queens prone to emotionalism.  One or two people with a totalitarian mind-set, eager to convict somebody of something and take the lead.  Four or five white collar professionals, all of whom don't want to be there.  One or two laborers unable to follow the points being discussed.  One or two soft-hearts among the group who are organically incapable of finding anyone guilty of anything.  One to three people within the group who has personally had run-ins with the law.

That's a typical jury.  Now imagine their dismay as the prosecutor stands up and tells them what this case is all about and what he will demonstrate over the course of the next week, and the powerful evidence he intends to walk them through them that can only lead to one inevitable conclusion, that the defendant is guilty of [fill in the precise legal charges here].  Just put yourself in their chairs!

It is preposterous to think that this case could go to court.  Only someone who hasn't seen the legal system at work could think it will go that far.
Parent - By Nick (*****) Date 2011-07-31 12:48 Edited 2011-07-31 12:50
I'm honoured by your stroke, even after my girdle comment! ;)

Yes I've served on two juries and my main memory of the first was total boredom, but at least a fellow chess player was in the jury and we played a lot of chess during the never-ending time-outs.  Nobody wanted to really be there and everyone was wondering how they could maximise their expense accounts. The first was an eye opener to me (as a young 30-year old) of how the legal system works in the UK.  It was a fraud case where a young defendent was basically guilty of the offense, but the employer attacking him was so harse and out for revenge and the offense was so minor that we acquitted him, the judge was really happy and eventually deemed the employer as a vexatious litigant.  The second case was a bit more serious (Old Bailey) and I won't comment on it.

But you are right, my juries were basically made from the same cross section of the public as yours, what is important to some chess programmers will not be important to a jury of people off the street.  If it's a jury trial I expect no problems for Vas.
Parent - - By bob (Gold) Date 2011-07-31 15:35

Have you _ever_ served on a jury?  I have, multiple times.  I have seen incredibly complex cases presented.  In one case, someone was hurt in an auto wreck.  The claim was that the other party "willfully and wantonly acted in a reckless manner to cause grave injury and bodily harm to the plantif."  We had physics experts testify as to how fast the car was going, explaining horsepower to weight issues, even e=mv^2 demonstrations.  Physics-based reenactments of the events leading up to the accident.  And the people on the jury, of which I was the foreman, deliberated, asked questions, discussed things, and came to a reasonable conclusion.

I don't think I would have any problem explaining the process of comparing C to assembly language programming, in a way that even a non-programmer could understand.  Your premise is simply wrong.  Otherwise why would a plantiff/defense attorney ever use an "expert witness" when their testimony is always highly technical?  that is why they are called, in fact.

It's preposterous (using your word) to believe this won't go to court solely because it is to technical for the average person to understand.  If FSF chooses to continue, and it now looks like they will, your "theory" might be tested.  --and found 'wanting'.
Parent - - By Nelson Hernandez (Gold) Date 2011-07-31 22:04
It may give you more gray hairs thinking about it, Bob, but I have served as a juror foreman too, a role I did not seek.  My experience in this case, which was not technical at all (an allegation of elder abuse, with implications of relatives engaging in post-mortem grand larceny), was that most jurors made a sincere effort to arrive at justice, and in the end, they did.  But if only the plaintiff and defendant had seen how the sausage was made!  The capriciousness, posturing and exasperation!  My sense is that in that town it is virtually impossible to bring a guilty verdict against anyone unless they have committed crimes against political orthodoxy.
Parent - - By bob (Gold) Date 2011-08-01 03:35
Can't argue.  Strange things happen.  But I don't think a jury has to get lost in the world of disassembly and de-compiling.  That can be explained...
Parent - - By Nelson Hernandez (Gold) Date 2011-08-01 12:09
Of course it can be explained.  You, as a professor, can lecture your class.  What you fail to accept is how people will fail to comprehend, or more fundamentally, fail to care.
Parent - - By sockmonkey (***) Date 2011-08-01 12:12
If you don't care, I defy you to stop arguing about it. Let the ruling and the ban go uncontested. After all, who cares?

Obviously you care very much.
Parent - By Nelson Hernandez (Gold) Date 2011-08-01 12:17
I do care, but I am not sitting on a jury.
Parent - - By bob (Gold) Date 2011-07-31 15:23
You can take any part of Crafty you want and compare it to fruit.  I've looked at the fruit source quite a bit over the course of this investigation, although I would not claim to be a "fruit expert."  I obviously know every line of the Crafty code.  There is nothing that looks the same.  Fruit uses the ugly setjump()/longjmp() hack to unwind the search on a time-out.  I don't.  My search has a lot of SMP stuff inserted.  Fruit's doesn't.  The way I "choose the next move to search" looks totally foreign if you first look at Fruit.  Etc.

The PST data supports the idea that the eval was copied.  If you copy someone's eval, and want it to work as well as the copied version, you need to copy all the scoring terms.  By itself, I agree that it doesn't show "copied code".  But it does show "copied numbers" which in this case is just as bad, but more importantly, it shows that the fruit and rybka evals are "joined at the hip" because they use the same values.  And then there is the rest of the evaluation analysis that does show copied code.

Your idea of "rewrite parts of Crafty to make it look like fruit" is an important idea.  Because for any "common idea" one should be able to do this, so long as the ideas are exactly the same.  And you now reach the heart of the issue.  The code in Crafty and Fruit is NOT identical.  Why?  Because we each (Fabien and myself) wrote our own code, from scratch, without copying anybody else's.  As a result, the way we implemented things is different on two levels.  If you take the LMR case, we both reduce some moves to speed up the search.  But we reduce using a completely different set of criteria to select those moves that get reduced vs those that do not.  We reduce by different amounts, for different reasons.  So making Fruit and Crafty match there would be problematic because then you would be changing the basic program behavior - Fabien and I simply did things too differently.  If you take something more generic, assuming you can find a piece of code in Crafty and Fruit that do about the same thing semantically, but which are written significantly differently (take the Static Exchange Evaluator for example) you should be able to rewrite one to make it look like the other.  All that shows is that the programmers used a common idea, but implemented it differently (for reasons only the programmers could identify).  But that doesn't show copied code, it shows code was not copied.  Or if it was copied, that the code was completely rewritten which again makes it acceptable.
Parent - - By Nick (*****) Date 2011-07-31 16:38

> Or if it was copied, that the code was completely rewritten which again makes it acceptable.

So if Vas did copy the PST generation code of Fruit but then completely re-wrote it, why is that not acceptable? 

From your example, aren't the Static Exchange Evaluator's from crafty and Fruit joined at the hip (although they LOOK completely different in code)?
Parent - - By bob (Gold) Date 2011-07-31 17:16
No the SEE code is not "joined at the hip."  If you look at Crafty's SEE, and then Fruit's, they look nothing alike.  They don't even work the same way.  But we have discussed SEE many times over the years, and many have implemented SEE with different approaches, to produce similar (but not always identical) results.  The problem with Rybka/fruit is that the code is _identical_ in lots of places in the eval.  That is _not_ a natural occurrence.

We are not concerned with ideas that are originally implemented by the author.  We are concerned about code that is copied.  See the PST discussion with Ed this morning.  He showed his PST values and how they have a "overall trend" that agrees with Fruit.  But there are major differences.  Between fruit and rybka, the relationships between any two squares is the same.  For example, if you look at b1 and c3 and the difference is positive, then with rybka the difference is also positive (the differences are also proportional, but that's something we can ignore here).  With Ed's PST values, the values between two squares sometimes have a different sign than the fruit values.  With Rybka this never happens...
Parent - - By Nick (*****) Date 2011-07-31 17:20 Edited 2011-07-31 18:07

> We are concerned about code that is copied

Yes, I finally saw some sense -- it was from mjlef in his reply to Ed, he said the Rybka PST numbers could even have been generated with a spreadsheet, who knows.  Much more honest and takes the code copying question (for PST) out of the equation completely.

Mark's complete post, editted in at Mark's request:


The PST information is only a very small part of what the panel investigated.  Some people thought taking the Fruit specific ratios was theft and some thought it a copied idea.  When I first saw Zach's report, the match of the system for filling in PST values was striking, and certainly made me feel Rybka should be investigated.  Would I consider this exact code theft?  No, since it would have to be translated to another program form.  Although we frankly do not know how Vasik created the specific ST values he used since it all appears as a block of data.  Maybe he used the specific Fruit code to write out the values, then imported them.  Maybe he used a spreadsheet.  Who knows.  We can only evaluate what we have access to. Zach's document and the statements from Vasik that Strelka had stolen from Rybka 1 was what triggered the investigation (once Fabien protested, of course).  But the panel went much, much farther in its investigation.  Please do not just stop on just PST.  Look at the exact match of mobility methods, open file scoring for Rooks. rooks on the 7th, queen eval, bishop eval, pawn scoring, king safety.... it is simply a grand theft of the evaluation from Fruit.  Yes there were some very minor changes of values, but he took the whole method of doing things, and this gave Rybka a huge rating boost.  He should have disclosed this for the TD could decide if it was appropriate for him to complete (in some of the same tournaments as Fruit).

The panel's job was not to prove exact code copying.  It was to determine if Rybka violated rule 2 which requires reporting of derivatives.

You said this:
"After investigation there is no doubt in my mind Vas took Fruit's PST system as a base for his Rybka."

Even you agree that Vas took the PST system.  That means Rybka is a derivative of Fruit, and Vas violated the rules."
Parent - - By bob (Gold) Date 2011-07-31 17:27
There was NO CODE COPYING for the PST issue.  NONE.  NADA.  ZILCH.  ZIPPO.  It is the PST VALUES themselves that were copied.  The report is clear.  The evidence is clear.  Can we please get off of that "PST code copying" topic, since not one person involved in the report used that.  Zach's report CLEARLY states that the code is not in Rybka.  It was given to make it easy to see that the fruit PST VALUES and the rybka PST VALUES are nearly identical with respect to "scale".  Which does not happen unless one copies the other.  Ed tried to make a point about how his and Fruit's numbers sort of correlate in a general sense.  But it really backfired, because they do not correlate very well at all, other than in a basic trend that closer to the center is better, farther away from the center is worse.  While the numbers between fruit and rybka have perfect correlation within integer truncation error limits.

Until you get that basic point, we are not going to make any progress here.  If Zach just posted the numbers, it is not intuitive that the numbers are related.  But when you see that one can take Fruit's PST initialization code, and change 4 constants to adjust for the bigger material value of a pawn in Rybka, the similarity is quite easy to see.  Take fruit, change 4 multipliers, you get rybka.  Not normal.
Parent - - By Ugh (*****) Date 2011-07-31 18:34
It was given to make it easy to see that the fruit PST VALUES and the rybka PST VALUES are nearly identical with respect to "scale".

yes, as predicted, Hyatt starts the argument about "depends what you mean by identical". wriggle, wriggle.

Progress from the lie that "all PST tables are identical" no mention of "nearly".

ok, well, in Hyatt's data he gave yesterday, we have, for the knight opening table (that is one of the two knight tables), the required "constant multiplier" to relate Rybka-Fruit tables for the square a1 is 69.84 and the required "constant multiplier" to relate Rybka-Fruit tables for the square a6 is 62.8

62.8 differs from 69.84 by about 11 percent

New Hyatt definition of "identical" allows 11 percent difference


more wriggling or do you give up on this one yet?
Parent - - By bob (Gold) Date 2011-07-31 18:46
I've explained the problem twice.  You saw it twice.  Yet you continue the nonsense? 

No big surprise there.

integer truncation is understood by _some_ of us, at least...

to quote you;;;

Parent - - By Ugh (*****) Date 2011-08-01 16:05
Bob, I don't have a killer mentality and I don't like finishing people off. In a chess analogy, the game and the struggle are interesting, but for the finale I prefer it if my opponent resigns rather than I actually deliver checkmate. Vice versa also, I resign when lost, I don't have to wait for checkmate. Gentlemen usually resign, shake hands and thank the opponent for a good game. The PST tables thing has been a good game, you fought hard, but it is lost for you.

So, I ignored your last desperate efforts, possibly hoping in vain that you would see the logical failure in your final "integer truncation" argument and just give up. The smart ones have already seen it, and I would guess you know it too.

I'll wait a while to see if you'll take the civilised way out, but if not, I suppose I can deliver your king back to you with his head chainsawed off, if that's what you want.
Parent - - By bob (Gold) Date 2011-08-01 16:22
I will say it again.  If you believe that two people independently create two 64-value arrays of numbers, and that the C procedure that created the first one can be modified by changing +four+ values, and then produce the second one exactly, then you have issues.  The probability of such an event is "right near zero."  To claim otherwise is, patently, absurd.

If you want to continue to spout that, fine.  When I first tested the stuff Zach found, I discovered that if I left the A8/H8 penalties off (since they are scaled differently) that a number of 68.4x would come _real_ close to converting fruit to rybka numbers.  Sum of squares of differences was small.  I did not try to find an exact number, if one exists.  Because, as I said, integer math has an issue.  If there is not an _exact_ factor, so what?  The report clearly gives the 4 constants to change, while leaving the other vectors exactly the same, to switch from Fruit to Rybka.  That is, simply, copying.

Like it or not...  and all your hand-waving, your trying to latch onto one word or one statement or one thought and prove that wrong and then shouting that that proves the entire report is flawed, is...  is flawed itself.

Keep trying...  You aren't going to checkmate anything or anybody when you play such an inferior game...
Parent - - By AWRIST (****) Date 2011-08-01 16:33
Bob, I think I have you in checkmate now.

For years you repeated this wisdon out of your classes and I am damned sure that you are right. You can discover a copy even if the Persian woman had blinded your vision. Then ou would feel it in your fingertips.

But then I learned that what Zach found wasnt what he found but what he had fuzzled. So, with RE I learned you can find everything but not the original source code of a program. So, what did you teach us all the time? We were debating if someone was able to memorize 20000 signs by heart. Why had we this nonsense if you dont even have the proof for exact identity of two codes?

For what Vas took out of Crafty he spoke of public domain what you deny. Ok, but perhaps this is a misunderstanding but with that code Vas didnt become World Champion. That version never played for the title. So what is going on?
Parent - By bob (Gold) Date 2011-08-01 17:25
There is no "misunderstanding" Crafty's license.  There is no "misunderstanding" ICGA tournament rule 2.
Parent - - By mjlef (***) Date 2011-07-31 17:48
Hmmm, you are selective about your memory of what I wrote.  I also wrote "Even you agree that Vas took the PST system.  That means Rybka is a derivative of Fruit, and Vas violated the rules."

Please, if you are going to reference me, do not be selective about what you mention.  Please use a quote and make it clear when my conclusions are totally different from yours.

Parent - - By Nick (*****) Date 2011-07-31 17:57
There was NO CODE COPYING for the PST issue <- from Bob Hyatt.  We are all three in agreement, I am not talking about the ICGA "derivative" question, I am talking about code copying.
Up Topic Rybka Support & Discussion / Rybka Discussion / For non programmers (locked)
1 2 3 4 5 6 7 8 9 10 Previous Next  

Powered by mwForum 2.27.4 © 1999-2012 Markus Wichitill