Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Review of ALEXS by Larry Kaufman

Author: Robert Hyatt

Date: 20:52:01 02/16/99

Go up one level in this thread


On February 16, 1999 at 13:18:57, Djordje Vidanovic wrote:

>Bob, you talk about Voyager as 100% Crafty, actually indistiguishable from
>Crafty.  For all I know it may well be true.  Please submit evidence for
>everyone to see.  As its tester and operator on FICS, Chess.net and ICC I will
>tell you what I know, fair and square.  Voyager's author (in our initial stage
>of cooperation) did inform me about the book format (mainly taken over from
>Crafty) and about the hash routines (again stemming from Crafty).  That was all.
> The situation was such till version 3.10 I believe (now we have a new version,
>3.14).  I simply had no grounds for any suspicion.  Why didn't I suspect
>anything here?  Two reasons: 1. I trusted the author, I took it all in good
>faith; 2. Voyager seemed to play different kind of chess, so much so that some
>chess programmers and I, while watching Voyager play on the servers, were
>astonished by the freshness and deep tactical abilities of the program. It was a
>_completely_ different style of play, I can assure you all.  I am not going to
>quote the names of the people who witnessed hundreds of games, observing them
>together with me, who would, I am rather sure, confirm what I am saying now.
>
>With this kind of style, I did not for a moment contemplate analysing Voyager's
>PVs, doing test-suites, etc.  All I cared for was the quality of its play.  The
>advice that I relayed to the author seemed to have been heeded.  It looked to me
>that I was partly "responsible" for Voyager's success in blitz and bullet and
>that my advice was woven into Voyager...
>
>Another thing:  in _each_ and _every_ match on equal hardware Voyager beat
>Crafty, and sometimes it was a lot of fun to watch!  At first I could not
>believe what I was seeing, but it became normal later.  Not for a moment did I
>suspect that there was some kind of plagiarism in the Voyager project.  For
>instance, Voyager once beat Crafty 12-0 at bullet.  It was not any Crafty, but a
>4-processor Crafty on ICC (Singacrafty) and I was running Voyager on my PII-350
>from home!! No small feat this.  Then I had scores like 24-4 against
>Singacrafty, Razzle and Sienna (all Crafty clones and all running on faster
>hardware).  How could anyone in my place have suspicions about Voyager being a
>Crafty clone, as Bob is contending?  Who would, given points 1 and 2 above, on
>top of this.  I was proud and happy about Voyager.
>
>There is a completely independent, highly sophisticated source, which I may be
>in position to quote, that has lots of test-games performed on state-of-the-art
>machines which confirms my results. In their own batch of test games, Voyager
>beat Crafty in every single match too!!
>
>After talking really sincerely and in good faith to Bob on ICC the other day I
>decided to test Voyager 3.08a, the Fritz/Nimzo compliant engine.  Please rest
>assured that I saw NO resemblance in the two programs regarding either PVs or
>style of play! (Mind you, we are not talking about the Winboard incarnation of
>Voyager that served only as some kind of testing ground!) Voyager 3.08a is in a
>class of its own -- it can stand up to just about any Fritz/Nimzo engine, plays
>fresh, sometimes very "youthful" chess, striving for perpetual pressure,
>advancing all the time and playing "intuitively"...  These are not only my
>observations either...
>
>If Bob can REALLY prove that Voyager is a dead ringer of Crafty's after
>comparing the performances of the two mentioned programs -- and if there is an
>independent, intersubjective agreement on this, then I am sure that Voyager's
>author ought to apologise publicly both to Bob, the real author, and me as
>someone who did one hell of a job, testing, analysing, jotting down remarks and
>helping out with the book.
>
>But, let us not focus only on the book format or hash format (which is
>completely rewritten now, starting with version 3.10).  Let us talk about
>different or identical programs. There have some other examples -- programs
>created on the basis of another program becoming truly original and completely
>different from the model program itself.
>
>So, Bob, out with your evidence, state clearly what you have, you may have a
>point.  Enough with oblique statements --  I don't think that anyone rational
>will take them for granted. Your respected name and distinguished career in
>computer chess are not evidence. Otherwise, an age of paranoia is just round the
>corner where each programmer is going to be wary and on the lookout for a
>fraudulent program.  I, for one, would LOVE to know where I stand having put in
>so much effort and free time in the project.
>
>Best regards to you Bob,
>Djordje


First, the binary files used by crafty (book.bin, books.bin, position.bin)
are _identical_.  Byte for byte.  File for file.  The filenames are different,
but the content is not.  Ditto for book.lrn and position.lrn.  They are still
there, but the ascii stuff in 'em is identical to current crafty.
--------------------------------------------------------
The stuff below was obtained by doing a 'strings voyager.exe >xx' to
get the character strings in the file.  There are many taken directly
from various modules, as given below.  My comments always preceed a
string of "-----------------------"
--------------------------------------------------------


               im Buch   0.0s  Haeufigkeit  %3d%%
               spielbare Zuege, die nicht im Buch sind
               spielbare Zuege
               Im Buch

Typical crafty output.  'in book' 0.0 seconds search time, etc...
--------------------------------------------------------
usage:  book [option] [filename] [maxply] [minplay]
choose from %d best moves.
usage:  book width <n>
width
at least %d times.
search book moves if the most popular was not played
usage:  book trigger <n>
trigger
play best book line after search.
choose from book moves randomly (using weights.)
valid options are 0-1.
usage:  book random <n>
random
  %s elapsed.
time used:  %s cpu
longest cluster of moves was %d.
deepest book line was %d plies.
book contains %d unique positions.
discarded %d moves (win/lose=%.1f%%).
discarded %d moves (minplayed=%d).
discarded %d moves (maxply=%d).
found %d errors during parsing.
parsed %d moves (%d games).
sort.%d
ERROR!  write failed, disk probably full.
Unable to malloc() index block, aborting
merging sorted files (%d) (10K/dot)
S  <done>
ERROR!  move %d: %s is illegal (line %d)
0123456789/-.*
 (%d)
1/2-1/2
esult
Site
end-of-file reached
parsing pgn move file (10000 moves/dot)
open.vbs
Unable to malloc() sort buffer, aborting
file %s does not exist.

all strings that you can directly find in source file book.c for
crafty...
--------------------------------------------------------
reject
accept
usage:  book mask accept|reject value
mask
Buch Datei ist aktiviert!
%s/open.vbs
%s/buch.vbs
Buch Datei ist deaktiviert!
maxply [minplay] [win/lose %]
usage:  book|books create filename
create
ERROR.  unable to open sort output file
out of memory.  aborting.
unable to open sort.%d file, may be too many files open.

more strings from book.c
--------------------------------------------------------
2.05
????.??.??
Gegner
Voyager 2.05
./TB
EPD Fatal error: %s.
Switch fault detected.

seems to claim it is version 2.05.  Also has the normal "tbpath"
constant used in crafty.
--------------------------------------------------------
resign
refreq
refcom
noop
hmvc
fmvn
draw_reject
draw_offer
draw_claim
draw_accept
Black
White
fault

'noop' is a killer above.  That is a special command added a couple of
years ago before I rewrote my input to use non-buffered I/O.  Xboard and
winboard sends commands in 'threes' (move/time xxx/otim xxx) which made
me do three reads to get them.  I then had to make my custom interface
send three commands each time it needed to tell me something.  I used
'noop' as a 'dummy command' to make up the missing commands to get three
over to avoid hanging.
--------------------------------------------------------

KQQQK
KQQRK
KQQBK
KQQNK
KQQPK
KQRRK
KQRBK
KQRNK
KQRPK
KQBBK
KQBNK
KQBPK
KQNNK
KQNPK
KQPPK
KRRRK
KRRBK
KRRNK
KRRPK
KRBBK
KRBNK
KRBPK
KRNNK
KRNPK
KRPPK
KBBBK
KBBNK
KBBPK
KBNNK
KBNPK
KBPPK
KNNNK
KNNPK
KNPPK
KPPPK
KQQKQ
KQQKR
KQQKB
KQQKN
KQQKP
KQRKQ
KQRKR
KQRKB
KQRKN
KQRKP
KQBKQ
KQBKR
KQBKB
KQBKN
KQBKP
KQNKQ
KQNKR
KQNKB
KQNKN
KQNKP
KQPKQ
KQPKR
KQPKB
KQPKN
KQPKP
KRRKQ
KRRKR
KRRKB
KRRKN
KRRKP
KRBKQ
KRBKR
KRBKB
KRBKN
KRBKP
KRNKQ
KRNKR
KRNKB
KRNKN
KRNKP
KRPKQ
KRPKR
KRPKB
KRPKN
KRPKP
KBBKQ
KBBKR
KBBKB
KBBKN
KBBKP
KBNKQ
KBNKR
KBNKB
KBNKN
KBNKP
KBPKQ
KBPKR
KBPKB
KBPKN
KBPKP
KNNKQ
KNNKR
KNNKB
KNNKN
KNNKP
KNPKQ
KNPKR
KNPKB
KNPKN
KNPKP
KPPKQ
KPPKR
KPPKB
KPPKN
KPPKP
KQQK
KQRK
KQBK
KQNK
KQPK
KRRK
KRBK
KRNK
KRPK
KBBK
KBNK
KBPK
KNNK
KNPK
KPPK
KQKQ
KQKR
KQKB
KQKN
KQKP
KRKR
KRKB
KRKN
KRKP
KBKB
KBKN
KBKP
KNKN
KNKP
KPKP
.tbb
.tbw

egtb file names in Edward's code.
--------------------------------------------------------
EPDTBInitTBID
EG fault: a problem occurred during %s processing
EG fault: can't locate valid EG command
This command takes one parameter.
Can't open %s for writing
Can't open %s for reading
This command takes two parameters
Centipawn evaluation: %hd
%s can be mated in %hd move%s.
%s can mate in %hd move%s.
The position is a draw with best play.
The position score was located in a tablebase file.
%s can checkmate in one move with %s.
Position is drawn: insufficient mating material.
%s is stalemated.
%s is checkmated.
No certain evaluation is available.
This position is illegal.
This command takes no parameters.
This command is not yet implemented.
Duplex slave mode end
Duplex slave mode begin
EPDCommHandler: refcom fault
h%05hd.pml
c%05hd.pgn
No moves are available.
There is 1 move available.
There are %hd moves available.
Unknown tag name; available tag names are:
Enumeration to depth %ld totals %ld
This command takes three parameters
Press <return> for more command help
%s: %s
-------------------------------
Available EPD glue command list
   WARP: %s
PHASER: TESTINGFILE: %ld
   JANEWAY:
FEHLER!!
   WARP:
PFLC: record %ld:   cook: %s
unsol mean node frequency: %.2f Hz
unsol acs: %ld   mean unsol acs: %.2f
unsol acn: %ld   mean unsol acn: %.2f
unsol acd: %ld   mean unsol acd: %.2f
unsol: %ld   unsol percent: %.2f
solve mean node frequency: %.2f Hz
solve acs: %ld   mean solve acs: %.2f
solve acn: %ld   mean solve acn: %.2f
solve acd: %ld   mean solve acd: %.2f
solve: %ld   solve percent: %.2f
total mean node frequency: %.2f Hz
total acs: %ld   mean total acs: %.2f
total acn: %ld   mean total acn: %.2f
total acd: %ld   mean total acd: %.2f
total: %ld
EPD glue developer testing
Set PGN tag pair <tag-name> to <value>
Save PGN game to <file>
Show EPD four fields for the current position
Score benchmark EPD results from <file>
Purge EPD <opcode> from <file1> to <file2>
Locate mating cooks in result <file>
Analyze EPD data from <file1> to <file2>
Repair EPD data from <file1> to <file2>
Normalize EPD data from <file1> to <file2>
No operation
Display more help for <command>
Load EPD record from <file> <line-number>
Load PGN game from <file>
Slave to Argus at <hostname> and <portnumber>
Display EPD glue command descriptions
Enumerate to <depth> from <file1> to <file2>
Display PGN tag pair <tag-name> value
Display PGN Seven Tag Roster
Display SAN move list
Display game using PGN
Slave to Duplex using <pipefile-basename>
Slave to ICS at <hostname> and <portnumber>
Display certain score for the current position
Fix <file1> data for Bookup input <file2>
Append PGN game to <file>
epdtest
epdstpv
epdspgn
epdshow
epdscor
epdpfop
epdpflc
epdpfga
epdpfdr
epdpfdn
epdnoop
epdmore
epdlrec
epdlpgn
epdlink
epdhelp
epdenum
epddtpv
epddstr
epddsml
epddpgn
epdcomm
epdcics
epdcert
epdbfix
epdapgn

OK.. They copied all the epd stuff.  But it is Edward's code and is
public domain...  with the usual copyleft license.
--------------------------------------------------------
malloc() failed, not enough memory.
history_filename
log_filename
Nichts zum weitermachen, Sir!
lese %s/willi.log
%s/willi.log
%s/rudi.log
position
%s/janeway.lrn
Lernfunktion deaktiviert!
%s/ds9.lrn
Buchlernen abgeschaltet!
%s/voy1.lrn

filenames normally used are game.nnn, log.nnn, book.lrn, etc.  slight
changes.  But not much of a change.
--------------------------------------------------------
%s/book.lrn
clear
      %d insgesamt gelernte Stellungen
Hinzugefuegt wurden %d gelernte Stellungen!
[%d %d %d]
 %c%c
 %c
setboard
[Datum "%4d.%02d.%02d"]
,;{}
FEHLER!!!
unable to open position learning file [%s/position.bin].
setposition
%s/position.bin
unable to open position learning file [%s/position.lrn].
%s/position.lrn
(%d %d %d)
gelernte Stellung, voyager=%d  wert=%d
%s [%d %d %d]

All the above strings can be found in learn.c and init.c... (except for
the bits of German of course.  :)  )
--------------------------------------------------------
ANTICOMPUTER-Funktion implantiert

Funny.  I have a variable that says 'if playing a computer, don't
diddle around with the draw score based on time left, and so forth./
Seems they do this too?
--------------------------------------------------------
Voyager V%s (c) 1998 by G.Mueller CH
Dieser Befehl ist der Voyager unbekannt!
voyager.ini
Unbekannter Befehl!
Das ist ein unbekannter Befehl!
path
Huch, da waren wohl die Borg am Werk!!! Normal %d
bad move from hash table, ply=%d
%s
               %2i   %s%7s

My output format, exactly...
--------------------------------------------------------

[FEN "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR b KQkq - 0 1"
[SetUp "1"]
[FEN "%s"]
[SetUp "1"]
[Result "%s"]
[BlackElo "%s"]
[Black "%s"]
[WhiteElo "%s"]
[White "%s"]
[Round "%s"]
[Site "%s"]
[Event "%s"]

The above written by a 'crafty user' to set up the initial position for
oddball opening books.  The above is in option.c, verbatim.
--------------------------------------------------------

Kann die Datei zum Schreiben nicht
ffnen!
Voyager V%s
Salut das ist die Voyager V%s!
winboard
xboard
white
Suchtiefe jetzt %d.
Das geht so:tiefe <n>!
speichere
result
lade
read
Illegal!!!!
Das geht so:rueck <Zugnummer>
rueck
reset %d
remove
nopost
post
level
stufe

strings in option.c (commands) converted to German.
--------------------------------------------------------
814106
Mein Tip: %s
uhr                       zeigt Schachuhr
rueck <Zugnr.>            nimmt Zuege bis zu dieser Zugnummer retour
zuege                     Zeigt die bisher gespielten Zuege an
tip                       Voyager rechnet mit diesem Zug
zeit                      Zeitkontrolleneinstellung
stufe <Z> <M> <F>         gibt Zeitvorgaben (Zuege Minuten Fischerzuschlag)
zieh                      Voyager beginnt zu rechnen (mit Warp 10)
tiefe <n>                 feste Suchtiefe n (max=65)
unent                     bietet Remis an
Return fuer mehr
speichere <Dateiname.pgn> speichert im pgn Format ab
lade <Dateiname.pgn>      laed pgn Partie
lade                      Zuege eingeben, wie bei Nunn Test etc.
neu                       neue Partie
zuege                     zeigt die bisher gespielten Zuege an
hashb <n>                 Bauernhashtabellengroesse in MB
hash <n>                  Hashtabellengroesse in Megabyte
ende                      beendet die Voyager
remis <n>                 stellt den Remiswert ein
anti                      aktiviert die ANTICOMPUTER-Funktion
ton ein/aus               schaltet Ton ein oder aus
hilfe

Crafty "help" command in German.  Option.c was taken but some commands
were 'stripped out'.
--------------------------------------------------------
/%d/%d
produced %d moves at root
Search() no moves!  ply=%d
Search
Remis endeckt!! Tiefe=%d.
Nichts da zum Rechnen!
SearchRoot
 %s!!
 ...
%s!!

The above from SearchRoot() in module searchr.c in crafty.  Trace
output for debugging.

               %2i   %s     !!
%s] S:%d %s(%d)

The above from SearchOutput() in searchr.c also.
--------------------------------------------------------
 -Mat%.2d
  Mat%.2d
  -Mate
   Mate
 +infnty
 -infnty
%7.2f
-Mat%.2d
Mat%.2d
-Mate
Mate
+infnty
-infnty

These are how I display scores.  Mat18, -Mat04, +infinity should never
happen but does in trace output.  This is in utility.c, "DisplayEvaluation()"
function.
--------------------------------------------------------
%+.2f
play
ERROR.  comment spans over 100 lines, starting at line %d
%64s
(){}[]
setboard %s

OK.. it uses the 'setboard' command which is what crafty uses to set
a FEN position.  (module=setboard.c).
--------------------------------------------------------
BlackElo
WhiteElo
%2d  %5d %7d %6u %s
buch
%s d%d+ %s >(%s) %s <re-searching>
%s d%d+ %s %s %s
kibitz d%d+ %s >(%s) %s <re-searching>
kibitz d%d+ %s %s %s
%s d%d-> %s %s %s
kibitz d%d-> %s %s %s
%s %s
kibitz %s
%s pv:%s
kibitz pv:%s
%s d%d; %s; nps %d; time %s; cpu %d%%; p:%d
kibitz d%d; %s; nps %d; time %s; cpu %d%%; p:%d
%s mated in %d moves.
%s mate in %d moves.
kibitz mate in %d moves.
whisper
tell %d
tell %d (%s)

These are all things in "whisper.c" used to whisper/kibitz analysis
on ICC thru xboard/winboard.
--------------------------------------------------------

There are some other things that match perfectly, but I don't want to give
too many things so that this methodology won't work for the next case.  Just
leave it at 'bitmap patterns' and 'scoring arrays'.  They match exactly as
well.  This is Crafty. Yes it might have a few different eval values.  And
maybe a different search extension value.  And may use null move R=3 rather
than 2 (a one line change BTW).  But it is _not_ a "new program based on
fuzzy logic" unless you consider violating a copyright and stealing
someone else's work as "fuzzy logic"...

You are welcome to draw your own conclusions.  I'd suggest that if they
want to maintain that this is a 'new' program that they submit their source
to someone for analysis.  But that will _never_ happen, copyright or not.

IE no bionic source has ever been released, even though the copyright
certainly requires it.  No reason to think this case will be any
different, is there?

I'm seriously considering letting our university attorney have a look at
this.  It is very blatent.  And it is time for it to _stop_.   I consider
it outrageous that someone would do this.  I consider it insulting that they
do it so blatently, thinking no one is smart enough to figure it out.

They need a dose of "Bob's fuzzy logic"

I hope that wasn't too 'obtuse'.  I don't make such statements without being
pretty sure.  But here's a question for you...  do you _really_ think someone
_brand new_ could come out with a program 'based on fuzzy logic' and really
beat crafty every match?  Did it never occur to you that "something is up here,
either this is one of the brightest guys I have ever seen, or there is something
wrong here."  It would have to me, because new programs don't show up today,
and beat good programs right from the beginning.  It just doesn't happen.  Now
nor in the past.

Did they tell you they were using rotated bitmaps and that they had done this
themselves?



This page took 0 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.