Bob - You have no clue about "semantic equivalence."
Reminds of a previous discussion, the backward pawn evaluation debate.
Here:
4088be: 4b 85 bc d6 20 2b 02 test QWORD PTR [r14+r10*8+0x22b20],rdi
4088c5: 00
4088c6: 75 40 jne 0x408908
4088c8: 4b 85 9c d6 20 2f 02 test QWORD PTR [r14+r10*8+0x22f20],rbx
4088cf: 00
4088d0: 75 14 jne 0x4088e6
4088d2: 4b 85 9c d6 20 33 02 test QWORD PTR [r14+r10*8+0x23320],rbx
4088d9: 00
4088da: 74 2c je 0x408908
4088dc: 4b 85 bc d6 40 9f 24 test QWORD PTR [r14+r10*8+0x249f40],rdi
4088e3: 00
4088e4: 75 22 jne 0x408908
4088e6: 84 c0 test al,al
4088e8: 74 10 je 0x4088fa
4088ea: 41 81 e9 68 03 00 00 sub r9d,0x368
4088f1: 41 81 e8 29 01 00 00 sub r8d,0x129
4088f8: eb 0e jmp 0x408908
4088fa: 41 81 e9 96 01 00 00 sub r9d,0x196
408901: 41 81 e8 29 01 00 00 sub r8d,0x129
According to reversed enginered ASM this supposed to mean semantical equilavant (SE) with Fruit according to Zach.
This yellow is the MG/EG interpolation evaluation technique as used first in Phalanx (2003), Fruit 1.0 (2004), Rybka (2005), Crafty 22.2 (2008) and therefore CAN NOT be used as evidence for SE.
Agree?
Yes or no please.
So what is left is that you just have 4 comparisons (4 x TEST) to proof this is Rybka's backward pawn evaluation.
That is VIG thinking to the EXTREME.
The attack side is aware of the abstraction-filtration-comparison procedure for comparison of two code sections. They are aware at the filtration stage of removing from consideration (filtering) PD code, code that has only one way of being written etc, for it obviously not fair to include such code before making comparisons. So far so good.
But, when they moved up a level from code comparison (because it didn't work for them to prove copying) to semantic comparison, they needed also to uprate their "filtration tests" at the level. They did not do a filtration stage at all. Hence they left in, and claimed comparison rights on code it was not FAIR to compare.
What you are basically saying is this: it is not fair to COMPARE code between two programs, semantically or otherwise, when that code (or semantics) is in general use elsewhere and by others.
Or, in particular, when MG/EC interpolation is in use by Phalanx, Fruit, Rybka, Crafty etc. then it is not FAIR to pick out the usage by Fruit and Rybka and claim COPYING. For starters, they could both have copied it from Phalanx and not each other. Or independently come up with the idea. Or read about somewhere else and implemented it. Are there indeed more than one way to implement the idea? Possibly not, or just one obvious way.
In general, the needed a FILTRATION test at SE stage, which asked, is this code is general or widespread use? And, which asked, once one has the idea, is there actually more than one obvious way to implement it. If either one of those questions flags up, then the semantic or code section has to be FILTERED out before any comparison. This is what they failed to do. Systemic error invaliding ALL SE comparisons.
Your talent to put the complicated into the simple is indisputable.
You should start a web-page yourself
Crystallising the general from the particular just requires a spark, then a description of the crystalisation (usually a word picture) that any lay who wants can understand. Suits my idle temperament, or, as my old maths teacher used to say, "the best mathematician, Whittington, is a lazy mathematician", very useful lesson aged 10.
http://www.youtube.com/watch?v=vKWfCN6o9As&feature=related
http://www.top-5000.nl/se.htm
In fact, in the backward pawn code, the panel found a difference between Fruit 2.1 and Rybka. If you read this report:
http://icga.wikispaces.com/file/view/EVAL_COMP.pdf
you will find:
"Fruit 2.1 checks first that no adjacent-file pawn is behind or equal to the rank
of this one, and then checks to see if by advancing in one move this pawn can
meet up with a friendly one, ignoring this latter condition when an opponent's
pawn attacks the advance square. A penalty is then given based upon whether
the le is half-open or not. Rybka 1.0 Beta and Rybka 2.3.2a do the same
first check, and then see if by advancing one or two squares (not necessarily in
one move) whether a pawn can meet a friendly one, again without an enemy
pawn intervening by an attack (a minor difference is that Fruit 2.1 checks that
a friendly pawn, necessarily doubled, does not block the \backward" pawn's
advance). A penalty is then given based upon whether the file is half-open or
not."
And you can see further in the report that the overlap between Fruit and Rybka for backward pawn scoring is scored as merely 0.7, showing a strong but not nearly perfect overlap. The backward pawn scoring was clearly marked as being not a perfect match, and fully acknowledged in the report.
Have you read the report? It really does give credit for the differences. But even with the difference the evaluation overlap is very high. 74% in fact.
I suggest you go through the report, and cite any inaccuracies. IN fact this is encouraged and why we have opened up all the documents for review.
WRONG! This 0.7 weighting corresponds to a 70% match in the final analysis.
If all the 30 carefully selected features were given a value of 0.7, the result would have been 70%. Get it? Probably not.
This means that this statement:
And you can see further in the report that the overlap between Fruit and Rybka for backward pawn scoring is scored as merely 0.7, showing a strong but not nearly perfect overlap. The backward pawn scoring was clearly marked as being not a perfect match, and fully acknowledged in the report.
is WRONG. In the context of the report, the 0.7 value indicates a very high match. It's too bad you are too much of a moron to understand this type of simple construct.
BTW ALL of the 30 values were not given a 0.7 match coefficient. I suppose this must be a 30th degree polynomial in your math world, since you don't apparently understand that terminology very well but use it often?
You don't know shit. First, please be precise. It was 74.4%. This is a bogus number having meaning only to severely deranged persons, such as yourself.
BTW ALL of the 30 values were not given a 0.7 match coefficient.
This is another idiotic Hyatt misinterpretation. I referred to the average value of 74.4%.
Please, just stop with the offensive language and personal insults.
Being a lurker I've been enjoying your input in the past, but things are getting out of control.
I very much respect your opinion, but please note that you discredit yourself and weaken your own arguments with such actions and most importantly make it much harder to listen to other members of the "pro Rybka camp", who articulate their opinion in proper fashion like Rebel and Trotsky.
Thank you for understanding.
P.S.: I recommend the moderators to filter the posts (like in the clonewar days) and do not remove them.
Do you even REMEMBER what you write???
That was a quote from you a few posts back.
The final analysis said there was a 74.4% overlap. NOT 70%. And you want to chide ME for being careless? :)
Individual features might get a 100% (or 70% or whatever) overlap. In the final analysis, there was a 74.4% overlap between Fruit and Rybka. No other programs were anywhere near that close to fruit.
WRONG! This 0.7 weighting corresponds to a 70% match in the final analysis.
There were thirty eval features used in the comparison. This was one of them. It's weight in the comparison was 0.7 which corresponds to 70.0% in its contribution to the final value of 74.4%. This is correctly stated, and would be easily understood if you weren't such a moron.
And you want to chide ME for being careless? :)
I don't chide you for being careless. I chide you for being a pompous ass.
Individual features might get a 100% (or 70% or whatever) overlap. In the final analysis, there was a 74.4% overlap between Fruit and Rybka. No other programs were anywhere near that close to fruit.
Picking out non-representative engines for comparison, followed by picking out arbitrary features, then giving them admittedly arbitrary values, and then computing overlap to three significant digits is called lying with statistics. If someone less biased had done the work, the values would have been much lower. If Vas had done the comparison, the values would have been much, much lower. Once again, this is only evidence of extreme bias on your investigative team's part.
> I do not see the opening/endgame evaluation being a strong piece of evidence against Rybka.
Just to be clear, is the MG/EG interpolation stuff evidence for copying or not ?
You missed the second question, how can 4 continues compare instructions proof that piece of code being the backward pawn evaluation ?
Guesswork ?
Please don't tell me to look in the documents for an answer, I almost know them by head.
That's humiliating every time you do.
Ok for Hyatt, not for you, if you know what I mean.
If you don't know how to do this, just say so and move on...
You are just one dishonest piece of shit.
> One has to look at the code. I've told you how.
But we are not in your class right now, neither am I one of your students.
Let's compare Rybka ASM with Rebel ASM or any other engine for the matter:
http://www.top-5000.nl/se.htm
That page is no better than the rest of your pages on this topic. Filled with false/incorrect assumptions and concepts.
Just to be clear, is the MG/EG interpolation stuff evidence for copying or not ?
One can STILL copy Fruit's eval verbatim, then simply delete the EG scoring code and then scale at each point where a specific EG or MG term is added, and it would STILL be a copy.
Otherwise we suddenly change the discussion to "one can't use ideas developed by others." Which has never been the intent. How long have you allowed search time overflow if the score drops on the first move of a new iteration? That is a blitz/cray blitz idea. First discussed in "Using Time Wisely" in the JICCA. Everybody uses it today. Because using the "idea" is perfectly acceptable.
Bob - No.
Thank you.
I like clear answers.
http://www.top-5000.nl/se.htm
So when we examine the Rybka code on the above page the yellow ASM instruction do not count as SE evidence.
Agree also ?
The "methodology" used is what is important here. Just because two programs repeatedly update two score variables does not mean they copied each other. If they update them in the same way, with the same comparisons and methodology, then they are likely copies. One does not just discount a few instructions here and there. One looks at the entire "picture."
> No. What counts is semantic equivalence of the ENTIRE block of code.
NO NO NO.
Because Crafty 22.2 and on the same SE is in the Crafty executable.
Common used chess idea's can not be counted as SE evidence.
What you have in the example I listed is 4 comparisons and the values added to score.
THAT is why I keep saying you do not understand what semantic equivalence is all about. "ideas" do not get mentioned in that context.
In that example, we GAVE 4 comparisons. You appear to ignore them since they are not highlighted. Yet those are the CRITICAL parts of the semantic equivalence issue, because those tests identify what, exactly, is being examined. What, exactly is the order. The yellow part IS important, because that shows what is done IF those tests are true. Hence, the entire block is examined.
> You missed the second question, how can 4 continues compare instructions proof that piece of code being the backward pawn evaluation ?
Wow, do you understand reverse engineering at all? Have you considered looking at the memory locations of the bitboard tables, and looking at what parts of the board representation are loaded into which registers? That's what I did. The eg/mg stuff was very much incidental while reverse engineering, there's just two adds instead of one. That is pretty irrelevant when trying to determine the semantics of some code...
That's no proof for code theft.
Especially not when every chess executable share common (non-copyrightable) chess knowledge idea's.
Such as backward pawn evaluation in this specific case.
The MG/EG interpolation is an idea. What is important is the WAY the tests are done. Back up one step so that the two EG/MG scores combine into one line, since SEVERAL programs use this approach. Now what do you see? You do NOT focus on 4-5 lines of code, you focus on a block of code that does something useful. For example, the trapped bishop code you posted. Do Crafty and Fruit do the SAME thing in terms of what they check? And we can even factor out the actual "bonuses" since anyone can change a single constant, agreed?
So, Crafty checks a bishop on a7 with a pawn on b6, or a bishop on b8 with a pawn on c7, duplicated for the other corner on the same side of the board. And then duplicated for the other side of the board at a2/h2. For any condition that is true, I add a penalty.
Fruit checks for a bishop on a7 and a pawn on b6, or a bishop on b8 with a pawn on c7 (ditto for other 3 corners.) If any one is true, fruit adds a penalty. Then fruit checks for a bishop at a6, and a pawn at b5, the other 3 corners as well, and if any condition is true, it adds 1/2 the penalty it added for the a7/b8 case.
Now does that REALLY appear to be semantically equivalent? If you use the SAME penalty in both programs, you won't get the same score for all positions since Crafty doesn't check the a3/a6/h3/h6 squares at all, nor does it add in any 1/2 penalty for those. Why is that so difficult to understand. You want to take 3-4 lines of code and say "Hey, a match." (which might well show that Fabien looked at Crafty since Crafty did things Fabien did, at least a couple of years prior to fruit existing. We took individual pieces and features and compared them. Not just cherry-picking 3-4 lines, but taking the ENTIRE block of code from each. Often they were the same. Occasionally there was something different. The more such blocks that match, the more likely code was copied and translated to bitboard (or just outright copied in some places that did not reference board structures at all.
As I said, your concept of "semantic equivalence" is flawed. One doesn't apply it to a line here and a line there. One applies it to a complete function, or a complete block of code, and too many matches are revealing. Also, your SE is flawed because that "test instruction" is the wrong place to start. One has to back up to see what is in al that is being tested. If one is testing for a passed pawn, and one is testing for an outpost knight, then of course they are not "semantically equivalent". SE analysis has to work within context, not just a half-dozen asm instructions by themselves with the "input" totally missing...
Your "concept" here is wrong.
To be expected.
Suggestion, since SE is the CORE of the IGCA defence shall we take the issue as addressed to an independent ASM expert for a binding verdict? Does not have to be a chess programmer, just an expert in ASM.
As far as your "link" it is YOUR concept that is wrong, not mine/ours. One does not apply SE to tiny snippets of code. That reveals nothing. One applies SE to an entire block of code, or even a complete function. An example would be "EvaluateWinner" in Crafty 19.x and Rybka 1.6.1. Complete function, over 100 lines of C, perfect match to the asm in Rybka 1.6.1. To compare semantics, you have to compare the block of code. you want to eliminate that which is being compared, and claim "hey, this test al, al is followed by a jz in BOTH programs, so they are SE here." You omit an important semantic detail, that is, what is in al at that point? What does it represent? What operations were done to create that value? You can't overlook ANY of those questions. Yet you are. Which simply implies you do not understand the concept...
So it doesn't have to be a chess programmer, but it does have to be an asm AND compiler expert. A good one would be Eugene Nalimov. Not involved in the discussion or panel at all. You won't find a better asm expert... And he knows a "little" about compiler optimizations as well. I'll let you research why that is...
> Sure, if he is really an asm expert. He also has to know something about compilers to understand compiler optimizations such as constantant folding, common sub-expression elimination and such.
Excellent.
Suggested Model
1. I suggest 3 independent ASM experts not related to chess programming as they might have been influenced by case itself. 3 experts who can judge SE.
2. VIG camp - Mark W, Zach, you
3. VII camp - Chris, Ed and perhaps someone else
4. Both VII and VIG present their case.
5. The experts will ask questions, answers are given until they are satisfied.
6. The experts after deliberation will give a verdict.
7. The verdict is binding to the parties involved.
Meaning good ICGA-SE job I will shut up, bad ICGA-SE job the ICGA declares the Rybka verdict null and void.
Is the ICGA afraid to have a (this time) independent jury to decide the case ?
> Is the ICGA afraid to have a (this rime) independent jury to decide the case ?
Of course they are afraid, they are not even remotely interested in receiving an appeal or re-opening the case. They know if they do their case will disintegrate before their eyes.
> Meaning good ICGA-SE job I will shut up, bad ICGA-SE job the ICGA declares the Rybka verdict null and void.
What ICGA? I don't think that the ICGA in its present form exists as much of an organization that is at any level higher than that of a high school club. I think that a better route would be to somehow form an entirely new organization, one not polluted by the recent problems of the ICGA and the CSVN, and make that organization's decision bounded by the result of the scheme that you propose. Obviously, David Levy would not be allowed to have anything to do with such an organization, as he's just so out-of-whack that his opinions or decisions, whether one way or the other, have absolutely no importance for computer chess as a whole any longer.
Is THAT the kind of rule 2 you think fits today? Not me.
In this thread, how about drafting a proposed rule 2 that you think meets the criterion you just cited. Then we can discuss to see what unexpected/unwanted things it introduces...
THE WILL TO CHANGE.
That is what I thought. The classic "what you are doing is bad, but I don't have any suggestion to make it better." That is REALLY useful.. And is REALLY going to make a big difference..
They discard you. As happened at Tilburg the other week.
The proof of that is in our previous talks on the issue.
Do a self-test nevertheless, you will NEVER allow under any condition Houdini to play in an ICGA tournament.
Like me you would resign

Correct ?
Powered by mwForum 2.27.4 © 1999-2012 Markus Wichitill