|
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.
|
|
Authored by: nsomos on Thursday, May 17 2012 @ 05:08 PM EDT |
Please post corrections here.
e.g. Misteak -> Mistake
[ Reply to This | # ]
|
|
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 | # ]
|
|
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 | # ]
|
|
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 | # ]
|
|
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 | # ]
|
- Juror sick... - Authored by: Anonymous on Thursday, May 17 2012 @ 05:21 PM EDT
- Doesn't want to be discharged... - Authored by: Anonymous on Thursday, May 17 2012 @ 05:22 PM EDT
- Sick juror is actually a nurse... - Authored by: Anonymous on Thursday, May 17 2012 @ 05:24 PM EDT
- Alsup's plan... - Authored by: Anonymous on Thursday, May 17 2012 @ 05:25 PM EDT
- Waiting to hear result of plan... - Authored by: Anonymous on Thursday, May 17 2012 @ 05:27 PM EDT
- Jury heading home - no transcript reading... - Authored by: Anonymous on Thursday, May 17 2012 @ 05:28 PM EDT
- Alsup: "Wash your hands like crazy" - Authored by: Anonymous on Thursday, May 17 2012 @ 05:32 PM EDT
- If sick juror not well tomorrow and doesn't come in, she will be discharged... - Authored by: Anonymous on Thursday, May 17 2012 @ 05:32 PM EDT
- Tweets - Authored by: feldegast on Thursday, May 17 2012 @ 06:20 PM EDT
|
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 | # ]
|
|
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 | # ]
|
|
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 | # ]
|
|
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 | # ]
|
|
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 | # ]
|
|
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 | # ]
|
|
|
|
|