decoration decoration
Stories

GROKLAW
When you want to know more...
decoration
For layout only
Home
Archives
Site Map
Search
About Groklaw
Awards
Legal Research
Timelines
ApplevSamsung
ApplevSamsung p.2
ArchiveExplorer
Autozone
Bilski
Cases
Cast: Lawyers
Comes v. MS
Contracts/Documents
Courts
DRM
Gordon v MS
GPL
Grokdoc
HTML How To
IPI v RH
IV v. Google
Legal Docs
Lodsys
MS Litigations
MSvB&N
News Picks
Novell v. MS
Novell-MS Deal
ODF/OOXML
OOXML Appeals
OraclevGoogle
Patents
ProjectMonterey
Psystar
Quote Database
Red Hat v SCO
Salus Book
SCEA v Hotz
SCO Appeals
SCO Bankruptcy
SCO Financials
SCO Overview
SCO v IBM
SCO v Novell
SCO:Soup2Nuts
SCOsource
Sean Daly
Software Patents
Switch to Linux
Transcripts
Unix Books

Gear

Groklaw Gear

Click here to send an email to the editor of this weblog.


You won't find me on Facebook


Donate

Donate Paypal


No Legal Advice

The information on Groklaw is not intended to constitute legal advice. While Mark is a lawyer and he has asked other lawyers and law students to contribute articles, all of these articles are offered to help educate, not to provide specific legal advice. They are not your lawyers.

Here's Groklaw's comments policy.


What's New

STORIES
No new stories

COMMENTS last 48 hrs
No new comments


Sponsors

Hosting:
hosted by ibiblio

On servers donated to ibiblio by AMD.

Webmaster
From the Courtroom, Day 9, Patent Phase, Oracle v. Google, Jury Questions ~pj - Updated 2Xs
Thursday, May 17 2012 @ 05:00 PM EDT

The jury continues to deliberate in the patent phase of the Oracle v. Google trial. They just sent in a question, basically asking if they are allowed to consider an aspect of Dr. Terence Parr's testimony as evidence that Android does not do what the '520 patent describes, which of course they are, as Google points out. That was the point of his testimony, and it's in evidence so it's fair game to consider it.

The judge asks both sides if they want a five-minute-each opportunity to argue the point before the jury, and Oracle says no. So he just tells the jury that he can't give them guidance on fact issues other than what he's already given them. That's their job. He tells the lawyers if he says yes, because of the exact wording of their question, they'll think he's telling them to find for Google. Judges do have to be very careful not to tilt the field. Surely, however, there's a way to answer the question with a yes, without tilting things. They are for sure allowed to consider that testimony and drawing whatever conclusions they think would be proper.

I can't imagine what the jury is thinking now, but I surely do see all the appeals issues mounting and mounting. And it's very clear that once again this is a jury that is divided and struggling to reach a unanimous conclusion. Our reporter in the courtroom provides us with the details.

Here's his report:

Thu May 17 12:32:42 PDT 2012

[There's a jury question! Everyone files into the courtroom to hear it.]

Google: Good afternoon, Your Honor.

Judge: Good afternoon.

Google: Could we have a moment to read the note?

Judge: Sure.

Counsel, tell me when you're ready to discuss the note from the jury. We'll just pause until you're ready.

Google: I think we're ready, Your Honor.

Judge: So the note says: "We are attempting to determine the scope of the meaning of the term 'simulating execution of the bytecodes' in patent '520. Is the existence of an example of the Android code not functiong (punting), when formatted in a normal simulated execution setting, permitted to be taken as evidence that Android's array initialization diverges from the patented array intiialization?"

Oracle: First an observation, then two points.

There appears to be a misunderstanding in the question. They say "when formatted in a normal simulated execution setting", which doesn't make sense.

...

Now, the first point: the experiment that Dr. Parr did went to proving that the stack was not used in Android. That is legally irrelevant, as there's no requirement in the claims that the stack be used. In other claims there is such a requirement, but not in the asserted claims.

Second, the specification does speak to how the simulated execution functions when a bytecode other than those that are listed as stack array initialization bytecodes is encountered, and it's not inconsistent with simulating an array. Column 5, line 44: "any bytecodes other than those above are not recognized ... in this case, the clinit method will not be optimized".

So the specification is clear that if something is dropped in that's not a bytecode that the clinit method would normally emit, then there's an exception taken and something else happens. That's consistent with what happened in the experiment.

Google: I'm not sure why we need to get into all that. I think the simple answer is yes, you should give it the weight you think it deserves.

I mean, the question is whether this is permitted to be taken as evidence that Android's array initialization differs from the patented method. That was Dr. Parr's testimony; he thinks that it suggests that the code uses pattern matching, not simulated execution.

They can take it into account, and give it the weight they think it deserves. It's fairly straightforward.

Judge: The question is asking not a legal question, about the meaning of the instructions; it's asking about how to evaluate the evidence concerning how Android works. Specifically, they want to know if the existence of this example can be taken as evidence that the Android array initialization differs from the patented array initialization.

That's a fact question, not a legal question. They're asking us how to weigh the evidence, which is not a proper question at this stage. It's not asking about the law.

Now, you two, if you both agree, we can bring the jury out here and you each get a five-minute argument on this point. I'd let you do that, so long as you both stipulate that it's okay. But that's really what they're asking here, for some kind of supplemental argument.

So my inclination would be to ask you if you want to do a five-minute explanatinon to the jury. I'm not ordering it; if you both agree, that's fine, we'll do it. If you don't agree, we're not going to do it.

[Google lawyers confer]

Oracle: Your Honor, I think we can shortcut this. We prefer the Court give the guidance the Court was intending to give, and not give a five-minute argument on the fly.

Google: Your Honor, if you're not going to have a supplemental argument, I at least want to let them know that they should take all the evidence into account. I don't want to suggest that anything is out.

Judge: That's not what they're asking. You're putting a spin on it. They're asking whether they're permitted to take this as evidence that Android's array initialization differs from the patented method. If I say yes, that's me telling them to rule for Google. I'll tell them that the weight of the evidence, that is for them to decide, and not for the Court to give you further guidance.

Google: Could you read your proposed answer again?

Judge: [repeats his explanation that this is a question of fact, not of law, and it's for the jury to decide]

Oracle: [some sort of objection]

Judge: You object to the form of that statement?

Oracle: Not to the form, Your Honor.

Judge: So what's your objection?

Oracle: Substantive. It's that it is legally irrelevant.

Judge: Too bad. It's in the record, you didn't object to it, you don't get evidentiary objections at this point.

Oracle: I should further note, for example, that claim 1 refers to the output of a compiler, and that the manufactured example there was not the output of a compiler, so it's not relevant.

Judge: You don't want to do a five-minute argument to explain that, you just want to lard the record with something for appeal. I'm not going to allow that.

At 2:00 I have a civil calendar, but if a note comes out I'll interrupt that to deal with it. Your case gets priority.

All right, let's bring the jury out.

[jury enters]

Judge: Thank you for your note.

[reads note]

Now, I need to say that there are things I can give you further guidance on, such as if you were to ask a question specific to one of my instructions, usually -- I can't say always, but usually -- I'd try to answer it. This question, though, is asking if you can take a particular fact as evidence that Android's array initialization diverges from the patented method.

Now, I've previously told you what's evidence in this case, and what's not, I'm not going to repeat that. Here's my answer: your question is one that goes to the weight of the evidence and how to evaluate it. That is for you to decide, and not for the Court to give you further guidance at this point in time.

So, I'm sorry, but that's the best answer I can give you with respect to how you have phrased the question.

[jury leaves]

While I have you here, is there anything else?

Oracle: Timing on the JMOL opposition, I think they're currently due at 5 pm. If that suits you, we can do it, but if we had a couple hours more, we could really polish it.

Judge: I'll give you even more. How much time do you need?

Oracle: Later this evening.

Judge: How about midnight?

Oracle: That would be great.

Thu May 17 12:58:30 PDT 2012

ZDNet's Rachel King just tweeted that the jury now is asking for a read back of Dr. Mitchell's testimony:
Jury requesting transcript of a portion of Dr. Mitchell's testimony be read; concerning pattern matching versus simulated execution.
That will not clarify anything, I don't believe, since what he testified to was, to put it kindly, bizarre, according to all the techies here at Groklaw. But the jury doesn't know that. And they are not techies. What a way to decide a case.

But don't go just by my opinion. Here is his testimony. And here is Terence Parr's.

Update: Here's the rest of the day:

Thu May 17 13:48:23 PDT 2012

Oracle: While we're filling time, I'd like to talk about [something about infringer's profits].

[Brief chat with the judge that I can't quite hear, because people are still filing into the courtroom]

Judge: I have another note. "We request the transcript of a portion of Dr. Mitchell's testimony be read to us. It concerns the topic of pattern matching versus simulated execution, and occurred late on May 9 and early on May 10."

I think you should be able to isolate the relevant parts for the jury and read them, if you guys can agree on it. Let me know when that's done.

Google: We'll try to do that, Your Honor.

Judge: How long will it take you?

Oracle: Maybe ten minutes.

Judge: That short?

Google: I think maybe it'll take a little longer.

Judge: Let's say 2:20. Remember, you have to reach an exact agreement.

[The lawyers file out to confer. In the meantime, the judge starts handling some of his other cases, which is interesting to watch: he still has the exact same no-nonsense style, and he's clearly been paying attention to all these other cases too.

After 20 minutes or so, the lawyers are called back to deal with a new note.]

Judge: Note from a juror: "I'm sick. Can I get a sick day without being discharged? Sorry."

Google: Your Honor, we conferred briefly and think it makes sense to dismiss the jury for the day and hope that the juror feels better.

Judge: Well, it's possible, that's one interpretation of this, but I think she means tomorrow.

Google: Well, even that could be okay. She's already invested 10 or 12 hours deliberating.

Judge: I think we can reach a verdict by tomorrow, and we don't need eleven, we only need six. And we don't have any guarantees she'll be well by Monday.

Google: Could we at least find out what she wants? It's possible she just wants the rest of the day off.

[The juror is brought in. She clearly has a cold. It turns out she does want tomorrow off, and thinks she'll be well by Monday. She sounds like she really doesn't want to get dismissed, but realizes that it'll be hard to hold up the whole trial.]

Judge: Are you in a good enough mental state to deliberate? Juror: I think so. I mean, I'm coughing, and sneezing, and I could use a nap, but I can concentrate if I need to. I don't want to get everyone else sick, though.

Judge: What are the odds that if you took the rest of the day off, that you'd bounce back for tomorrow morning?

Juror: I think if I had the day of rest and then the weekend, I'd be fine.

Judge: But that means we give up the chance to get a verdict this week. If you think there are good odds you'd be able to soldier on tomorrow, that's one thing. If you're asking for the whole weekend, I'm not going to say no, but it's harder. I'd have to check with the lawyers.

[juror leaves]

Judge: Any questions that the lawyers have?

Oracle and Google: No, Your Honor.

Judge: I have an idea.

She doesn't sound good.

Here's what I suggest we do. Bring in the jury, take the rest of the day off, and tell her if she's too sick to go forward tomorrow, she can call in and we'll discharge her. Agreed?

Google and Oracle: Agreed.

[Jury returns]

Judge: By now you know Juror X isn't feeling good. Hanging out at the hospital too much? [laughter] You've picked up somebody's cold.

Here's what we're going to do. We're going to take the rest of the day off, and keep our fingers crossed that she feels better tomorrow. If not, there's a very high likelihood that she'll be discharged and we'll go on without her. If she is, though, that's great.

If we take tomorrow off, then there's a possible inconvenience to the ten of you, since you might otherwise be able to reach a verdict tomorrow. Of course, if you can't reach a verdict tomorrow, that's fine, we'll go on to next week.

As for the other ten of you -- well, all of you -- once you leave here today, don't deliberate any more, just go home, get a fresh start, and that's the best I think we can do. Any questions about that plan? Anything the lawyers want me to add or subtract?

Google and Oracle: No, Your Honor.

Judge: Okay, we're going to take this extra time to find those passages the lawyers are going to read back to you. It takes a little time -- it's not as easy as just punching it up on the screen, the lawyers need to work on it. We should be able to have it ready for you tomorrow morning, though.

[Jury leaves]

Judge: Okay, how's the transcript going?

Google: We should be ready soon.

Should we just show up at 7:30 tomorrow?

Judge: I think that's good. 7:30 tomorrow.

Thu May 17 14:29:45 PDT 2012

Update: We now have the transcript [PDF] of the day.


  


From the Courtroom, Day 9, Patent Phase, Oracle v. Google, Jury Questions ~pj - Updated 2Xs | 89 comments | Create New Account
Comments belong to whoever posts them. Please notify us of inappropriate comments.
Corrections thread
Authored by: nsomos on Thursday, May 17 2012 @ 05:08 PM EDT
Please post corrections here.
e.g. Misteak -> Mistake

[ Reply to This | # ]

How does reading back testimony actually work?
Authored by: Anonymous on Thursday, May 17 2012 @ 05:10 PM EDT
How does reading back testimony actually work?
I mean can Oracle just pick and choose what bit they want read back, or can
Google also choose rebuttal testimony to be read back? Or do they present
different options and the judge decides?

[ Reply to This | # ]

Off Topic Here
Authored by: SilverWave on Thursday, May 17 2012 @ 05:15 PM EDT
:-)

---
RMS: The 4 Freedoms
0 run the program for any purpose
1 study the source code and change it
2 make copies and distribute them
3 publish modified versions

[ Reply to This | # ]

News Picks Here
Authored by: SilverWave on Thursday, May 17 2012 @ 05:16 PM EDT
:-D

---
RMS: The 4 Freedoms
0 run the program for any purpose
1 study the source code and change it
2 make copies and distribute them
3 publish modified versions

[ Reply to This | # ]

Tweets googlevoracle
Authored by: SilverWave on Thursday, May 17 2012 @ 05:18 PM EDT
https://twitter.com/#!/tqft 9999/googlevoracle

---
RMS: The 4 Freedoms
0 run the program for any purpose
1 study the source code and change it
2 make copies and distribute them
3 publish modified versions

[ Reply to This | # ]

Comes Stuff Here
Authored by: SilverWave on Thursday, May 17 2012 @ 05:21 PM EDT
o_0

---
RMS: The 4 Freedoms
0 run the program for any purpose
1 study the source code and change it
2 make copies and distribute them
3 publish modified versions

[ Reply to This | # ]

Dr. Mitchell's Testimony
Authored by: Chromatix on Thursday, May 17 2012 @ 05:35 PM EDT

I might be getting a little optimistic here, but this is what the jury could be thinking at this point:

Firstly, they're confused. They got a lot of conflicting testimony, of which (as we know) much was *designed* to confuse them, but at least they *know* they're confused.

So now they're trying to sort out the confusion by eliminating witnesses that they can show are untrustworthy. If, after eliminating those, most of the evidence is consistent and clear, they'll be in a much better position to make a decision.

They've selected Dr. Mitchell as potentially untrustworthy, and want to get the readback as part of that evaluation. Don't ask me why they need a readback for this - surely they have the transcripts in front of them?

[ Reply to This | # ]

"permitted to be taken as evidence"
Authored by: bugstomper on Thursday, May 17 2012 @ 06:32 PM EDT
Reading over the question and the answer I think that Judge Alsup did give them
something they can work with.

They asked if something is "permitted to be taken as evidence". He
answered, "I've previously told you what's evidence in this case, and
what's not, I'm not going to repeat that." That tells them to review their
instructions which will say that expert testimony is part of the evidence, and
it is up to them to weigh the credibility of the expert testimony as they weigh
all of the evidence and witness testimony.

He then says "your question is one that goes to the weight of the evidence
and how to evaluate it. That is for you to decide." Combined with the first
part it tells them that yes, it is part of the evidence, and like all the
evidence it is up to them to decide who and what to believe.

What they asked is if they could consider what Parr said about how he
demonstrated that the stack code was not run as evidence. They were told that
they could consider it and it is up to them to consider it and decide about it.
Now they are asking for Mitchell's testimony which disagrees with Parr. That
shows that they are considering the dueling expert testimony. That's what they
should be doing.

[ Reply to This | # ]

Reporter appreciation thread - Who is this amazing reporter?
Authored by: bugstomper on Thursday, May 17 2012 @ 07:01 PM EDT
PJ, I know that having a nym would not really identify the reporter, but can we
have one by which we can refer to her or him when expressing appreciation for
this truly amazing job of on the fly transcription? Is this person an off-duty
court reporter?

[ Reply to This | # ]

Shame the one dumb guy won't disqualify himself.
Authored by: BitOBear on Thursday, May 17 2012 @ 08:13 PM EDT
Imagining the deliberations, I suspect that there is one guy on the jury who
just doesn't "get" his job.

The jury seems to be trying to find a verdicts that make -all- the testimony
true. This is a typical scenario where someone is trying to be an intellectual
peace maker.

If you have ever been in an argument with someone who doesn't understand that
all citations and recitations of alleged fact are not -equally- true, then you
know the exact experience I suspect is bogging down this jury.

If someone throws in a "bad fact" such completionists can deadlock
-themselves- let alone a quorum.

Think "twelve angry men", but more passive aggressive. /joke.

[ Reply to This | # ]

Parr for the case
Authored by: Ian Al on Friday, May 18 2012 @ 06:45 AM EDT
I'm glad I reviewed Mr. Parr's testimony. It helped me spot this bit of nonsense from Oracle.
Now, the first point: the experiment that Dr. Parr did went to proving that the stack was not used in Android. That is legally irrelevant, as there's no requirement in the claims that the stack be used. In other claims there is such a requirement, but not in the asserted claims.
What Mr. Parr did was to explain how dex (I think that is the pronunciation of dx) uses simulated execution, as described extensively in its comments. Whenever dx does simulated execution it makes extensive use of stack manipulation. Whenever it stops using simulation, it stops manipulating the stack. This is nothing to do with patent claims. It is to do with how dx works.

You need to see quite a lot of Mr. Parr's testimony to answer the juries question for yourself.
"We are attempting to determine the scope of the meaning of the term 'simulating execution of the bytecodes' in patent '520. Is the existence of an example of the Android code not functiong (punting), when formatted in a normal simulated execution setting, permitted to be taken as evidence that Android's array initialization diverges from the patented array intiialization?"
Here is a lot of what Mr. Parr said, including the reference to 'punt'.
Mr. Parr: I understand "execution" to mean running live on the JVM. Simulating execution is in the preloader -- it's like a dress rehearsal versus a live show. The goal is to simulate these bytecodes to determine the static initialization of the array.

Google: What's the core requirement for simulating execution on a stack machine?

Mr. Parr: Well, you need to manipulate the stack -- pushing, popping, etc.

Google: Is this described in the patent?

Mr. Parr: It does not say stack manipulation.

[Shows how the example code in the patent is operating on a stack]

"Object stack[] = new Object[stackSize]; // create stack for play execution" etc...

Google: Were you in court for Dr. Mitchell's testimony on infringement?

Mr. Parr: Yes.

Google: Do you agree with his testimony?

Mr. Parr: No.

Google: Why not?

Mr. Parr: Because dexopt doesn't use simulated execution for the purpose of determining static initialization of the array.

Google: How did you determine that?

Mr. Parr: Spent a long time looking at the dex source, running tests, etc.

Google: What's the purpose of the Android dex tool?

Mr. Parr: It takes the .class files emitted by the Java compiler, and translates them to .dex files.

The Java Virtual Machine and the Dalvik VM have completely different instruction sets, so a translation has to occur... That's what dex does. It translates Java bytecodes into Android bytecodes, so Android can execute them.

[Discussion about how dex uses simulated execution, as described extensively in its comments.]

Google: So you'd agree that the Simulator class does know how to simulate bytecodes?

Mr. Parr: Yes.

Google: So why doesn't it infringe the '520 patent?

Mr. Parr: That's because for the very specific purpose of identifying the static initialization of the array, it does something different -- it uses pattern matching...

Mr. Parr: What I identified was the specific part of the program, dex, that identified the static initialization of the array. It's in parseNewarray... there's a comment: "Try to match the array initialization idiom. For example, if the subsequent code is initializing an int array, we are expecting the following pattern repeatedly" -- and then you see the pattern we saw earlier, for how to initialize an array. It appeared to me to be a classic example of a pattern matcher.

Google: How do you know?

Mr. Parr: Well, I've been building parsers for 30 years. See line 965, it defines a variable called "punt" -- it's looking for something, if it doesn't find it, it fails. It's a classic example of pattern recognition.

Google: Is it manipulating the stack at all here?

Mr. Parr: No, I didn't see any stack manipulation.

Google: What experiments did you use to test your hypothesis that this was using pattern matching?

Mr. Parr: Well, first I did a simple test to see that there were no stack manipulations in the static array initialization. I put print statements in the stack manipulation instructions (push, pop), like an alarm, so they'd trigger if there was any stack manipulation. I didn't see any.

[Demonstrative, titled "parseNewarray does not use the stack", showing the output of running the program with his debug prints added]

During the normal operation of the simulated execution, we see stack manipulation. But as we enter the parseNewarray method, what I observed is the stack alarms went silent until the parseNewarray method had exited. But once we returned from parseNewarray, we again got stack manipulations.

Since there are no stack manipulations, it can't be using simulated execution to identify these initialization.

Google: What was the second experiment you performed?

Mr. Parr: Well, this one's a little trickier, but useful. If it were using pattern matching, then if the pattern of initializations were altered, the pattern would fail to match. But if it were using simulated execution, then a minor change wouldn't affect it and it would still work...

Mr. Parr: First, I ran dexopt on this sequence, generated by the compiler. It does indeed create an instruction to initialize this array, all in one go. So the default output of the compiler is recognized by the dex tool as static initialization.

So, how can I change this sequence of instructions without modifying the end result? Remember a new array is already initialized to zero. I'm just going to add an extra instruction at the beginning to set it to zero again. This is a tweak that doesn't affect the code; if it executes, it wouldn't change the end array. However, if the dex tool is a pattern matcher, it'll fail to recognize this pattern.

I ran the dex tool on this modified bytecode stream, and the dex tool failed to generate an instruction to initialize these elements in one go...

You can see these extra instructions don't change anything, since that zero is already there.

Here are the Dalvik bytecode instructions created by the dex tool in response to the original bytecode sequence: it uses fill-array-data.

But with the modified code, there's no fill-array-data to initialize the array in one go. You see the normal conversion of Java bytecodes to Dalvik instructions (new-array, aput, etc.).

Google: If the dex tool were in fact simulating the execution of the Java bytecode, what would have resulted?

Mr. Parr: If it were simulating, it wouldn't care about the extra instruction.
What he has done is identified that arrays are statically initialised by dx using parseNewarray. During its operation it does not manipulate the stack. His demonstration shows that the stack is not manipulated during the execution of parseNewarray and that this is shown by monitoring for the break in stack manipulation which is used by dx for simulated execution.

His second experiment was to add an extra single instruction at the beginning to set the array to zero. Running dx on the modified code fails to generate an additional single instruction to initialise the array. If simulation had been used, dx would have ignored the existence of that first single step initialisation instruction, spotted the subsequent instruction group initialising the array and generated an additional replacement single instruction.

So, the answer to the jury question is 'yes' if you believe that Mr. Parr has demonstrated that dx uses stack manipulation when simulating execution.

---
Regards
Ian Al
Software Patents: It's the disclosed functions in the patent, stupid!

[ Reply to This | # ]

Groklaw © Copyright 2003-2013 Pamela Jones.
All trademarks and copyrights on this page are owned by their respective owners.
Comments are owned by the individual posters.

PJ's articles are licensed under a Creative Commons License. ( Details )