Not logged inRybka Chess Community Forum
Up Topic Rybka Support & Discussion / Rybka Discussion / Rybka 1.0 Beta matching Fruit 2.1 source code? No (locked)
1 2 3 Previous Next  
Parent - - By Ugh (*****) Date 2011-10-07 13:57
Fruitification = the adding of meaningless junk to another chess program in order to fool the people that it looks like Fruit.

The meaningless junk is specially selected in the sure knowledge that the OPTIMISER part of the COMPILER will recognise the meaningless junk for what it is and throw it away before doing the proper compile.

For example:

Before addition of meaningless junk: a=100;

After addition of meaningless junk a=100 + (lots of algorithms, code, variables, do anything you like here) * 0;
note multiply by zero, but they hide that by using "multiply by KingOpenFile" or whatever, and they set KingOpenFile = 0; somewhere else, where you might not notice it.

Compare resulting meaningless Fruitified junk with Fruit: "Oooh, yes "lots of algorithms, code, variables, do anything you like here" looks like Fruit!!!!". "Show it to the ICGA!!!!". "Guilty, twice!!!!".

Run meaningless junk through OPTIMISER. OPTIMISER say: "this is rubbish, meaningless junk, throw it out".

a=100 + (lots of algorithms, code, variables, do anything you like here) * 0; becomes a=100; again. Thank you optimiser.

Present a=100; to compiler and, bingo, back comes Rybka as if the meaningless junk was never added.

Clever, huh?
Parent - - By Ugh (*****) Date 2011-10-07 14:01
And if Hyatt tries to tell you this is "nonsense", we have several cases found where code has been added to the raw Rybka de-compile in which said code is effectively multiplied by zero, or does nothing at all, and is therefore meaningless, other than to make Rybka look like Fruit.
Parent - - By bob (Gold) Date 2011-10-07 14:46 Edited 2011-10-07 14:52
It's obvious you have no idea what the process is about, you have no idea about what "semantic equivalence" means, so why are you hanging around in the discussion which is obviously way over your head?  You are not helping Vas' case at all, because you are arguing nonsense, and everyone that is technically competent enough to understand the issue realizes that.

The idea here is to show semantic equivalence between fruit and rybka.  That means verifying that the C source, and the rybka binary are semantically equivalent.  If a multiplier of 0 works to show semantic equivalence, it works.    Try to take the rybka binary and make it fit the Crafty source without changing the crafty source at all.  All you can change are the scoring weights.  Never will happen, because they are not semantically equivalent.  That's the point.  That has ALWAYS been the point.  The point that is apparently over your head...
Parent - - By Rebel (****) Date 2011-10-07 15:48 Edited 2011-10-07 15:50

>  If a multiplier of 0 works to show semantic equivalence, it works.

Except there is nothing to show :razz:


static const int QueenCentreOpening = 0;

   // centre

   for (sq = 0; sq < 64; sq++) {
      P(piece,sq,Opening) += QueenLine[square_file(sq)] * QueenCentreOpening;
      P(piece,sq,Opening) += QueenLine[square_rank(sq)] * QueenCentreOpening;

      P(piece,sq,Endgame) += QueenLine[square_file(sq)] * QueenCentreEndgame;
      P(piece,sq,Endgame) += QueenLine[square_rank(sq)] * QueenCentreEndgame;

The compiler will remove the yellow because its dead code.
Parent - - By bob (Gold) Date 2011-10-07 15:52
So?  Again, do you UNDERSTAND semantic equivalence???

If the code is there in the source, it doesn't matter whether it is dead or not, it is there.  It matters when you start to determine whether that source is semantically equivalent to a binary program (or another source program if you have source).  To compare, you can remove the code from the original, or "add" the dead code to the binary's RE'd source.  You get the SAME result...
Parent - - By Rebel (****) Date 2011-10-07 16:11

Hyatt -  If a multiplier of 0 works to show semantic equivalence, it works.

Ed - Except there is nothing to show

Hyatt - So?

One should not call people stupid when writing nonsense yourself.

> Again, do you UNDERSTAND semantic equivalence???

One also shouldn't change the subject when caught.
Parent - By bob (Gold) Date 2011-10-07 16:41
I've not been CAUGHT at anything other than somehow caught up in your imagination.

You do realize that to prove semantic equivalence SOMETHING has to be compared, correct?  So what should that "something be"?  For the average person, asm code?  Don't think so.  Abstract C derived from that C code that with work can be shown to be semantically equivalent to Fruit's C?  Don't think so.  That leaves using the Fruit C as a target, the Rybka binary as a source, and trying to work from the source (rybka binary asm) to the target, to show something that the average person can understand.  You want to act like this is hard, dishonest, fakery, etc.  In reality, it is none of the above, it is "just a process".
Parent - - By AWRIST (****) Date 2011-10-07 14:53
And that they took Zach Wegner for this smear is a typical step. They too Zach who has nothing but his little expertise as RE man, who has time because he has no decent job elsewhere, they took him because he has no financial reserve that he could lose in a court case, who has no family for whom he must make a living, so typically they took a hobo. We dont know what they had promissed him for the smear but from his actual standing it might pay off good enough. And this guy Bob is continuously quoting as super expert. Ridiculous.

Not only that however because it's also criminal. Bb had already cooperated propaganda wise with Norm the King of Fraud, imagine that for a moment. Norm is also a hobo but also a criminal who intentiously made up faked software and sold it. For what for? For making money. Not at all. Because he could defamate Vas this way. so, it is clear that also this guy has been bought for the smear. I wanted to know what Osipov got in this smear.

I am 100% sure that all this will destroy also the good name of Bob Hyatt. It was a lethal wound for him that the NYT mentioned him worldwide, so that it will knock him out if it's worldwide declared that the ICGA investigation was a smear act and based on idiotic reasoning. 100%.

For me it were necessary to make up something on the defense side for Vas so that the attackers are misleaden and then could be blamed in their whole viciousness. (Once upon a time I asked Vas if he couldnt be the author of the Hippos by chance, perhaps he is Osipov? But the hype would be if Vas would have launched Houdini too to confuse the academic imposters. - Folks: Stay tuned!)
Parent - - By bob (Gold) Date 2011-10-07 15:01
There will be no "court case".  At least, not one related to Zach.  Wishful thinking.  You'd do better wishing that there is no court case between Fabien/FSF and Vas.  That one will be problematic.

If you want to set a time-limit for that "this will destroy the good name of Bob Hyatt".  Say 1 year.  2 years at most.  I'll make a wager with you about that.  Has to be worth my time, has to involve money held in a trust by an acceptable 3rd party.  This is a pretty simple science.  Just because YOU don't understand it, doesn't mean it doesn't work.  It just means YOU don't understand it.

Yeah, "stay tuned."
Parent - - By AWRIST (****) Date 2011-10-07 22:30
Bob, let us two make something else. You are the tech expert, I am the interdisciplinary observer. I hope that we could agree on this here. If that what you and your helpers got and analysed it, isnt the truely original and authentic data, wouldnt you then agree with me that logically most of what you've investigated doesnt hold water? Isnt that correctly put? So, another way to ask this: if 1.6.1 isnt for what you take it, if Strelka has a different story in the background, couldnt you agree that THEN much of your "results" isnt valid?

Next, couldnt, no shouldnt you have considered that all in advance? How could you approach to these questions so thoughtless, flippantly? I see the main point for any court process, that you might have confounded the quarrel about getting the original data and then of course the thorough investigation of the strange data set where you had no Rybka source original. For me it looks so thoughtless that more than once you had to argue with something that came as a commentary from Vas. And logically you tried to nail him on the base of his own commentary. This might be a judicial problem. Because IMO you cant base a verdict in legal justice on the verbal comments of a defendant. Otherwise not the law would decide but a potentially tweaked suggestion. Do you realise that as a danger?

Therefore couldnt you abstain from making all these pseudo judicial comments? Why do you get angry at people like Chris or Ed? Do you think that you must prepare some verdict here in advance?

This is what I meant with not going too far. Because you might change in the public recognition. From Big Expert to hateful Evil Executer. Why not turning your attention on Crafty for a while before something happens in the FSF e.g.? Then you will have plenty of moments to comment on the topic. However if you could a bit tame your violent thoughts then you could also continue here. We all could learn from you.
Parent - By bob (Gold) Date 2011-10-08 17:02
1.  What we "got" is the rybka 1.0 beta and such binaries that are available for free download from the Rybka web site.  1.6.1 did not come from there, but it came attached to an email that was verified as coming from Vas.  So there is no "wrong code" being evaluated.

So, to answer your first questions. 

(A) 1.6.1 is EXACTLY what it is claimed to be, a version of Rybka sent from Vas to Olivier, no question about it whatsoever. 

(B) strelka is irrelevant.  It simply started the investigation, and without it, the rybka copying might well have gone unnoticed.  But it merely STARTED the investigation, and since then, Strelka has not played any part in the report or the investigation, other than being noticed that the first one is very close to Rybka 1.0 beta internally.

(C) What should we have considered in advance?  We verified that we were looking at the 1.0 beta Vas is currently distributing.  I re-downloaded it about 2 weeks ago as I had a 1.0 beta that was very slightly different from what Mark/Zach had.  The copy I have matches theirs exactly, even to the MD5SUM.  We verified that the 1.6.1 was sent out by Vas.  I don't see what else there is to verify, and we took NOTHING "flippantly".

(D) statements made by a defendant CAN be introduced in a court case.  He made them publicly.  Many times. 

(E) I don't get "angry" with anyone here.  I simply point out deceit and dishonesty, which is pretty common from them.  No person that actually has programmed for a living would make the statements they make, without first studying this RE process.  Then, if they don't understand it (and I am certain neither does based on all the completely wrong usage of the term "semantic equivalence") then the rational person would either (i) not respond;  or (ii) learn something about the process and how it is done BEFORE making comments that are 100% wrong about what RE is about when comparing a source to a binary to see if the source was copied..

(F) I am working on Crafty daily...

(G) I have NO "violent thoughts" of any kind.
Parent - - By Rebel (****) Date 2011-10-07 17:10

>And if Hyatt tries to tell you this is "nonsense", we have several cases found where code has been added to the raw Rybka de-compile in which said code is effectively multiplied by zero, or does nothing at all, and is therefore meaningless, other than to make Rybka look like Fruit.

From my notes, so far we have :

From Zach's document:


Further looking at the left/right code then notice Fruit evaluates via 2 tables: "op" and "eg".

op[me] += mob * BishopMobOpening;
eg[me] += mob * BishopMobEndgame;

And that they later are merged with the 2 real score integers -> opening and endgame

   // update

   *opening += ((op[White] - op[Black]) * PieceActivityWeight) / 256;
   *endgame += ((eg[White] - eg[Black]) * PieceActivityWeight) / 256;

WHEREAS Rybka directly adds to opening and endgame.

Looks unburden evidence to me.


Rook mobility (Rybka)
static const int RookSemiKingFileOpening = 121;
static const int RookKingFileOpening = 974;

974 not in R1 executable


Shelter values (Rybka)
const int shelter_value[5] = { 1121, 0, 214, 749, 915 }

1121 not in R1 executable
749 not in R1 executable
915 not in R1 executable


Pawn storm (Rybka)
const int storm_value[5] = { 0, 0, 2334, 653, 310 };

2334 not in R1 executable


Trapped Bishop
Fruit WBa7 penalty    Rybka WBa7 penalty
Fruit WBa6 penalty /2    Rybka WBa6 FULL (!!) penalty



int PassedOpening[8] = { 0, 0, 0, 489, 1450,2900, 4821, 4821 };
int PassedEndgame[8] = { 146, 146, 146, 336,709, 1273, 2020, 2020 };
int PassedUnblockedOwn[8] = { 0, 0, 0, 26, 78,157, 262, 262 };
int PassedUnblockedOpp[8] = { 0, 0, 0, 133,394, 788, 1311, 1311 };
int PassedFree[8] = { 0, 0, 0, 101, 300, 601,1000, 1000 };
int PassedAttDistance[8] = { 0, 0, 0, 66, 195,391, 650, 650 };
int PassedDefDistance[8] = { 0, 0, 0, 131, 389,779, 1295, 1295 }

4821 not in R1 executable

Did not even bother to check the rest.


Candidate Passed Pawns

int CandidateOpening[8] = { 0, 0, 0, 382, 1131,2263, 3763, 3763 };
int CandidateEndgame[8] = { 18, 18, 18, 181, 501, 985, 1626, 1626 };

3763 not in R1 executable



if (candidate)
{ opening[me] += quad(CandidateOpeningMin,CandidateOpeningMax,rank);
   endgame[me] += quad(CandidateEndgameMin,CandidateEndgameMax,rank);


if (popcnt(mask1) >= popcnt(mask2)) {
opening += CandidateOpening[rank];
endgame += CandidateEndgame[rank];

Again Rybka adds directly to INT opening/endgame whereas Fruit uses opening[me] and endgame[me] and later merges them.


Doubled Pawns

Zach: Doubled pawns are the first and simplest pattern. In Fruit, we look behind the given pawn for a friendly pawn. In
Rybka, we look ahead. These are of course equivalent. Rybka also has a score of zero for doubled pawns in the

static const int DoubledOpening = 10;
static const int DoubledEndgame = 20;

if ((board->pawn_file[me][file] & BitLT[rank])!= 0)
doubled = true;
if (doubled)
{ opening[me] -= DoubledOpening;    // again: Fruit: opening[me] vs Rybka: opening
   endgame[me] -= DoubledEndgame; }

static const int DoubledOpening = NON_EXISTENT (!!)
static const int DoubledEndgame = 20;

if (MaskPawnDoubled[square] & Board.pieces[WP])
endgame -= DoubledEndgame;


Bishop Mobility in Fruit
op[me] += mob * BishopMobOpening;
eg[me] += mob * BishopMobEndgame;

Bishop Mobility in Rybka
opening += mob * BishopMobOpening;
endgame += mob * BishopMobEndgame;

And the merge to opening / endgame score here EVAL.CPP - LINE 759

   // update

   *opening += ((op[White] - op[Black]) * PieceActivityWeight) / 256;
   *endgame += ((eg[White] - eg[Black]) * PieceActivityWeight) / 256;

Not in Rybka

Parent - By Uly (Gold) Date 2011-10-07 17:25

>974 not in R1 executable
>1121 not in R1 executable
>749 not in R1 executable
>915 not in R1 executable
>2334 not in R1 executable
>4821 not in R1 executable
>3763 not in R1 executable

>   *opening += ((op[White] - op[Black]) * PieceActivityWeight) / 256;
>   *endgame += ((eg[White] - eg[Black]) * PieceActivityWeight) / 256;

>Not in Rybka

Heh, seems like proof that the "fantasy code" is fantasy code (without quotes) :smile:
Parent - - By bob (Gold) Date 2011-10-07 20:56
Didn't you just go thru this with Garvin?  Didn't HE find the first constant you said was not there, in several different places?   Do you realize that changing constants does not circumvent copyright?   You ask a question on open-chess.  Get shown that your claim is 100% wrong, and that most likely your approach to look is flawed, and then you waltz in over here as though nothing has happened and say "here is what I have (not) found:"

Couple of key points:

1.  Look at the code.  not for constants.  I am not even sure you are competent to find them based on your exchange with Wylie yesterday.

2.  Look at what is DONE in the code.  Yeah, I know.  "But that's HARD."  It is how you look for semantic equivalence, not by comparing constants...  However, in Zach's code, I have YET to see a "imaginary bit of code."  He has unfolded constants to make it more readable.  He has tried to show as clear a comparison between fruit and rybka as possible.   If you can't follow his stuff, oh well...
Parent - - By Rebel (****) Date 2011-10-08 07:41

> Didn't you just go thru this with Garvin?

Yep, I sometimes go to open-chess to receive some REAL answers from your masters.
Parent - By bob (Gold) Date 2011-10-08 16:51
And then you come back here and pretend you got NOTHING?  (based on your so-called "list")...
Parent - - By Rebel (****) Date 2011-10-07 16:01

> The term "fruitification" is complete nonsense, as any decent compiler person will tell you.  You've obviously stepped into a topic that is way above your level of expertise...  And your comments are making you look foolish

Hyatt: if you don't like the message (compiler optimizations) then shoot the messenger.

Parent - - By bob (Gold) Date 2011-10-07 16:44
I probably understand compiler optimization better than you.  After all, I have actually WRITTEN a couple, I gave you publications from my resume showing this.  Feel free to show me the term "fruitification" in that compiler optimizations discussion, however.  As I said, it is NONSENSE.

The "messenger" has garbled the "message".  The message is fine.  The messenger leaves a LOT to be desired, in this case.
Parent - - By Rebel (****) Date 2011-10-07 16:51

> I probably understand compiler optimization better than you.

Ah.... the my dick is bigger than your dick type of discussion again.

Testosterone science :razz:
Parent - - By Ugh (*****) Date 2011-10-07 16:54

> I probably understand compiler optimization better than you.

Ah.... the my dick is bigger than your dick type of discussion again.

Testosterone science

(Hyatt = FACHIDIOT) * 0;

I added the FACHIDIOT bit, naturally the message is still "semantically equivalent" ;-)
Parent - - By bob (Gold) Date 2011-10-07 16:58
If only you knew what "semantically equivalent" means, things would be much better...  As it is, you don't, and they aren't.
Parent - - By Ugh (*****) Date 2011-10-07 17:33
Your optimising compiler would say it was (conceptually speaking, if the compiler could deal with text, but you get the idea).

Basically, you used a trick. The optimiser recognises rubbish and throws it out. You introduced rubbish. The optimiser threw it out. Now the compiler gets you back to where you want, thanks optimiser.

The point we are making is this, especially for the slow and thick headed, since you carry on denying .....

If your compiler/optimiser combo will allow you, using your rules of (a) split constants and (b) changing weights to whatever you want, including zero; to introduce rubbish code in order to fool the reader; then, there has to be something wrong with your rules. Ie. you can't do, logically or legally, what you have been doing.

Therefore, if your rules are illogical/illegal, your document is trash, and we throw it out. As would a court once we explain the trickery.
Parent - - By Nick (*****) Date 2011-10-07 18:01
Done this back in July.;hl=

The answer was: "because it is in Fruit then it must be in Rybka".  Incredibly odd way of looking at things, don't you think?

Me: "My question is: do you believe that this code is in Rybka? (The setting zero followed by multiplication of it)."

Hyatt's response: "It is in fruit.  What makes you think it is not in Rybka?  Did you overlook that?"
Parent - By Ugh (*****) Date 2011-10-07 18:35
The madness of fools knows no bounds
Parent - - By bob (Gold) Date 2011-10-07 18:01
Again, that is THE POINT here.  We have fruit source.  The easiest way to show a layperson that the fruit source matches the rybka binary, is to make our "pseudo-rybka source" match fruit as closely as possible.  You realize that this does NOT work if you try to compare Crafty's binary to fruit?   It only works if EVERYTHING is semantically equivalent.  In this case, fruit source, rybka binary, rybka pseudo-source.  And they ARE semantically equivalent, which means all 3 are highly connected in terms of sharing source code.

You can throw out whatever you want.  The process was done correctly, the conclusions were proven beyond a doubt, what you want to suggest really doesn't matter one bit...
Parent - - By Ugh (*****) Date 2011-10-07 18:35
According to your fantasy rules of what is allowed, we could probably get the entire Fruit source into Crafty, partly in and partly overlaid, by judicious use of "if (xyz) expressions" where (xyz) resolved to zero.

The fact that we could do this obviously renders your rules as ridiculous.

Produce document with ridiculous rules = garbage in garbage out as any judge know.
Parent - By bob (Gold) Date 2011-10-07 20:47
Feel free to try.  You will see that asm to C semantic equivalence is not as "one-size-fits-all" as you want to try to convince everyone.  One can only arrive at a match with Fruit and the Rybka asm, if, and only if, the semantics are the same.  This is NOT the case with Crafty/rybka or Crafty/fruit...

The fact that you don't get that is not surprising.

Feel free to take my source, how about just the evaluation source.  Modify it to look like fruit, without changing ANY semantics.  Or take Fruit's eval, and modify it to match Crafty's source, without changing ANY semantics.  You might find it is harder than you want to imply.  In fact, you will find it absolutely impossible, because I have actually LOOKED at both during the course of this investigation...
Parent - - By bob (Gold) Date 2011-10-07 16:58
No, an observation based on observed fact.  You are making statements that no compiler person would consider making.  Ergo, you are not a compiler person.  Actually, you are making statements no computer science person would consider making, much less one specializing in compilers.

As an aside, if you choose to "wave" that particular part of your anatomy in public, and if it REALLY IS that small, you should expect comments.  It is best to keep embarrassing things private, then there is no embarrassment.
Parent - - By Rebel (****) Date 2011-10-07 17:37
It's always wrong to underestimate your opponents, not limited to the R=F issue, but a general wisdom of life.

Consider the volume of your testosterone type postings irrelevant, it's not going to help you, too many intelligent people here.
Parent - By bob (Gold) Date 2011-10-07 17:58
Where are those "intelligent people"?  I've seen a few.  But not "too many".  Note that I am using the term "intelligent people" to represent the class of people that understand the issues addressed in the Rybka panel, namely "semantic equivalence" which seems to elude many.

As far as your "always wrong".  I was taught that any statement with "always" is false.  It is a good practice to recognize your opponent's weaknesses, however, that is how most "games" are won, whether it be chess, checkers, or whatever...
Parent - - By Nick (*****) Date 2011-10-05 20:35

> Now really Nick 

It's a good one Ed, the optimizing compiler excuse can always come to the rescue when the Rybka code doesn't match the Fruit code :grin:
Parent - By bob (Gold) Date 2011-10-05 20:48
And to those that actually KNOW something about optimizing compilers, it is sometimes a perfectly rational explanation.  Unfortunately there are not very many of "those kinds of people" here, based on posts...
Parent - - By Ugh (*****) Date 2011-10-05 20:56
hehehe! I'm working on the effect of the OPTIMISER, an intelligent agent which tries to find smart ways to make the COMPILER produced code either faster or smaller or both, on this circular asm -> reverse engineered source -> asm again process.

Let me pose you the problem:

Rybka asm de-compiles to a Most-Fruitifed-As-Possible-Rybka-Source. As produced by Zach.
According to Hyatt logic this Most-Fruitifed-As-Possible-Rybka-Source will and must COMPILE to the original Rybka asm

Only it doesn't.

Most-Fruitifed-As-Possible-Rybka-Source COMPILES to something different from Rybka asm, semantically different by exactly those items creatively inserted by Zach.

It's the OPTIMISER (which can switched off or on, multiple switches for all kinds of semantics changing yet program enhancing alterations). If it is on, Zach knows the OPTIMISER will precisely do or undo or whatever is needed to get back to the ORIGINAL RYBKA ASM. It will undo HIS CREATIVE SEMANTIC ALTERATIONS to the Rybka source, fixing everything, apparently. hehehehe!!!
Parent - - By bob (Gold) Date 2011-10-05 21:00
Simply nonsense, nothing but nonsense...
Parent - - By Rebel (****) Date 2011-10-05 22:26
No it isn't, the ROOK-case has proven it.
Parent - By bob (Gold) Date 2011-10-06 02:29
The rook case has proven WHAT, exactly???
Parent - - By George Speight (***) Date 2011-10-07 02:34

> No it isn't, the ROOK-case has proven it.

Ed, I don't guess it matters in the end, because we are getting closer and closer to a reversal in the ruling against Rybka. And Bob's mouth can't change that. But it would be fun to see you all get together and discuss this among yourselves, and when Hyatt shows up with his 2 cents worth, no one even acknowledge he posted a thread. You all skip over his threads and don't even read them. He's useless in the discussion anyway. All his threads are for is to cause confusion and misdirection. Be fun to see absolutely no one on our side even notice him for 30 days. You'd be better off anyway. Or better, get all the guys to put him on the IGNORE LIST.

Without attention, he cannot survive.

Parent - By bob (Gold) Date 2011-10-07 02:37
"getting closer to a reversal"???  What planet do YOU live on?  You obviously are not talking about "planet earth."
Parent - By Rebel (****) Date 2011-10-07 09:15
All true George.
Parent - - By Nick (*****) Date 2011-10-05 21:08

Shall we name it The VIG Vexating Optimizer V1.0 ?
Parent - By Rebel (****) Date 2011-10-05 22:19

> Shall we name it The VIG Vexating Optimizer V1.0 ?

Correction, The VIG Vexating Optimizer V1.0 BETA :wink:
Parent - By bob (Gold) Date 2011-10-05 20:24
Really.  Did you look at the code?  Did you see how "big" "search_update_current()" is?  It is quite likely that in cleaning up, this code could be copied into search, it could be inlined by the compiler, it could have been deleted in Rybka, who knows?  That's not the important point Mark is making about this code (BTW, here it is:)

void search_update_current() {

   my_timer_t *timer;
   sint64 node_nb;
   double time, speed, cpu;

   timer = SearchCurrent->timer;

   node_nb = SearchCurrent->node_nb;
   time = (UseCpuTime) ? my_timer_elapsed_cpu(timer) : my_timer_elapsed_real(timer);
   speed = (time >= 1.0) ? double(node_nb) / time : 0.0;
   cpu = my_timer_cpu_usage(timer);

   SearchCurrent->time = time;
   SearchCurrent->speed = speed;
   SearchCurrent->cpu = cpu;


Grasping for straws or gasping for air???

Did you read Mark's text?  About WHY this code exists (to deal with a race condition)?  It is the quirky solutions to a problem that make it easier to spot copied code when the "quirks" are also copied...  Did you read this:

Note in particular that (infinite || ponder) gets computed twice in both.
Also, the operations with Searching, Infinite, and Delay are ordered the
same (as are their variable allocations). Finally, setting Delay to be “false” can
be seen as redundant in Fruit, as three lines above it was ASSERTed to be so.
Parent - By Uly (Gold) Date 2011-10-06 00:41
Thanks Nick, I've changed the thread's title :lol:
- - By Uly (Gold) Date 2011-10-10 20:31
Today's crosspost, apparently, there'll be one every week :roll:


BB+ said (in single quotes):

'So I had my weekly glance at Rybka Forum. And ran across this: the process and output of the program is not eligible for copyright, but the specific code that accomplishes those processes is.

On what basis was Whelan v. Jaslow decided? One of the elements was that process contained [too] many "overall structural similarities".

The district court found that the copyright law covered these non-literal elements of the program, and we agree. This conclusion in turn requires us to consider whether there was sufficient evidence of substantial similarity between the structures of the two programs at issue in this case to uphold the district court’s finding of copyright infringement. Because we find that there was enough evidence, we affirm.
[...] [The plaintiff's expert witness] also  testified that five particularly important “subroutines” within both programs – order entry, invoicing, accounts receivable, end of day procedure, and end of month procedure – performed almost identically in both programs. [...] [The defendant's expert witness] concluded that “substantive differences in programming style, in programming structure, in algorithms and data structures, all indicate that the Dentcom system is not directly derived from either of the other systems.” [...] In his written report, however, which was entered into evidence, [he] conceded that the Dentalab and Dentcom programs had “overall structural similarities.”
The district court ruled for Whelan Associates on all grounds. [...]
We hold that (1) copyright protection of computer programs may extend beyond the programs’ literal code to their structure, sequence, and organization, and (2) the district court’s finding of substantial similarity between the Dentalab and Dentcom programs was not clearly erroneous. The judgment of the district court will therefore be affirmed.

[The logic behind this court's finding was later partially restricted (though overall agreed upon and in some part amplified, I would say) via later case law with the Abstraction-Filtration-Comparison Test].

Some of the earlier "Space Invaders"-like games led to questions of what parts of the audiovisual experience (output) were protected, and again copyright protection was extended (at least partially)  to such "output".

Audiovisual works such as these are primarily unprotectable games. Atari, 672 F.2d at 617. As the Seventh Circuit noted, however, the particular forms in which they are expressed — "shapes, sizes, colors, sequences, arrangements, and sounds" — add something beyond the mere game idea. Id. Thus, "The audio component and the concrete details of the visual presentation constitute the copyrightable expression of that game `idea'". Id. Nonetheless, Bandai argues that any similarities between its games and Midway's are nonactionable since they result from an allegedly inevitable connection between the expressions and the similarities in the underlying unprotectable ideas.
Bandai's position fails as a matter of law. It assumes,
sub silentio, that the idea of Midway's Galaxian game actually includes the physical characteristics of the characters involved. If such reasoning were accepted, a copyright defendant could always avoid liability merely by describing a plaintiff's work in great detail and then labeling that description the "idea" of plaintiff's work. The "idea" of any work could always be defined in such detail that the description of the expression would add nothing to the "idea", thus allowing a defendant to engage in all but verbatim copying. Such a ploy cannot be allowed.

To try to state this in terms of a UCI chess program, the "idea" of returning specific UCI strings given specific UCI input via the processes of a "chess engine" (e.g. "position fen X" then "go depth 15" in engine Y) is too closely detailed to be an "idea".

I conclude that the phrasing here (the process and output of the program is not eligible for copyright) is too general to be more than an (often incorrect) guide. I could go on and dissect what "specific code" means (e.g., does [or to what extent] a C rendition of functionally equivalent disassembled code qualify?), but I won't bother. If this is the sort of copyright "advice" on which modern software engineers rely, I'm surprised there are not more lawsuits. The proper standard (or catchphrase) to use is "substantial similarity", and one should be familiar with the AFC test vis-a-vis copyright infringement.

And to ask the nagging: on what basis did VR claim Strelka and IPPOLIT to be clones of Rybka, as I would think it fails the "specific code" test?'
Parent - - By turbojuice1122 (Gold) Date 2011-10-11 02:41
This seems like bad news for Vas, though not severely so.  If it is decided that Rybka falls into a similar category, then since Fruit is free, it would seem like potentially offending versions like Rybka 1.0 Beta (pretty difficult to place 2.3.2a into this group) would either have to have their source code released or a "clean" version would need to be released, or perhaps even some damages (probably relatively small) awarded to Fabien concerning the 1-series release.
Parent - - By Lukas Cimiotti (Bronze) Date 2011-10-11 07:20
In that case any UCI engine should be considered a clone of SMK's Shredder. BUT UCI is a free communication protocol:
Parent - - By Nick (*****) Date 2011-10-11 07:51
Whelan v Jaslow is desperation on the part of the attack team.  Rybka contains sufficient new expression over and above that embodied in Fruit to satisfy the law of copyright's requirement for originality.  The attack team are wheeling out an ancient ruling that does not apply in modern times and certainly not to this case.  There is a good article on the dangers of SSO here:

'the Plains Cotton court stated  simply:  "We  decline  to  embrace  Whelan."'  Same thing would happen here.
Parent - - By Uly (Gold) Date 2011-10-12 18:46
Crosspost from BB+

> Whelan v Jaslow is desperation on the part of the attack team

It is good to know that I am part of this imaginary "attack team". [And you wonder why I don't post on that forum?] As I stated previously Whelan versus Jaslow was partially modified via the later AFC cases.

>Rybka contains sufficient new expression over and above that embodied in Fruit to satisfy the law of copyright's requirement for originality.

No example of such new expression is given by Nick, let alone why it might suffice. Furthermore, when speaking with Dan Bernstein a few months ago, he opined that "transformative value" was almost never a significant issue in a binary innocent/guilty, but rather courts were more apt to determine what percentage of value the transformation entailed.

>The attack team are wheeling out an ancient ruling that does not apply in modern times and certainly not to this case. There is a good article on the dangers of SSO here:

Again Nick seems to refer to something imaginary. It is a bit odd that he refers to a 1991 article when speaking of "modern times" (note that AFC was in 1992). He gives no basis on why (or what parts of) Whelan versus Jaslow should not apply to this case [though I agree that AFC is more relevant]. If he is merely following Computer Associates v. Altai (which introduced AFC to overcome criticisms of some parts of Whelan/Jaslow), one can note that a "clean room" was used therein, and that the program was found to have few (if any) non-literal protectable elements. Both of these elements played a role in the decision.

To extend the analysis of how to interpret Whelan (again, just because parts of it are subject to criticism, the whole cannot simply be dismissed):

Nimmer wrote:
[t]he crucial flaw in [Whelan’s] reasoning is that it assumes that only one ‘idea,’ in copyright law terms, underlies any computer program, and that once a separable idea can be identified, everything else must be expression.

Nimmer is essentially noting that something so broad as the idea of "a program to play chess" is subject to many expressions, and thus not subject to copyright (as it might be if the "idea" were so specified as to have only one expression). In the case at hand, I would argue the expression of the ideas of Fruit 2.1 (particularly in the evaluation function) is substantially similar to the expression of them in Rybka 1.0 Beta. There are many ways of implementing chess knowledge, and Rybka 1.0 Beta (and to a lesser extent R232a) chooses one that is overly close to that of Fruit 2.1.

Here are some relevant parts of the AFC decision:

Computer Associates v. Altai wrote:
CA argues that, despite Altai’s rewrite of the OSCAR code, the resulting program remained substantially similar to the structure of its ADAPTER program. As discussed above, a program’s structure includes its non-literal components such as general flow charts as well as the more specific organization of inter-modular relationships, parameter lists, and macros. In addition to these aspects, CA contends that OSCAR 3.5 is also substantially similar to ADAPTER with respect to the list of services that both ADAPTER and OSCAR obtain from their respective operating systems. We must decide whether and to what extent these elements of computer programs are protected by copyright law.

In ascertaining substantial similarity under this approach, a court would first break down the allegedly infringed program into its constituent structural parts. Then, by examining each of these parts for such things as incorporated ideas, expression that is necessarily incidental to those ideas, and elements that are taken from the public domain, a court would then be able to sift out <23 USPQ2d 1253> all non-protectable material. Left with a kernel, or possibly kernels, of creative expression after following this process of elimination, the court’s last step would be to compare this material with the structure of an allegedly infringing program. The result of this comparison will determine whether the protectable elements of the programs at issue are substantially similar so as to warrant a finding of infringement. It will be helpful to elaborate a bit further. [...]

Note that this court ended up agreeing that a program's structure is copyrightable [in general], but disagreeing concerning the "list of services" part (being more utilitarian -- the same appears true with "organisational" aspects). They concluded that OSCAR (being essentially an adapter program) contained little if any protectable expression beyond the most literal (see the "Evidentiary Analysis" section). I doubt the same would apply to computer chess programs, and indeed the court decision indicates that the specifics are of great import:'

[...] We emphasize that, like all copyright infringement cases, those that involve computer programs are highly fact specific. The amount of protection due structural elements, in any given case, will vary according to the protectable expression found to exist within the program at issue.

Parent - By Nick (*****) Date 2011-10-12 20:10
Apologies to you Uly.

> It is good to know that I am part of this imaginary "attack team". [And you wonder why I don't post on that forum?]

Attack team is a valid description, I'm not sure how I have found myself in proxy-correspondence with someone who illegally publishes disassemblies of commercial Rybka on the internet but so be it ...

> No example of such new expression is given by Nick, let alone why it might suffice.

Some examples ...

1) Play Rybka vs. Fruit and look at the Elo difference. Example:

TC 40/5s+1s repeating, three 100 game matches.

Score of Rybka1.0beta-w32 vs Fruit21-w32: 50 - 14 - 36
ELO difference: 131

Score of Rybka1.0beta-x64 vs Fruit21-w32: 59 - 5 - 36
ELO difference: 210

Score of Rybka1.0beta-x64 vs Fruit21-x64: 68 - 8 - 24
ELO difference: 241

The excuse for this superiority has been given as "tuning".  Note that Hyatt cluster-tunes against much stronger entities than Crafty, rather than self-testing (something it seems that the Stockfish team do not do, they only self tune according to their recent CCC posts).  As Hyatt does not self-tune he can tune Crafty to play 100 Elo better by re-using the work of other programmers.  When Rybka 1.0 beta arrived on the scene it's closest rival was Shredder at -50 Elo, so the tuning argument won't work, just in the same way that Hyatt cannot tune Crafty to be 50 Elo stronger than Stockfish, to do that he would need to re-use some of the Rybka 3 ideas which are now publicly available.

2) Compare the output of both Fruit and Rybka on the "clone busting" positions used to identify that Houdini 1.0 behaves in the same was as some RobboLite version.

If you are unable to see the difference then I guess it's up to a jury to decide why these differences might suffice.

I'm familiar with the CA case, I've been in the commercial software industry for 25 years and have many friends at CA and I'm quite sure that case is not relevant here.  Remember that Fabien has publicly stated that there is nothing really new in Fruit, just a collection of existing ideas.  If Fruit had been patented then you might possibly have had some sort of case, but as things stand you do not.

BTW Whelen-v-Jaslow is unsafe to rely upon, it was debunked decades ago, thus my example from 1991.
Parent - - By Uly (Gold) Date 2011-10-14 16:28
Crosspost from BB+:

'Having looking at the court's logic, I would say that the word "simply" is a misnomer [and he only quoted the first part of the sentence, which ends for two reasons (which are then given, the first being merely procedural, that this was an [appeal of a] request for a preliminary injunction, rather than something more full-blown)]. Nick makes no argument for his conclusion that the "[s]ame thing would happen here", and I see no reason to think it is "simple". And as stated previously, the AFC would likely be used in any event, which indeed does note that things such as "structures" can be subject to copyright, though it chides Whelan in part for the latter's inter alia proposal that structural components are subject to protection (see also the above Nimmer commentary): We emphasize that, like all copyright infringement cases, those that involve computer programs are highly fact specific. The amount of protection due structural elements, in any given case, will vary according to the protectable expression found to exist within the program at issue.

Here is part of the Plains Cotton decision: ... 56/311573/ (24-26)
The legal finding by the district court ultimately rests on a judgment about the extent of the protection offered by appellant's copyright. On that issue, we look to our colleague Judge Higginbotham's opinion in Synercom Technology Inc. v. University Computing Co., 462 F. Supp. 1003, 199 U.S.P.Q. (BNA) 537 (N.D. Tex. 1978). In that case, Judge Higginbotham held that "input formats" of a computer program — the organization and configuration of the information fed to the computer — were ideas, not expressions, and thus were not protected by copyright.[2]

To the extent that input formats represent a level of computer software design more specific than functional design and more general than line-by-line program design, the issue of their copyrightability is relevant to the issue of whether GEMS infringes on protected Telcot designs. Appellant urges that we adopt the reasoning of Whelan Associates. Inc. v. Jaslow Dental Laboratory Inc., 797 F.2d 1222, 230 U.S.P.Q. (BNA) 481 (3d Cir. 1986), which admittedly is "at odds with Judge Higginbotham's scholarly opinion." Id. at 1239. Whelan rejects the premise developed in Synercom that "there [is] a difference between the copyrightability of sequence and form in the computer context and in any other context," id. at 1240, holding that the structure, sequence, and organization of computer programs are copyrightable.

We decline to embrace Whelan for two reasons. First, the issue is presented to us on review of a denial of a motion for a preliminary injunction. Thus, the record is only partially developed, and our review is one step removed from the actual merits of the case. Second, appellees presented evidence that many of the similarities between the GEMS and Telcot programs are dictated by the externalities of the cotton market. To that extent, the facts of this case fit squarely within Synercom's powerful analogy to the hypothetical development of gear shift patterns. 462 F. Supp. at 1013. The record supports the inference that market factors play a significant role in determining the sequence and organization of cotton marketing software, and we decline to hold that those patterns cannot constitute "ideas" in a computer context.[3]

The most relevant part is: We decline to embrace Whelan for two reasons. [...] Second, appellees presented evidence that many of the similarities between the GEMS and Telcot programs are dictated by the externalities of the cotton market. To the best of my knowledge and analysis, the similarities of Rybka 1.0 Beta and Fruit 2.1 are not dictated by the externalities of the computer chess market. Nor is the alleged copying something akin to the "input formats" mentioned above.'
Up Topic Rybka Support & Discussion / Rybka Discussion / Rybka 1.0 Beta matching Fruit 2.1 source code? No (locked)
1 2 3 Previous Next  

Powered by mwForum 2.27.4 © 1999-2012 Markus Wichitill