one final thread on robolito....in all fairness

Discussion of anything and everything relating to chess playing software and machines.

Moderator: Ras

Aaron Becker
Posts: 292
Joined: Tue Jul 07, 2009 4:56 am

Re: one final thread on robolito....in all fairness

Post by Aaron Becker »

Matthias Gemuh wrote: Have you intensionally skipped the claim that the source code was in a russian programming language "b", and ippolit.c is a decompilation of that code's executable ?

Matthias.
Is there any evidence that such a thing even exists? I see no reference to it anywhere else on the web, and it's absent from wikipedia's list of non-English programming languages. So I guess their claim is that they invented this language, wrote a compiler for it, and then wrote Ippolit using that. Then, once they produced an incredibly strong engine using this novel technique, they abandoned it for the next iteration of their work, which appears to be straight C.

A compiler that turns what they posted on their site into code that's equivalent to ippolit.c would be quite an extraordinary undertaking, even if they've omitted a lot of the "b" code. The idea that they've written this "b" compiler in secret, releasing nothing, and then apparently abandoned it strains credibility, to say the least. I ignored the whole "b" thing in my earlier post because I think it's a deliberate smokescreen for whatever procedure the authors actually used.
Michael Sherwin
Posts: 3196
Joined: Fri May 26, 2006 3:00 am
Location: WY, USA
Full name: Michael Sherwin

Re: one final thread on robolito....in all fairness

Post by Michael Sherwin »

Aaron Becker wrote:
Matthias Gemuh wrote: Have you intensionally skipped the claim that the source code was in a russian programming language "b", and ippolit.c is a decompilation of that code's executable ?

Matthias.
Is there any evidence that such a thing even exists? I see no reference to it anywhere else on the web, and it's absent from wikipedia's list of non-English programming languages. So I guess their claim is that they invented this language, wrote a compiler for it, and then wrote Ippolit using that. Then, once they produced an incredibly strong engine using this novel technique, they abandoned it for the next iteration of their work, which appears to be straight C.

A compiler that turns what they posted on their site into code that's equivalent to ippolit.c would be quite an extraordinary undertaking, even if they've omitted a lot of the "b" code. The idea that they've written this "b" compiler in secret, releasing nothing, and then apparently abandoned it strains credibility, to say the least. I ignored the whole "b" thing in my earlier post because I think it's a deliberate smokescreen for whatever procedure the authors actually used.

Code: Select all

* корень(ниже,над,глубин)&двигасписок(корень)^история(корень)
  < &распоряжаться |
   < || основа |
     [ [ %% ] + [ глубин > 2 ] ]
      %резать/низкого#(-ниже,глубин-2+&шах)^{ битва + !просто } ^
      %пв(-ниже-1,-ниже,глубин-2+&шах,&шах) ^ %пв(-над,-ниже,глубин-2+&шах,&шах)
     \ %пв(-над,-ниже,глубин-2+&шах,&шах) |
     [ (&) > %% ]# ![ [ %% ] + [ (&) <= ниже ] ] [ обновлять | [ (&) >= предыдущий-25 ] годный \ плохой ] |
     [ (&) > ниже ]# \ [ !счет ] плохой |
     [ (&) >= над ] %%! | счет > |
   распоряжаться |
  >

пешка мобильность 3 10
ферзь мобильность 2 2
ладья мобильность 2 3 Рентген
ладья ловушка 50 0 гнить
слон мобильность 5 5 вперед
слон цвет 2 1 половина 0 2 после
слон ловушка 40 40 блюсти удваивать
конь мобильность 6 8 вперед
 
Рентген слон/ладья 3 5
Рентген ферзь 2 4 пешкадиагональ половина
связка слабый 2 5
связка слон/ладья 15 25
связка ферзь 10 20
 
ферзь блюсти 5 2
ладья блюсти 3 1
слон блюсти 2 1
конь блюсти 4 2
 
пешка атака ферзь 8 12
пешка атака ладья 7 10
пешка атака легкой 5 7
легкой атака  7 10
легкой атака легкой 5 5
легкой атака пешка 3 4
ладья атака ферзь 5 5
ладья атака легкой 4 5
ладья атака пешка 2 3
ферзь атака 4 4
король атака пешка 0 5 !блюсти
многие атака 15 25
 
слон/ладья твердый 1 2 отличный 3 4
конь твердый 2 3 пешка 2 3 отличный 5 5 вперед 2 2 центр 3 3
 
ладья открытой 20 10 легкой 15 5 твердый 10 0
ладья половинаоткрытой 3 6 пешка 5 5 король 15 0
ладья 8м 5 10 7м 10 30 дуэт 10 20 6м 5 15
ферзь 7м/8м 5 25 дуэт 10 15
 
пешка колоть 1 0
легкой колоть 1 15
ладья колоть 1 25
ферзь колоть 1 40
король колоть 0 0
 
стеснять 0 5 открытой 5 15 проходная 0 1 сдвигать
проходная мобильный 4м 1 2 5м 2 3 6м 3 5 7м 5 10
проходная стритсам 6м 3 5 7м 5 10
проходная стритоппонент 5м 5 10 6м 15 30 7м 25 50
проходная Ясный 5м 5 10 6м 10 20 7м 20 40
проходная ферзь 4м 5 5 сдвигать
проходная ладьязасорять 7м 20 50
проходная ладьязасорять 6м 0 15
проходная ферзьзасорять 7м 0 10

пешка щепка 0 3
пешка пустой 1 2
пешка Сдвоенные 2 4 открытой 4 8 Изолированная 2 4 открытой 6 10
пешка Изолированная 5 8 открытой 15 20
пешка коротышка 5 5 открытой 10 15
король атака пешка 0 5
король рокировка 5 0
пешка кандидат 4м 5 5 5м 10 12 6м 20 25
пешка проходная 4м 10 10 5м 20 25 6м 40 50 7м 60 75
пешка проходная далеко 5м 2 5 6м 5 10 7м 10 20
пешка проходная охраняемый 5м 5 10 6м 10 15 7м 15 25
пешка проходная Связанные 5м 5 10 6м 10 15 7м 20 30
пешка кров край 5 15 20 25 30
пешка кров между 15 40 50 55 55
пешка кров центр 10 20 25 30 30
пешка кров диагональ a 2 4 6 8 10 b 2 4 6 7 8 c 2 3 4 5 6 d 1 2 3 4 4
пешка молния край 5 15 35
пешка молния между центр 10 20 50

* пв(ниже,над,глубин,шах)^история#
  < [ глубин <= 1 ] *%пвмолч#[шах](ниже,над,глубин)! | Хэш[пв]_читать&транс&Хэшглубин |
    [ [ !транс ] + [ глубин >= 6] ]
     *%пв[ глубин >= 10](ниже-глубин,над+глубин,глубин-8,шах)^транс ^
      *%пв(ниже-глубин,над+глубин,глубин-4,шах)^транс
    \ [ [ глубин >= 10 ] + [ глубин >= Хэшглубин + 8] ]
      *%пв(ниже-глубин,над+глубин,глубин-8,шах)^транс ^
       *%пв(ниже-глубин,над+глубин,глубин-4,шах)^транс |
    [ шах ] [ @уклонение() | [ #двига# < 2 ] особый*[ #двига# ] ] |
    [ глубин >= 16 ] + [ ок(транс) ] + [ особый < 2 ]
     [ || основа ! %пв(-над,-ниже,глубин-10,&шах) @!
       *%исключать[шах]#((&)-глубин/2,глубин-мин(12,глубин/2),транс)^особый ^
        *%исключать[шах]#((&)-глубин,глубин-мин(12,глубин/2),транс)^особый ] |
    << [ повторение# ] %макс(%%,0)% + счет! || основа !
       [проходная(6м)] вытягивание + вытягивание
       \ [ !взять ] вытягивание \ [ & шах ] вытягивание \ [ шах ] + [ рано ] вытягивание
       \ [ проходная(4м) ] вытягивание |
       [ транс ] + [ глубин-2+макс(вытягивание,особый) > 1 ]
        %резать/низкого#(-ниже,&левый)^%пв(-над,-ниже,&левый,&шах)
       \ %пв(-над,-ниже,глубин-2+макс(вытягивание,особый),&шах) >>
    [ !%% ] [ [ шах ] (0)! \ ступень! ]
  >

More search functions:
* молч(зарубка,глубин)
  < | Хэш_читать&транс | %оценить+5% |
    [ %% >= зарубка ] (&левый)! |
    #цель + разница[ пешка:#160* | минор:500 | ладья:800 ] |
    @сила(цель)^транс |
    сорт< [ !торговать ] + [ !транс ] + [ !рентген ] ! ||
          основа(150) ! %молч#(1-зарубка,глубин-1) > |
    [ глубин >= -1 ] + [ ниже <= (100+12_{глубин+4}) ]
     @шах(цель) + < || основа(150) ! %%молч(1-зарубка,глубин-1) >
  >
 
* молч+(зарубка,глубин)
  < | Хэш_читать&транс | %ступень% | ##цель |
    [ ниже < 10 ] %(оценить+10)% +  #цель + разница[ пешка:200* | минор:500 ] |
    @уклонение(цель)^транс |
    сорт< [ вмешиваться ] + [ !взятьпревращение ] + [ !транс ] + [ нуль ] + [ !мат ]
          + [ возможный + вперед < 25 ] счет! ||
          основа(150) ! %молч#(1-зарубка,глубин) > |
   [ счет ] + [ %% < -мат ] %зарубка-1%
  >

* низкого(зарубка,глубин)^история
  < [ ниже > 1125 ] (зарубка-1)! | Хэш_читать&транс |
    [ вперед >= 70+10*глубин ] (&основа)! | %мин(оценить,зарубка-1)% |
    [ вперед ] + [ нуль ] |! %молч(1-зарубка,0) |
    #цель + разница[ транс2^(50+8*глубин) | пешка^(75+32*глубин):#125* |
                   минор^(400+32*глубин)+[глубин<=3]:+300* | ладья^(600+32*глубин):+200* ]
            \ [ глубин<=3 ] + [ ниже > 4*глубин ] транс3 + маржа*[ниже+4*глубин+5]
   << [ повторение ] %макс(%%,0)% + счет! |
      [ счет >= глубин ] + [ $знак$ ] + [ !взятьшах ] + [ !рентген ] + [ фигура ]
      + [ 2*глубин + возможный + вперед < 40 + 2*счет ] счет! |
      [ взять += [ [ глубин <= 5 ] + [ !торговать# ] ] ]
      + [ !рентген ] + [ !корольход ] + [ !транс ] + [ !торговать ] счет! ||
      основа(150) !! %%низкого(1-зарубка,глубин-1) %+
                   [ [ счет >= глубин ] + [ 2*глубин + вперед# < счет ] ] !счет!
                    \ %низкого/молч(1-зарубка,глубин-2) | счет >> |
   [ !счет ] + [ $транс2$>= ] (0)!
 >
 
* низкого+(зарубка,глубин)
 < | Хэш_читать&транс# | %ступень% | ##цель |
   @транс@уклонение(цель) |
   @сорт< [ повторение ] %макс(%%,0)% + ! |
          [ вмешиваться ] + [ !мат ] + [ !транс ] + [ !торговать ] счет! ||
          основа(150) ! %резать/низкого/молч#(1-зарубка,глубин-2+рано+&шах) > |
   [ счет ] + [ %% < -мат ] %зарубка-1%
 >

* исключать(зарубка,глубин,двига)^история
  < | Хэш#_читать(нуль,прош!)&транс | #цель |
    [ вперед ] + [ нуль ] [ |! %резать/низкого/молч(1-зарубка,глубин-8-макс(вперед/32,3)) ] |
    [ глубин < 20 ] + [ ниже >= 48*(глубин-4) ]
     транс2 + счет + разница[ пешка:48*(глубин-2) ] |
    << (двига) ! | [ повторение ] %макс(%%,0)% + счет! |
       [ счет > 5 ] + [ $знак$ ] + [ !взятьшах ] + [ !рентген ]
       + [ 6_{глубин-6}{20} + возможный + вперед < 30 + 2*счет ] счет! |
       [ глубин < 20 ] + [ 2_{глубин-6} + вперед < 125 ] + [ $знак$ ] + [ !корольход ]
       + [ !рентген ] + [ !шах ] + [ !торговать ] счет! ||
       основа(300) ! %%резать(1-зарубка,глубин-1) %+
       [ счет > 5 ] + [ !взять ] + [ 2_{глубин-6}{20}+вперед# < счет - 15 ] !счет! |
       %$ [ $знак$ ] + [ счет >= 3 ] $BSR(1+счет)$
          %резать/низкого/молч(1-зарубка,глубин-2+проходная(6м)) $% | счет >> |
    %зарубка-1%
  >
 
* исключать+(зарубка,глубин,двига)
  < | Хэш#_читать(прош)&транс | %ступень% |
    @транс@уклонение(цель) |
    @сорт < (двига) ! | [ повторение ] %макс(%%,0)% + счет! ||
            основа(300) ! %%резать/низкого(1-зарубка,глубин-1) %+
            %$ [ счет >= 1 ] $мин(2,счет)$ %резать/низкого(1-зарубка,глубин-2+рано) $% | счет >
  >

* все(зарубка,глубин)^история
  < | Хэш[все]_читать(нуль,прош)&транс | #цель |
    [ вперед ] + [ нуль ] [ |! %резать/низкого/молч(1-зарубка,глубин-8-макс(вперед/32,3)) ] |
    [ глубин < 20 ] + [ ниже >= 48*(глубин-4) ]
     транс2 + счет + разница[ пешка:48*(глубин-2) ] |
    << [ повторение ] %макс(%%,0)% + счет! |
       [ счет > 5 ] + [ $знак$ ] + [ !взятьшах ] + [ !рентген ]
       + [ 5_{глубин-6}{20} + возможный + вперед < 35 + 2*счет ] счет! |
       [ глубин < 20 ] + [ 2_{глубин-6} + вперед < 125 ] + [ $знак$ ] + [ !корольход ]
       + [ !рентген ] + [ !шах ] + [ !торговать ] счет! ||
       основа(300) ! %%резать(глубин-1) %+
       [ счет > 5 ] + [ !взять ]  + [ 2_{глубин-6}{20} + вперед# < счет - 15 ] !счет! %+
       %$ [ $знак$ ] + [ счет >= 3 ] $BSR(1+счет)$
          %резать/низкого/молч(1-зарубка,глубин-2+проходная(6м)) $% | счет >> |
    [ !счет ] + [ $транс2$>= ] (0)! | %зарубка-1%
  >
 
* все+(зарубка,глубин)
  < | Хэш[все]_читать(прош)&транс# | %ступень%
    @транс@уклонение(цель) |
    @сорт< [ повторение ] %макс(%%,0)% + счет! ||
           основа(300) ! %%резать/низкого(1-зарубка,глубин-1) %+
           %$ [ счет >= 1 ] $мин(2,счет)$
              %резать/низкого(1-зарубка,глубин-2+рано) $% | счет >
  >

 резать(зарубка,глубин)^история
  < | Хэш[резать]_читать(нуль,прош)&транс | #цель |
    [ вперед ] + [ нуль ] [ |! %все/низкого/молч(1-зарубка,глубин-8-макс(вперед/32,3)) ] |
    [ !транс ] + [ глубин >= 6 ] *%резать/низкого(зарубка,глубин-4)^транс |
    [ глубин >= 16 ] + [ ок(транс) ]
     *%исключать(зарубка-глубин,глубин-мин(12,глубин/2),транс)^особый +[ ступень*4 <= глубин ] особый ^
      *%исключать(зарубка-2*глубин,глубин-мин(12,глубин/2),транс)^особый +[ ступень*8 <= глубин ] особый |
    [ глубин < 20 ] + [ ниже >= 48*(глубин-5) ]
     $транс2$ + счет + разница[ пешка:48*(глубин-2) ] |
    << [ повторение ] %макс(%%,0)% + счет! |
       [ счет > 5 ] + [ $знак$ ] + [ !взятьшах ] + [ !рентген ]
       + [ 1_{глубин-6}{20} + возможный + вперед < 35 + 2*счет ] счет! ||
       основа(300) !
       [ транс ] + [ проходная(4м) ] вытягивание \ [ проходная(6м) ] вытягивание |
       [ транс ] + [ мена ] вытягивание | вытягивание*[макс(вытягивание,особый)] |
       %%все(глубин-2+макс(1,вытягивание)) %+
       [ счет > 2 ] + [ !взять ]  + [ 2_{глубин-6}{20} + вперед# < счет - 15 ] !счет! %+
       %$ [ $знак$ ] + [ !вытягивание ] $4+BSR(4+счет)$
          %все/низкого/молч(1-зарубка,глубин-2+вытягивание) $% | счет >> |
    [ !счет ] + [ $транс2$>= ] (0)! | %зарубка-1%
  >

* резать+(зарубка,глубин)
  < | Хэш[резать]_читать(прош)&транс# | %ступень%
    [ глубин >= 16 ] + [ транс ]
    *%исключать(зарубка-глубин,глубин-мин(12,глубин/2),транс)^особый +[ ступень*4 <= глубин ] особый ^
     *%исключать(зарубка-2*глубин,глубин-мин(12,глубин/2),транс)^особый +[ ступень*8 <= глубин ] особый |
    @транс@уклонение(цель) |
    @сорт < [ повторение ] %макс(%%,0)% + счет! ||
            основа(300) ! %%все/низкого(1-зарубка,глубин-2+макс(1,особый)) %+
            %$ [ счет >= 1 ] $1+мин(счет,2)+BSR#(глубин-7)$
               %все/низкого(1-зарубка,глубин-2+макс(рано,особый)) $% | счет >
  >

* пвмолч(ниже,над,глубин){пв}
  < | Хэш[пвмолч]_читать&транс | %оценить+5% |
    #цель + разница[ пешка:#160* | минор:500 | ладья:800 ] |
    @сила(цель)^транс |
    сорт< [ торговать ] += [ транс ] [ || основа ! %пвмолч#(-над,-ниже,глубин-1) ] \ юридическивзять > |
    [ глубин > 0 ] юридическивзять< || основа ! %пвмолч#(-над,-ниже,глубин-1) > |
    [ глубин >= -2 ] + [ ниже <= 100 + 12_{глубин+5} ]
     @шах(цель) + < || основа ! %%пвмолч(-над,-ниже,глубин-1) > |
    [ глубин >= 0 ] + [ ниже <= 150 ]
     @накидка(ниже) + < || основа !# [ вперед ] %пвмолч(-над,-ниже,0) >
  >
 
* пвмолч+(ниже,над,глубин){пв}
  < | Хэш[пвмолч]_читать&транс | %ступень% |
    #цель + разница[ пешка:200* | минор:500 ] |
    @уклонение(цель)^транс |
    сорт< || основа ! %пвмолч#(-над,-ниже,глубин) ] > |
  >
If you are on a sidewalk and the covid goes beep beep
Just step aside or you might have a bit of heat
Covid covid runs through the town all day
Can the people ever change their ways
Sherwin the covid's after you
Sherwin if it catches you you're through
Aaron Becker
Posts: 292
Joined: Tue Jul 07, 2009 4:56 am

Re: one final thread on robolito....in all fairness

Post by Aaron Becker »

I mean evidence of a translator/compiler. I know they posted some code on their site. This can't be more than a sketch of the routines in question anyway. They posted 265 lines of "b" describing eval and search routines. The equivalent source in ippolit.c is more than 10k lines of tightly optimized C, so obviously something is missing.
Alexander Schmidt
Posts: 1235
Joined: Thu May 10, 2007 2:49 pm

Re: one final thread on robolito....in all fairness

Post by Alexander Schmidt »

Graham Banks wrote:
Alexander Schmidt wrote:
Graham Banks wrote:Secondly the Rybka author indicated early that the code posted was stolen code (nearly six months before any working compiles were put out).
I missed that one. Could you provide a link?

When was the code stolen?

Why do we argue about Ippolit to be a Rybka 3 or Rybka 4 clone while VR said when his code was stolen...
Here was the May page of the Ippolit code:
http://www.chesskb.com/Uwe/Forum.aspx/c ... IT-release
I emailed Vas on the 10th May to ask him if he was aware of this page, because I'd been reliably informed that it was stolen Rybka code.
Vas replied that he was aware and confirmed that it was stolen code.

Cheers,
Graham.
Then I missunderstood. I thought VR said someone got his sourcecode.. This would mean he would know wich version it is.

Ty anyway, but I think your link is not fine with the rules in CCC :wink:

Alex
User avatar
Graham Banks
Posts: 44899
Joined: Sun Feb 26, 2006 10:52 am
Location: Auckland, NZ

Re: one final thread on robolito....in all fairness

Post by Graham Banks »

Alexander Schmidt wrote: Ty anyway, but I think your link is not fine with the rules in CCC :wink:

Alex
I wondered that myself. I guess the mods will remove it if they think it necessary.

Cheers,
Graham.
gbanksnz at gmail.com
User avatar
Matthias Gemuh
Posts: 3245
Joined: Thu Mar 09, 2006 9:10 am

Re: one final thread on robolito....in all fairness

Post by Matthias Gemuh »

Aaron Becker wrote:I mean evidence of a translator/compiler. I know they posted some code on their site. This can't be more than a sketch of the routines in question anyway. They posted 265 lines of "b" describing eval and search routines. The equivalent source in ippolit.c is more than 10k lines of tightly optimized C, so obviously something is missing.
Defining that decompiled code as "tightly optimized C" best serves your purpose, right ?

Code: Select all

So I guess their claim is that they invented this language, wrote a compiler for it, and then wrote Ippolit using that.
If Wiki doesn't mention a programming language, then the language doesn't exist ?
I don't have that much faith in Wiki.

Matthias.
My engine was quite strong till I added knowledge to it.
http://www.chess.hylogic.de
Aaron Becker
Posts: 292
Joined: Tue Jul 07, 2009 4:56 am

Re: one final thread on robolito....in all fairness

Post by Aaron Becker »

Matthias Gemuh wrote:
Aaron Becker wrote: Defining that decompiled code as "tightly optimized C" best serves your purpose, right ?
BTW, if Wiki doesn't mention a programming language, then the language doesn't exist ?
I don't have that much faith in Wiki.

Matthias.
I'm just trying to characterize ippolit.c accurately. Wherever it came from, it's tightly optimized C. If it came from ь, they have a high quality compiler/translator. As far as ь goes, I don't necessarily trust wikipedia either, but I can't find any reference to this programming language anywhere aside from Ippolit's website. There's the B programming language from Bell labs (predecessor of C), but that's a completely separate thing. Is anyone else familiar with the ь language? I have the impression that it's supposed to be a custom job produced by the authors of Ippolit, but that may be a misunderstanding on my part.
User avatar
Matthias Gemuh
Posts: 3245
Joined: Thu Mar 09, 2006 9:10 am

Re: one final thread on robolito....in all fairness

Post by Matthias Gemuh »

Aaron Becker wrote:... but I can't find any reference to this programming language anywhere aside from Ippolit's website.
There is far more in Russia that you won't find any reference to on the web.

Matthias.
My engine was quite strong till I added knowledge to it.
http://www.chess.hylogic.de
Aaron Becker
Posts: 292
Joined: Tue Jul 07, 2009 4:56 am

Re: one final thread on robolito....in all fairness

Post by Aaron Becker »

Matthias Gemuh wrote: There is far more in Russia that you won't find any reference to on the web.
Matthias.
True, no doubt. But if there's no information about ь and no ь compiler or translator available to us, then we're back where we started. The ь code posted on their site obviously doesn't explain ippolit.c on its own, but if more information becomes available maybe things will be clearer. Personally, I'm doubtful that there really is such a thing as the ь programming language, but I'd be happy to be proven wrong.
El Gringo
Posts: 118
Joined: Tue Nov 27, 2007 4:01 pm

Re: one final thread on robolito....in all fairness

Post by El Gringo »

Dr.Wael Deeb wrote:
Damir wrote:Not if larry K is behind it... :lol:
Precisely because Larry K is behind it :lol:

:wink:
Thanks Dr Deeb, you got my point.....

Best
Johan