BB's Rybka/Ippolit comparison

General discussion about computer chess...
BTO7
Posts: 101
Joined: Thu Jun 10, 2010 4:21 am

Re: BB's Rybka/Ippolit comparison

Post by BTO7 » Tue Jun 15, 2010 11:35 pm

kingliveson wrote:FAQ from Ippolit website:
Q. IPPOLIT pursues previous ships?
A. True, with KAISSA, Crafty, Fruit/Toga/Rybka/Strelka, etc. Yet beyond solely saponification from predescendants.
Is it time for this debate to change? On the basis that BB+'s report is an accurate analysis, perhaps it's time to shift the conversation a bit. Will the chess community accept Reverse Engineering as a legitimate form of discovery? Study a strong program, find out its strength, and implement these ideas into your own program. Where should a line be drawn, and is there really necessity for a line?
Well a chess engine to me is just that a chess engine. It seems perfectly acceptable that ideas are gonna come from other programs. We dont design cars from the ground up that look nothing like the original idea of a car do we? Its a car for crying out loud. Yea i thought of the wheel ...yea BUT i was the one who thought of putting rubber on it. I mean if we are gonna start....well my program checks to see if your in check...and if yours now does the same thing you copied my idea?? Give me a break. The line should be no exact code....with exact same instructions but to have similar ideas being illegal is just going too far. You dont keep re inventing the wheel.

Regards
BT

User avatar
kingliveson
Posts: 1388
Joined: Thu Jun 10, 2010 1:22 am
Real Name: Franklin Titus
Location: 28°32'1"N 81°22'33"W

Re: BB's Rybka/Ippolit comparison

Post by kingliveson » Wed Jun 16, 2010 12:06 am

BTO7 wrote:
kingliveson wrote:FAQ from Ippolit website:
Q. IPPOLIT pursues previous ships?
A. True, with KAISSA, Crafty, Fruit/Toga/Rybka/Strelka, etc. Yet beyond solely saponification from predescendants.
Is it time for this debate to change? On the basis that BB+'s report is an accurate analysis, perhaps it's time to shift the conversation a bit. Will the chess community accept Reverse Engineering as a legitimate form of discovery? Study a strong program, find out its strength, and implement these ideas into your own program. Where should a line be drawn, and is there really necessity for a line?
Well a chess engine to me is just that a chess engine. It seems perfectly acceptable that ideas are gonna come from other programs. We dont design cars from the ground up that look nothing like the original idea of a car do we? Its a car for crying out loud. Yea i thought of the wheel ...yea BUT i was the one who thought of putting rubber on it. I mean if we are gonna start....well my program checks to see if your in check...and if yours now does the same thing you copied my idea?? Give me a break. The line should be no exact code....with exact same instructions but to have similar ideas being illegal is just going too far. You dont keep re inventing the wheel.

Regards
BT
I think it's a fair question for computer chess community. My position is, Ippolit is 100% legitimate unless someone comes up with something that disqualifies it. May be in 2 years time. We shall see...
PAWN : Knight >> Bishop >> Rook >>Queen

zwegner
Posts: 57
Joined: Thu Jun 10, 2010 5:38 am

Re: BB's Rybka/Ippolit comparison

Post by zwegner » Wed Jun 16, 2010 2:38 am

Rebel wrote:The timing of this document could not be more perfect considering the email exchange between Vas and Sven, see CCC.

The chaos is complete.

Ed
I should say that the timing was sort of related. I read the thread on CCC and remembered that I still needed to post this, and thought it would be a good opportunity to do so. :)

BB+
Posts: 1484
Joined: Thu Jun 10, 2010 4:26 am

Re: BB's Rybka/Ippolit comparison

Post by BB+ » Wed Jun 16, 2010 3:11 am

mjlef points out that I conflated RobboLito and IPPOLIT null move constraints (for a side to do null move, RobboLito demands a piece, while IPPOLIT does not. The relevant text now reads:

Code: Select all

Both turn off null move for a side when it has only pawns left, IPPOLIT via a flag in a material table (in RobboLito, a minor piece is needed for null move), and Rybka via a direct computation (via {\tt or} of BNRQ bitboards -- IPPOLIT has a similar ``computation'' in a pruning condition for low-depth search via {\tt xor} of the occupied with the PK bitboards).
I do not find the "not a king move" constraint particularly interesting, it is just common sense. It is meaningless to call SEE on king moves, especially if you check for legality in the movegen. If a king move is legal, then its SEE will be always good.
Indeed you are right, and most annoyingly, I'm pretty sure I thought of your explanation when I first noticed this, but evidently it didn't stick well enough in my mind. Common sense is rather uncommon. :(

As an aside, both Rybka and IPP_ENG.c pre-eliminate king moves to squares the opponent attacks, but both do so only in generation of ordinary moves, and not in capture moves. The same looks true for the latest IvanHoe:

Code: Select all

  sq = BSF (BitboardMyK); // capture gen
  T = AttK[sq] & mask;

Code: Select all

  sq = BSF (BitboardMyK); // ordinary gen
  T = AttK[sq] & empty & (~OppAttacked);
BTW, how many months of work did it take? Just curious........
As with Dann Corbit (and probably others --- DC at least openly says he did), from the first day I obtained R3 I was fooling around with it. And I had looked a bit at previous versions, and for that matter, having the Strelka source code at hand can be of some use. Figuring out the node-count obfuscation didn't take too long, and I did some more dabbling after that. There was an actual repeatable crash (found by Nelson Hernandez http://rybkaforum.net/cgi-bin/rybkaforu ... pid=122549) that was reported a few months after the release, and I was able to track that down as a 32-bit/64-bit problem (the direct cause at least -- things had gone askew before this). I think I was away from the Rybka forum from like July to November (in 2009), but when I returned I started some RE in more earnest. Then I checked out for a month or so again, and starting posting some semi-detailed comparisons when I returned (it was at this time that I corresponded more with Larry Kaufman about the eval --- I don't think he knows me other than as BB). Ironically, it was M ANSARI who kept on saying (essentially) that when I dug deeper into it I would find more evidence of cloning. Along with my difficulties with the moderation at the Rybka forum, I then decided that an academic-style report was a better bet than piecemeal snippets, and when I spoke with Zach in March, he was also interested in the idea. It then took me 2 more months to complete the report.
I have a proposal that might help. If you are able to tell me how ProDeo detects a passed pawn that would be proof enough for me you are able to do a RE job, thus your skills. After all your document is all about RE.
I will glance at ProDeo, and see if this is a reasonable proposal (that is, whether I think I would have to understand too much of the totality of ProDeo to zero-in on this one aspect).
In an ideal world I would agree with you. The paper is a bomb under the credibility of Vas, a programmer who ruled the computer chess world for years.
I disagree with this. My impression is that VR simply had some all-too-human blinders, and didn't necessarily make fine distinctions with "cloning" and "derivative" and "code" when he spoke about it. The crazy IPPOLIT style of release can't be said to have helped matters (and it has been speculated that their zaniness was intentionally provocative in this manner).

BB+
Posts: 1484
Joined: Thu Jun 10, 2010 4:26 am

Re: BB's Rybka/Ippolit comparison

Post by BB+ » Wed Jun 16, 2010 3:55 am

in RobboLito, a minor piece is needed for null move
This should say "in RobboLito, more than just a minor piece is needed for null move"
This is not entirely true for Robbolito. It turns off null move when there are only pawns left only if there was a promotion previously. So strictly speaking Robbolito almost never demands a piece for a null move. Funny thing is that condition for setting this flag in eval is partially redundant (or at least it could have been implemented much more elegantly) :).
I don't claim to be the biggest RobboLito expert, but I think you are confusing two things. There is first the flags setting in valore.c (material_value.c in IvanHoe), and then the "fix" in evaluation when there has been a specific type of promotion.

Code: Select all

static int
pietras_inizializzazione (int bianco_pedone, int bianco_cavallo, ...
{
  uint8 PIETRAS =
    ((bianco_cavallo || bianco_alfiere || bianco_donna || bianco_torre) << 1) |
    ((nero_cavallo || nero_alfiere || nero_donna || nero_torre) << 0);
#if 1
  if (!bianco_donna && !bianco_torre && bianco_alfiere + bianco_cavallo == 1
      && bianco_pedone <= 4 && nero_pedone <= 4)
    PIETRAS &= 1; // no white null move
  if (!nero_donna && !nero_torre && nero_alfiere + nero_cavallo == 1
      && bianco_pedone <= 4 && nero_pedone <= 4)
    PIETRAS &= 2; // no black null move
#endif
[...]
The lower two bits on PIETRAS correspond to allowing null move. So the flag is true if you have a piece, unless you have a just a minor and neither side has more than 4 pawns.

Then in evaluation there is

Code: Select all

  if (!(DINAMICO->materiale & 0x80000000)) // a bad type of promotion has occurred
    materiale_valu = MATERIALE[indice].valu;
  else
    { // if the material table is not useful
      if (POPCNT (bitbordo_bianca_donna) > 1 || POPCNT (bitbordo_nera_donna) > 1
          || POPCNT (bitbordo_bianco_torre) > 2 || POPCNT (bitbordo_nero_torre) > 2
          || POPCNT (bitbordo_bianco_chiaro) > 1 || POPCNT (bitbordo_nero_chiaro) > 1
          || POPCNT (bitbordo_bianco_scuro) > 1 || POPCNT (bitbordo_nero_scuro) > 1
          || POPCNT (bitbordo_bianco_cavallo) > 2 || POPCNT (bitbordo_nero_cavallo) > 2)
        {
          SEGNO = 0x80;
          materiale_valu = valore_material ();
          DINAMICO->pietras = 0;
          if (bitbordo_bianca_donna | bitbordo_bianco_torre | bitbordo_bianco_alfiere | bitbordo_bianco_cavallo)
            DINAMICO->pietras |= 2; // allow white null move
          if (bitbordo_nera_donna | bitbordo_nero_torre | bitbordo_nero_alfiere | bitbordo_nero_cavallo)
            DINAMICO->pietras |= 1; // allow black null move
        }
      else // just get it from the table
        {
          materiale_valu = MATERIALE[indice].valu;
          DINAMICO->materiale &= 0x7fffffff;
        }
    }
The 0x8000000 condition is for, at sometime in the move stack to this point, a promotion to a piece already on the board at that time. If this is true, then it computes the null condition (rather than getting it from the flags in the material table). You are correct that this recomputation demands just a piece, and not more than a minor.

Sentinel
Posts: 122
Joined: Thu Jun 10, 2010 12:49 am
Real Name: Milos Stanisavljevic

Re: BB's Rybka/Ippolit comparison

Post by Sentinel » Wed Jun 16, 2010 4:19 am

BB+ wrote:I don't claim to be the biggest RobboLito expert, but I think you are confusing two things. There is first the flags setting in valore.c (material_value.c in IvanHoe), and then the "fix" in evaluation when there has been a specific type of promotion.
I realized that it's updated in material (which ignores promotions anyway) that's why I removed the post. It's getting quite late here (or early), so I obviously got too tired :).
Anyway material flags are quite messy in Robbo code and certainly not used enough.

User avatar
Rebel
Posts: 515
Joined: Wed Jun 09, 2010 7:45 pm
Real Name: Ed Schroder

Re: BB's Rybka/Ippolit comparison

Post by Rebel » Wed Jun 16, 2010 10:35 am

Rebel wrote:In an ideal world I would agree with you. The paper is a bomb under the credibility of Vas, a programmer who ruled the computer chess world for years.
BB+ wrote: I disagree with this. My impression is that VR simply had some all-too-human blinders, and didn't necessarily make fine distinctions with "cloning" and "derivative" and "code" when he spoke about it. The crazy IPPOLIT style of release can't be said to have helped matters (and it has been speculated that their zaniness was intentionally provocative in this manner).
Vas said Ippo and company are Rybka clones. Based on this statement Ippo and company were banned. I never believed it after looking at the Ippo-sources and doing some tests with special positions. And now there is your document. Saying clumsy things are acceptable when things are retracted or you start defending your words, none of that happened, instead Vas repeats his claim as a reaction on your document. There is this psychological phenomenon, the "point of no return", it is where Vas is now.

It once happened to me with the BT-Rebel 6 thing being faced with an accusation and then not telling the truth afraid of the shame, image and financial loss. Stupidity of the worst kind and it still hunts my conscience after all these years but that aside, what I am trying to say is that the moment Vas said Ippo is a Rybka clone it's already plausible he (unconsciously) crossed the the line of "the point of no return", retracting becomes almost impossible.

Human alike? You bet. No disagreements here.

Ed

wolfv
Posts: 6
Joined: Thu Jun 10, 2010 2:14 pm
Real Name: Djordje Vidanovic

Re: BB's Rybka/Ippolit comparison

Post by wolfv » Fri Jun 18, 2010 3:14 am

"...It once happened to me with the BT-Rebel 6 thing being faced with an accusation and then not telling the truth afraid of the shame, image and financial loss. Stupidity of the worst kind and it still hunts my conscience after all these years...".

Thank you so much for saying this, Ed. I remember the "incident" (it was all over the old issues of Computerschach und Spiele", and I followed the story with much interest). Must be a load off your chest now to say it out loud. As far as I am concerned, such honest self-examination has fully redeemed you. Moreover, it should be a pointer for all of us how to examine our lives and live like honorable people. It's never too late to start applyinng the olden rule that a life not examined is not worth living. However, I am afraid that the man whom you estimate to have passed the point of return is not particularly keen on examining his life (unofortunately), although I wish him all the best.

Thanks again.

Djordje

User avatar
kingliveson
Posts: 1388
Joined: Thu Jun 10, 2010 1:22 am
Real Name: Franklin Titus
Location: 28°32'1"N 81°22'33"W

Re: BB's Rybka/Ippolit comparison

Post by kingliveson » Sat Mar 05, 2011 11:37 pm

It is going on 2 years since the initial release (May 2009) of Ippolit...and is now accepted to a point since rating lists are testing them. This is a good time for write up on the Ippolit case.
Vasik Rajlich wrote:Ippolit is disassembled Rybka 3 with changes. The changes are considerable but not even close to enough to leave any doubt. Robbolito is an evolved Ippolit, with more changes and more cleanup. I haven't checked the other new engines yet.

I'll definitely write up the Ippolit case at some point, for the historical record. Anonymous engines are not accepted by the CC community, so there is no hurry. I think it's best to wait one to two years before writing up an anonymous engine. Otherwise, cloners could use anonymous releases to get information, and then take more aggressive steps.

Re. tracking down the cloners: Not worth the energy, IMO.

Re. Fruit and Rybka: The Rybka source code is original. I did take a lot of things from Fruit, but legally. If there are some good concrete questions from credible people, please send them along.

Re. Rybka 3 source code: Unfortunately, I don't have it. (Yes, it was careless. I'm keeping the Rybka 4 source code.) It's not necessary for writing up the Ippolit case, but it would probably make a court case more difficult.

Best regards,
http://talkchess.com/forum/viewtopic.php?t=34908
PAWN : Knight >> Bishop >> Rook >>Queen

G.Paredes
Posts: 3
Joined: Sun Mar 06, 2011 12:16 am
Real Name: Gabriel

Re: BB's Rybka/Ippolit comparison

Post by G.Paredes » Sun Mar 06, 2011 12:21 am

Hopefully, the investigation will make a positive, theres indeed alot of material against Rybka, the funny thing is the attitude of its supporters in the Rybka forum.

Post Reply