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.