>> Jeannette Wing: So it's my great pleasure to... to read his short biographical sketch. He is the George...

advertisement
>> Jeannette Wing: So it's my great pleasure to introduce to you Moshe Vardi. I'm going
to read his short biographical sketch. He is the George Distinguished Service professor
in Computational Engineering and the director of the Ken Kennedy Institute for
Information Technology at Rice University. He is the co-recipient of three IBM
Outstanding Innovation Awards, the ACM SIGACT Godel Prize, the ACM Kanellakis
Award, the ACM SIGMOD Codd Award, the Blaise Pascal Medal, the IEEE Computer
Society Good Award, the EATCS Distinguished Achievement Award, and the
Southeastern University's Research Association's Distinguished Scientist Award. He is
the author and co-author of over 400 papers as well as 2 books reasoning about
knowledge and finite model theory and its applications. He is a fellow of ACM, AAAI,
AAAS and IEEE. He is a member of the US National Academy of Engineering, the
American Academy of Arts and Sciences, the European Academy of Science and
Academia Europea. He holds honorary doctorates from the Saarland University in
Germany and Orleans in France. And, as everyone knows he is the editor in chief of the
CACM.
So first of all I want to say that he is obviously a very distinguished scholar and
academic and so on. But even with all of these service activities, what is impresses me
so much about Moshe, he is still so active in his research. I am so envious of this
because, for instance, I was on the LIX Program Committee this year and I saw all these
submissions by Moshe Vardi. And these are deep papers. And then, when I was
preparing my [inaudible] keynote I actually had to cite so many of Moshe's recent papers
because of his continued contributions to logic and semantics of programming
languages. So I'm really impressed by Moshe on his ability to keep up with research
despite these enormous service contributions to the field.
And then, I just want to emphasize he has a little blurb he is the editor and chief of
CACM. I think that the young people in the audience have no idea of what that really
means. Because even before I was a graduate student, CACM was the premier journal
in ACM. Everyone -- I mean all of the really famous seminal papers were published
CACM. And then, there was this period of time [Laughter]...
>> Moshe Vardi: The dark ages.
>> Jeannette Wing: I think it was the Lipton [inaudible] paper actually that started it.
[Laughter] People actually stopped their membership to ACM because they thought,
"Why get CACM?" It wasn't worth reading. And Moshe -- I really attribute -- singlehandedly turned that journal around, turned the prestige of CACM around so now
everyone looks forward to their monthly issue of CACM. So we really owe Moshe that.
[Applause]
But today he is going to talk to us about logic.
>> Moshe Vardi: Thank you for this almost embarrassing introduction. [Audience
laughter] It reminds of a story about [inaudible] who submitted a paper and each one has
a footnote next to his name. The first one wrote the footnote, "ATT Fellow." There was a
fellowship from ATT. And the second had a footnote that said, "Hertz Fellow," because
he has a Hertz Fellowship. And the third one wrote, "A jolly good fellow."
[Audience laughter]
>> Jeannette Wing: I'll have to remember that for next time.
>> Moshe Vardi: And Moshe Vardi single-handedly together with about 100 other
people revamped CACM and one of them was Jeannette, of course. So I want to talk
about the logic revolution, the logical revolution. And I'll try to maybe summarize this first
on one slide. Okay? During the past fifty years there has been extensive, continuous and
growing interaction between logic and computer science. In many respects, logic
provides computer science with both a unifying foundational framework and a tool for
modeling computational systems. In fact, logic has been called "the calculus of computer
science." The argument is that logic plays a fundamental role in computer science,
similar to that played by calculus in the physical sciences and traditional engineering
disciplines. Indeed, logic plays an important role in the area of computer science as
disparate as machine architecture, computer-aided design, programming languages,
databases, AI, algorithms and computability and complexity.
This is really the summary of [inaudible] say in the next hour. This is in fact somewhat
surprising, that there would be such a connection. Why should there be a connection
between an obscure, old intellectual discipline going back 2,500 years and a very young
intellectual discipline? Martin Davis in a 1988 paper where he wrote about this subject
wrote, "When I was a student, even the topologists regarded mathematical logicians as
living in outer space. Today the connections between logic and computers are a matter
of engineering practice at every level of computer organization." And this was in 1988.
And partly what I would try to answer in this talk is why on earth have these connections
been successful?
But partly we'll have to go back to explain where logic comes from and where modern
logic, or mathematical logic comes from. And in some sense you can say that this goes
back to the late nineteenth century when people started to try to formally reflect on the
methodology of the sciences. And so you can think, "Okay, what is the basic method?
What is physical science?" I mean, life science is only now in some sense trying to reach
the same level of maturity going beyond just the lab. But in the physical sciences we
have a very clear model: you build a mathematical model of reality. You analyze that
mathematical model. You end up with some predictions of how the world ought to
behave and then, you contrast it with the physical reality.
And of course this is a bit of a caricature. Reality doesn't happen so neatly but that's the
essence of it. And this raises the question, what is a mathematical model? And so this
question which is mathematics starting to reflect on itself is really something that only
started to happen late in the nineteenth century. People started trying to take the tools of
mathematics and point them at mathematics itself. Self-reflection. And probably you can
attribute it to the first important step in this direction, Frederick Ludwig Gottlob Frege
published in 1879. It's a small book called "Begriffsschrift" which his a language or a
script for concept, language for concept. And he is asking, "What is the language of
mathematics?" And, he is trying to found mathematics on the basis of logic. This has
become known as logicism. And the logic that emerges from this -- And I say "emerges"
because this concept was not clear at the time; it took maybe 50 years before this
became clear. But essentially you can say that as a logic, he developed first-order logic.
And by that it means that he realized that every mathematical discourse is about basic
objects, maybe numbers; predicates and operations on them, relations between them,
maybe less than; and operations such as plus; Boolean operations where studied earlier
studied by Boole: "and," "or," "implies;" and quantifiers introduced, I think, by [inaudible]
again a few years earlier "for all" there "exists." So this is the basic element of every
mathematical language so to speak. And we can go back and say Aristotle in the
syllogism, "All men are mortal," we can be more precise and say, "For all x, if x is a man,
then x is mortal." And now we have -- This doesn't have a pointer. Now we use a logical
language. We use the inverted A to say "for all," so this says, "For all x." Man of x means
x is a man. Arrow means imply. And mortal of x means x is mortal.
So now we have a language; we can formalize all the syllogisms. But more importantly
what comes out of it is that we also get -- And this takes a while before this happens; it
happened in the twentieth century -- we get the definition of what is a mathematical
model, what is a mathematical structure. And so at that point there are many, many
mathematical structures. There are graphs, partial orders, groups, rings, fields, metric
spaces, what have you. But the observation is they all have the same format, they all
look the same; they have some domain, a collection of relations over these domains -And relation is a set of tuples with similarity -- and a set of functions over these
domains. Okay? This is a mathematical model: domain, relations and functions. Okay?
And for example, what is a graph? A graph is a set of nodes and a set of edges. And so
the nodes are the domain. The edges of a graph, this is a binary relation. And now we
can take the language of first-order logic and we can talk about graphs. We can say for
all x there exists y such as out of x, y. This says that every node has an outgoing edge.
So now we have a language to talk about graphs.
Or if you want to talk about groups: groups who have a set of elements and one binary
operation, the product operation. And we can say for all x and y, and there exists y such
that x, y equals y times x. So this is a commutative group. So now we take the standard
definition of one hand a mathematical structure and a standard language over the
structure and we can describe mathematical properties of structures. So I will focus
mostly on graphs kind of as the running example. Let's dig a little deeper: what happens
when you have first-order logic on graphs? Your variable range is over nodes. And the
atomic formulas are either saying there is an edge from x to y or x equality of x to y. And
now you compose sentences using atomic formulas, using Boolean connective and
quantifiers. And I'll show two examples. I want to say the node x has at least two distinct
neighbors, so I will say, "There exists y and z such that node y equals z." So y and z
must be distinct. And E of x, y means there's an edge from x to y and E of x, z, there's
an edge from x to z. So x has two distinct neighbors.
Now in this one I'm talking about some x. And we say is x is free in this formula; I haven't
told you who that x is. It's just at this point a generic variable. Now I want to say every
node or each node has at least two distinct neighbors. Now I will say for all x there exists
y and z such that y is distinct from z and our edges are from x to y and x to z. Now the
second one does not have any free variable. We call it a sentence and either it's true in
the graph or not true in the graph. Either it's true in this graph, every node has two
distinct neighbors or not. And we write it with this [inaudible] style; we said G satisfies
phi. The graph has this property. This is a property of graphs. And the first sentence is a
property of a particular element x and we have not yet said what x is.
Now in 1902, Frege received a letter from Bertrand Russell, a young philosopher from
the UK. And the letter starts very, very nicely. Frege reads the letter and he's very
pleased. Russell writes, "I find myself in agreement with you in all essentials ... I find in
your work discussions, distinctions, and definitions that one seeks in vain in the work of
other logicians ...There is just one point where I have encountered a difficulty."
[Audience laughter] Okay? This minor difficulty was so severe that when Frege's next
book came out in 1903 in the appendix he adds, "There is nothing worse that can
happen to a scientist than to have the foundation collapse just as the work is finished.
I've been placed in this position by a letter from Mr. Bertrand Russell."
So this of course became famous as Russell's paradox. And essentially what Russell
found was a contradiction in Frege's book. So Frege had a beautiful system and only a
little problem; it was inconsistent. So that led to the so-called foundational crash in
mathematics. People dug, in that period, into the foundation of mathematics only to
discover the foundations are in contradiction. So all of mathematics was a beautiful
edifice but it stands on chicken feet.
Into this crisis steps David Hilbert who is the foremost mathematician around the turn of
the century, and he wants to fix this problem. He wants to solve the problem once and
for all, and he wants to do it by formalizing mathematics and proving that it is consistent.
Consistent means there is no contradiction; you cannot prove a statement and its
negation. It is complete; you can answer all mathematical questions mathematically. And
even more -- And this is, some say, the beginning of computer science -- it is decidable.
You can do this mechanically. There is a decision procedure for every mathematical
statement telling you whether it is true or false.
Very, very ambition. In fact, it was so ambitious, it was doomed. [Audience laughter] And
it was doomed fairly fast. It didn't take very long. [Audience laughter] It was starting in
the 1920's and by the 30's it's all crashed. It's crashed by one hand Godel. The first two
decisive blows are by Godel who proved that mathematics is incomplete, you cannot
answer all mathematical questions mathematically, and you cannot even prove the
consistency of mathematics mathematically. And this of course the Godelian sentence
saying, "I am not provable." And this leads you to: if you assume it's provable, you run
into a contradiction and its negation is not provable either. And then, a few years later
using again the Godelian technique, self-referential technique, Church and Turing
proved that first-order logic is undecidable. You cannot decide the truth of mathematical
statements algorithmically.
The first result of computer science is a negative result. And this problem, the so-called
Decision Problem, was floating around for years but was posed in a very sharp way by
Hilbert and Ackermann in 1928 book which the first book on mathematical logic, modern
book on mathematical logic. And they called it Entscheidungsproblem, ladies and
gentlemen, The Decision Problem. And independently Church and Turing -- Church a
little bit before Turing but independently -- proved it's unsolvable. And of course Turning,
we know now after last year was Turing's centennial, he defined Turing machines to
define what is going to be computable and again, using diagonalization proved that
termination is undecidable. So again, you construct a machine that terminates if and only
if it doesn't terminate and then, you reduce it to the decision problem.
That means if you look at where logic stood in 1936 in some sense you can say, "This is
the foundation of mathematics." It's incomplete. It cannot prove its own consistency. It
has unsolvable decision problem. The most fundamental computational model is itself
already undecidable. What happened? We have a bunch of negative results. So there is
some attempt to say, "Can we still get something?" as mathematicians do if the general
problem is hard. "Let's specialize. Let's look at special cases." So there was some
attempt to look at special cases. And one project was the Classification Project. Yuri was
involved in that. I'm going to simplify, not give you all the gory details. But, it was a long
project; it almost took 70 years from the beginning to the end, roughly from 1915 to
1983. That's a long time. And essentially then we found there is some small number of
classes that are decidable. So let me jump ahead a little bit: the Monadic Class. What is
the Monadic Class? It's first-order logic but your predicates, your relations are monadic;
they are one place. No binary predicates. Now today this looks like a very, very weak
logic, but all the syllogisms are all about mortal, Greek; they're all monadic predicates.
So Monadic you can say something such as if for all xP of x and if all xP of x implies Q of
x then it must follow that for all x Q of x. And in 1915, Leopold Lowenheim proved that
this is decidable, and the techniques that he used are very important techniques. One is
called the bounded-model property. It proved that if a sentence is satisfiable, has a
model, the model cannot be too large relative to the sentence. So if you're given a
sentence and you know its length, you can enumerate all models of that size and check
whether it's a model [inaudible] this size. And you prove the bounded-model property by
quantifier elimination. The thing that makes first-order logic expressive is the quantifiers;
if you get rid of them, you're basically back to propropositional logic.
So this is one class, Monadic logic. It's a fairly weak class. The other classes are socalled Prefix Classes. It depends on the [inaudible] of the quantifier. So the BernaysSchonfinkel Class is a bunch of "exists" followed by strings of "for all's." And Ackermann
means that you can have alternation but you can only have one universal quantifier
there. And Godel says you can have two universal quantifiers but then you do not have
equality because just adding equality already makes it undecidable. So these are all
actually very, very weak classes. There are very, very few applications where you can
do something using these fragments. Very, very few. They're just generally simply too
weak.
So you can say instead, "Well, maybe this is too generic." Yes? You had a question?
>>: The positional set is a subset.
>> Moshe Vardi: We will get to positional set. Okay? Hold your thought. So one idea
was, "Let's look at -- instead of being so generic just look at quantifiers and syntax, let's
try to look at some semantics, some semantical domain. How about integer addition?
What can be a simpler theory than integer addition where you have the natural numbers,
you have equality and you have, let's say, one operation, the plus." So you can go
ahead with this and you can start defining multiplication by constant. To say that y
equals 2x, you write y equals x plus x. You can say that x is zero and because x is zero
it means that means for all y either y equals x or y is greater than x. [inaudible] x is zero.
And you can say that x is greater than y because there is some element z that is not
zero and y equals y plus z. And so on and so forth.
And then, essentially you discover quickly you can define integer programming and
more. So this is clearly a non-trivial theory. You can definitely see important things in this
theory.
So in 1929, Mojzesz Presburger -- Mojzesz is Moshe so this is my namesake -- he
axiomatized integer addition, sound and complete axiomatization, and he proved that
this is a decidable theory. Okay? And he proves it essentially again by quantifier
elimination. If you eliminate quantifiers, you end up with essentially, again, integer
addition plus congruences, arithmetical congruences. And he showed this is decidable.
Today we have also automata-theoretic techniques which perhaps are simpler to prove
than decidability. So this is a beautiful result. Until we start looking at the complexity.
Only in the 70's do we look to the complexity and we have a triply exponential upper
bound and we have a doubly exponential lower bound. So after this result in 1974,
Michael Rabin had a paper in IFIP. There used to be IFIP conferences. Some of you
may remember, there used to be such conferences. So Michael Rabin has a paper
"Theoretical Impediments to Artificial Intelligence." And he says, "The complexity results
point to a need for a careful examination of the goals and methods in AI." This is a very
polite way of telling AI, "Get the hell out of here." [Audience laughter] It will never
happen. Even something as simple as reasoning about integer addition is completely
unfeasible. That's essentially, when you read between the lines, what he's saying. "It's a
pipe dream. It cannot happen."
I want to talk about another positive result that people were able to get, another very
nice positive result. This is reasoning about something very simple, about words. What
can be simple reasoning about finite words? So let me remind you all on a little bit about
automata theory. This is a very basic object that we get in any course on automata
theory. You have the model of [inaudible], nondeterministic finite automata. And an
automata is you have finite alphabet, a finite set of states, a set of initial states, and a
nondeterministic transition function. So given a row takes you from S, a state in the
letter, to a set of possible successful states. That's nondeterminism: a set of possible
successful states. And a set of accepting states.
And what you do is now you have a finite word. A automaton runs and running is just a
sequence of states, and you start in some initial state. And each time you look at the
[inaudible] function to give you a set of possible successful states. You just select one.
And the important thing you do is you have to be smart about the selection so the final
state has to be an accepting state. Okay? And here is a regular automaton. You can see
here that when you enter on the left, and you can see the zero always will take you back
to the left and one always takes you back to the right, and the red circle means you
accept on the right. So you can see that you must accept on the right; therefore, the last
letter must be one. So this is very simple. An automaton defines all the words that end
with one.
And as we know NFAs define the class of regular languages. It's very robust class, very
rich theory, very nice behavior. So these are NFAs. Now in the late 50's people realized
that a finite word is a mathematical structure; it's a particular type of mathematical
structure. Okay, remember what is a mathematical structure? Domains, relations. Okay,
what is the domain here? Well, the domain is a set of points. Right? It's an end position.
Every position is an element of the domain. We'll use one predicate, binary predicate,
dyadic predicate, to say which position comes to the left of which position. So it's a lessthan position. And we're using monadic predicates to tell you what letter is written in
every position.
So that means that you can now use first-order logic, even second-order logic, to talk
about words by using atomic predicates and even -- I won't talk at length but you can
use even set quantifiers to quantify over sets of positions. So let's look at this sentence.
What does it say?
It says there exists an x such as for all y, y not x less than y. So this says there exists an
x that no y is bigger than x. That means x must be the last position. And P sub 1 of x.
That means the last position is 1. So this is very similar to what I just said in this
example. So we saw that the property of the last is 1, you can express it using an
automaton or you express it using logic. And in 1957-8 three people independently -Buchi, Elgot in the United States, and Trakhtenbrot in the Soviet Union -- proved that
these two languages have some expressive power. And they defined this class of
regular languages in effect to give us the proof, to give us an effective translation in each
direction.
There is a little piece of history that I'm missing here. Buchi and Elgot brought one
abstract followed by two different papers. So there must be something juicy here. But do
you happen to know what happened there?
>>: I don't know but I know Buchi, he was a very difficult man.
[Audience laughter]
>> Moshe Vardi: [Inaudible] abstract, they had to agree on so many words. After that
they would not collaborate more. [Audience laughter] It must have been a hard
collaboration.
>>: Were they working on [inaudible]?
>> Moshe Vardi: No, no. They announced this result in one abstract. So originally there
was one abstract announced with these results.
>>: Oh, I see.
>> Moshe Vardi: And it used to be then in the notices, you publish abstracts to
[inaudible] on the result. The paper would come later. This was like the conference that
we do today. They would just publish an abstract to announce their result. Now this is of
course a beautiful result on one hand, but it's a very useful result. What makes it useful?
I want to talk about the so-called the non-emptiness problem. Given an automaton, does
it accept any word? So given an NFA, is there any word accepted, is the language nonempty? So it's actually a very easy problem. Because if you think about it, it just means
that there must be a way to go from an initial state to an accepting state. There must be
some way to do that.
So [inaudible] said, "Let's take the graph of the automaton to consist of all the nodes of
the states. And there is an edge from S to T, it's possible to make a transition from S to
T, any letter [inaudible]. So essentially it corresponds to going here, everything on the
labels and you are left with a graph. And now it's actually an easy lemma. You can give it
to any graduate student to prove that the automaton is not empty if and only if there is a
path in the graph from initial to final state. And now clearly we can solve it by any kind of
graph reachability algorithm. Easy problem.
Now what's the analogous problem for logic? The analogous for logic is given a
sentence, does t have a model? Is there any word that satisfies this sentence? Now this
is a first-order sentence. A second-order sentence, it's not clear how you even approach
it. How do you decide whether a given sentence is satisfiable? Well, the translations tells
us very easily. It says that phi is satisfiable if and only the automaton is non-empty
because the automaton and the sentence have the same set of models. And we know
how to solve emptiness for automata. So we have an algorithm. Algorithm means first
translate from logic to automata and then, run your graph reachability algorithm. Very
simple algorithm. Except that when we go to the complexity analysis we discover that
the translation which is a very simple translation is done by induction. And every step in
induction may involve one exponential. But it's an induction. So you get a stack of
exponentials whose height is itself linear. Now you could say, "Well, this is a simple
algorithm. Just go back, think of a more clever algorithm." Right? There must be a better
algorithm. Well, by 1974 we know that there isn't one because Larry Stockmeyer proved
that even for first-order logic there is already no bounded-height tower of exponentials.
Now in case you have never seen this tower of exponentials, let's do a recalculation
here. Very quickly. [Audience laughter] Okay? 2 to the 2? 4, no problem. Okay. So far so
good. 2 to the 2 to the 3? 256, manageable. 2 to the 2 to the 2 to the 4? Mmm, about 4
billion. Okay. That's not [inaudible] but still doable. 2 to the 2 to the 2 to the 2 to the 5 is
roughly 10 to the billion. Okay? 10 to the billion is not an astronomical number. It's a
cosmological number. [Audience laughter] It's more than if you take the whole known
universe, like 40 billion years across, and you pack it with Planck's constants, which is
10 to the minus 35 meters. Pack it densely. You don't get that many things. So this is a
very large number.
Now somebody says, "Well, propositional logic is a special case of all this logic." So let's
go back to propositional logic; let's go back to the middle of the nineteenth century. And
we find George Boole who has a beautiful idea that you can go back to all the syllogisms
and think of them in an algebraic fashion. So the nineteenth century is the century of
algebra, everything became algebraic. And Boole realized that logic can be treated
algebraically. And he writes, "If an adjective, as 'good,' is employed as a term of
description, let us represent by a letter, as y, all things to which the description 'good' is
applicable, i.e., 'all good things,' or the class of 'good things'. Let it further be agreed that
by the combination x times y --" Here I'm using the algebraic convention that
juxtaposition means multiplication -- "x times y shall be represented that class of things
to which the name or description represented by x and y are simultaneously applicable.
Thus, if x alone stands for 'white' things and y for 'sheep,' let xy stand for 'white sheep'."
So Boole says conjunction is Boolean multiplication. So this is a big insight, to think of
logic as an algebraic operation, in this case multiplication. And out of this we got what
we call now SAT, Boolean satisfiability: given a Boolean expression using "and," "or,"
and "not," and you want to know, can you satisfy this? Is there an assignment of zeros
and ones to the variables such that the whole expression gets the value one.
So here is an expression. It's calling conjunction [inaudible]. It's a conjunction of this
junction. And in this case there is indeed -- If you didn't solve it very quickly in your head,
I'm going to tell you that this particular assignment will make it one. Now already in the
nineteenth century realized that these are difficult problems to solve. So William Stanley
Jevons, a British logician and economist, already wrote, "I have given much attention,
therefore, to lessening both the manual and mental labor of the process --" The process
is this kind of Boolean reasoning -- " and I shall describe several devices which may be
adopted for saving trouble and risk of mistake." So he built the first logical computer. It
has a nice shape of a piano, known as Logical Piano.
Ernst Schroder who lives a little later wrote an amazing sentence, to me, "Getting a
handle on the consequences of any premises, or at least the fastest method for
obtaining these consequences, seems to me to be one of the noblest, if not the ultimate
goal of mathematics and logic." Just to solve this logical reasoning problem. And there
was a huge project in the Soviet Union in the 50's and early 60's described very nicely
by [inaudible] in an article in the Annuals of the History of Computing to solve generally
this class of search problems. This was the "Parabor" project. And it ended in the early
70's when Cook and Levin independently proved the Boolean Satisfiability is NPcomplete and, therefore, we don't think there is some clever way to somehow solve the
problem. Yeah?
>>: "Perebor," both a's should be e.
>> Moshe Vardi: Both a's should be e. Okay. Thank you very much. Perebor. I always
think, however, what does it mean when the language has such a short word for such
hard work? [Audience laughter] What does it tell you about the language and about the
culture? Thank you. So of course many of you here probably know that this gave us the
class, the so-called phenomenon of NP-completeness. NP is a class of problems where
we can check solutions quickly. We can check very quickly if a graph is has a
HamiltonianCycle. If somebody gives us a [inaudible], I can check whether it visits every
node exactly once. I can check if somebody gives me a factorization of a number. I can
check it very quickly that it solves factorization by multiplying. But finding solutions is
hard. And there are tens of thousands if not hundreds of thousands of problems that in
NP where we can check solutions easily but finding solutions is hard. And NP-complete
are the hardest problems in NP. And it means if you solve one NP-complete problem in
polynomial, you can solve all of them in polynomial time. So this is an amazing
phenomenon.
And the focus has become one of the most outstanding problems in computer science.
And one of the things, when we re-launched CACAM, I went to [inaudible] and I said,
"Why don't you write a article on P versus NP." And he said, "What's there to write? All I
can write is 'Still open.' Do you accept short articles?" I said, "Yes, but please elaborate."
So he wrote an article about it and we realized that there was [inaudible] activity on the
website. And the article, after it was in like three months, downloaded -- we had about
fifty thousand downloads. And it was so interesting that this article on a completely
theoretical subject, just saying the problem is still open, was getting so many downloads
that we got an article in the New York Times just on the social phenomenon. There was
nothing new to report. There was no scientific news. [Audience laughter]
But we got a New York Times article. So Scott Aaronson [inaudible]; he writes
beautifully. He wrote, "If P equal NP then the world would be a profoundly different place
than we usually assume it to be. There would be no special value in 'creative leaps,' no
fundamental gap between solving a problem and recognizing the solution once it is
found. Everyone who could appreciate a symphony would be Mozart; everyone who
could follow a step-by-step argument would be Gauss."
So the common belief is a Boolean SAT cannot be solved in polynomial time. And then - In fact John gave a lead to it, logic became one of the first big projects in computer
science. If you go and open [inaudible] the primary theoretical computer science
conference during the 60's and 70's, and you will see that a major topic was how to
prove correctness of programs. So this was a dream that was launched by Tony Hoare,
one can say, in 1969 when he wrote, "When the correctness of a program, its compiler,
and the hardware of the computer have all been established with a mathematical
certainty, it will be possible to place great reliance on the results of the program."
And as I said, this was a huge thrust of theoretic computer science. And then, in 1979
we had an article in CACM b De Millo, Lipton and Perlis and they wrote, "We believe that
... program verification is bound to fail. We cannot see how it's going to be able to affect
anyone's confidence about programs." Very unambiguous language. And their argument
was that the acceptance of a mathematical proof is a social process; people read the
proof, they are convinced, they tell their friends, they discuss it and [inaudible] there is a
process. And they argue that a computer proof will never go through the social process
so the proofs are useless. That's their argument in a nutshell.
So this is roughly, if you look at logic where it stood in 1980. 1980 is an important year
because I became a PhD student. So here is where logic is: it is undecidable. The
decidable fragments are too weak or too intractable. Even Boolean logic is already
beyond our ability to do anything. Program verification is hopeless. So what can you say
about it? Not a very promising career so to speak if you are going to focus on logic in
computer science. Hmm?
>>: [inaudible] at that point.
>> Moshe Vardi: Just the naivety of youth, right? What can I say? And what I want to
show you...
>>: [inaudible]
[Audience laughter]
>> Moshe Vardi: What I want to show you in the rest of the talk is how things have
changed. This is what I call the logical revolution. And I will try to talk about the
successes. And of course this is just a sample. I'm sure I'm missing a lot so I'm probably
missing things that are people who are right here in the room, so please bear with me.
It's just a small sample that we can cover in 20 minutes to give you a sense of how
things have changed. And I'll actually talk about databases, relational databases,
Boolean reasoning, model checking and termination checking. And I swear that I
prepared this talk even before I was invited here, so I will talk about Microsoft Research
but it's not because I'm trying to suck up here. [Audience laughter] This talk, I prepared it
before.
>>: Fuzzy logic.
>> Moshe Vardi: Hmm?
>>: Fuzzy logic.
>>: Fuzzy.
>> Moshe Vardi: Fuzzy logic. I will not talk about fuzzy logic. So in essence putting 1980
as a pivotal year is a simplification because, I think, theory started turning already in the
70's. I mean history is always messier. And to me the first turning point was the relational
databases, and this is where we went from model theory to relational theory. And so in
classical mathematical logic a sentence is a sentence. It has no free variable. It is true or
false on a graph and, therefore, it describes a set of models, the set of models of this
graph or all the graph that satisfies this sentence. So model theory is the theory that
talks about classes of structures described by logical sentences.
That's what model theory is. Now model theory is interested, again, in the structure
described by sentences. Formulas are a bit of a nuisance because they have free
variables, so I'm not talking about anything specific. You have not yet told us what
they're talking about. But Ted Codd realized -- In fact if you look at some textbooks in
logic you realize that formulas are this nuisance. You have to go on the weight of the
real thing which is sentences which have no free variables. When I was taught logic
formulas were just necessary building blocks. But Ted Codd in 1970 or 71 maybe for this
realizes that formulas are important because formulas define queries. Okay? So if we go
back to this sentence, to this formula where x was free, "There exists y and z such that
they are distinct and x has two distinct neighbors," you can think of it as a query. "Give
me all the nodes that have two distinct neighbors."
So for every formula I can now think of a formula as k free variables, and I can apply to a
graph and say, "Give me all the bindings for the variables that will make the formula
true." So you need the concept of binding of free variables. And this gives rise to
relational databases in SQL. SQL by now is an over 30 billion-dollar industry. Microsoft
has significant presence there. And this was actually one of the fastest turnarounds
between paper and [inaudible]. I think you'll see [inaudible] before Cook, for example.
[inaudible] for NP-completeness. Yeah?
>>: So relational algebra was discovered by Tarski.
>> Moshe Vardi: Right. Right.
>>: [Inaudible]
>> Moshe Vardi: Right. Right. Codd knew nothing about.
>>: So the real significance of Codd is the application to databases.
>> Moshe Vardi: Right. Right. You can say he has done nothing of importance.
[Audience laughter] No, there were actually many people when they read his first paper,
the conceptual paper, looked at this and said, "What is this? This is total --" There were
people really who just completely dismissed the CCM paper. And there were many
people who read the paper and said, "There's --" Content free. People described the first
paper really as content-free. It's amazing. So Codd had really two important ideas. One
is -- And again, [inaudible] trivial observations. One is that tables are relations. I don't
exactly when people started using tables as a way to describe data, and Codd realized
that this corresponded to the mathematical concept of relation. And of course any
mathematician would say, "Of course," but Codd was the one who did it. And the second
one is that formulas are queries. There was another thing that he argued, that by using
algebraic treatment, you can compile them into algebraic expressions. And again he
really invented essentially [inaudible] algebra. Yeah?
>>: One important thing was that he concentrated on finite structures.
>> Moshe Vardi: Right. I'll mention this in a minute. Thank you. Good point. Anyway, it
was a project that started [inaudible] at IBM, San Jose and Berkeley and Oracle was the
company to come ahead and kind of run around everybody. In fact the company was
just called Relational Software and later renamed themselves after the database. And
then, actually that first IBM development unit didn't want to do this. They had another
project. But Oracle essentially forced their hand to get into this business.
And so really the insight was -- People say, "Wait a minute. You just told us that firstorder logic is undecidable." But there are really two distinct problems. One is the truthevaluation problem. I give you a formula and a graph and a binding, tell me if the formula
is now true. And the graph is finite, of course. The other one is given a formula, is there
a graph and a binding satisfied? And satisfiability is undecidable but checking the
formula is just one big nested loop. Go over all x, go over all y, try all assignments and
see if it's true or not. I mean this is not very efficient but in principle its query is
decidable. So this distinction is very, very important, between satisfiability and evaluating
truth in a given finite structure.
Now I talked about SAT and people started dealing with SAT almost for the very, very
early computers, already Newell, Shaw and Simon in 1955 built a tool called "Logic
Theorist" and they were able to prove all the theorems about propositional logic
[inaudible]. And they were very proud. They wrote a letter to Russell telling him, "We're
able to prove mechanically all of your theorems." And then, who started the study of
SAT? Of course NSA. This was recently disclosed by Snowden, of course. [Audience
laughter] So the first modern work on SAT is Davis and Putnam in an unpublished
technical report of the NSA. And there was a sequence of papers. By the early 60's there
was a standard method; it's called DPLL which is basically you convert a formula to
conjunctive normal form and you do backtracking search. And there is only really
essentially one heuristic if you have a unit-clause, if you have a conjunction just at P or
not P then use it. Give it preference to anything that has non-ambiguity; use it as soon
as possible.
And there was a small community who has been working on it for many, many years
making very, very, very small progress between the 60's and almost for thirty years; I
would say very minimal progress has been made on it. However, from the roughly mid90's we had really essentially a revolution. And today there is this new body of
techniques all based on DPLL but there was a bunch of heuristics called CDCL, conflictdriven clause learning, many more heuristics. Backjumping that is done just to backtrack
and go one level at a time but go back fast of you can go back faster. Be smart about
how you manage these unit-clause preferences. The small data structures whenever a
branch of the search fails, draw a conclusion from your failure. Make sure you don't
repeat the same failure again by learning new clauses. Be smart about how you branch.
So it turns out this is a very important principle in computer science: is it better to be
smart or fast? Because to be smart costs time and very often the answer is, "Don't be
too smart. Don't be too smart for your own good but be very fast." And the heuristics
today make a very careful balance in between being smart and being fast.
And restart, that is if you're not going anywhere after a while, just give up. Go back to the
beginning, re-randomize and restart, a whole bunch of heuristics. Two very important
tools in the mid-90's: GRASP from Michigan and Chaff from Princeton in 2001. And
today we solve problems with millions of variables. I mean to me this is just -- You know
when I was a graduate student NP-complete was -- stay away from it. Even looking at
the problem was dangerous. [Audience laughter] And today we solve problems with
millions of variables. This is just, to me, a stunning development.
Now here is a slide that was developed by Sanjit Seshia from Berkeley. And what he did,
he took a bunch of tools and ran them. And now here's a more recent one. This was in
2007. He ran it on a 2007 machine. So this is only on the same machine, same
benchmark. Same machine. Just the tools between 2000 and 2007. And you can see
how we have [inaudible] orders of magnitude improvement over less than 10 years. This
has become known as Moore's Law for such solvers. An amazing phenomenon.
>>: Can I ask a quick question?
>> Moshe Vardi: Yes.
>>: So for historical reasons we've concentrated on SAT.
>> Moshe Vardi: Right.
>>: And there was this wonderful progress.
>> Moshe Vardi: Yeah.
>>: Now we have concentrated on something else, for example, integer programming.
And then, it was would be a triumph not of logic but of arithmetic.
>> Moshe Vardi: Well, you know, history is [inaudible]. But look, there, it's not so clear. I
mean there are areas where we have concentrated on that people have worked for a
long time, you know, really [inaudible] which is logic. But people have worked on it for a
long time and progress is slow. QBF is -- I mean there are some successes -- I mean I'm
trying to focus on the successes. There are many bodies along the way. Yeah?
>>: But arguably integer programming model could have worked even better.
>> Moshe Vardi: So actually there have been some attempts. In fact some of us have
tried. I tried at some point to say that because next to me there are people who develop - just down the hall -- people who developed CPLEX. And they said, "Oh, integer
programming. Integer programming." And so actually there's something back to the
simplicity of SAT. It is so simple and it makes it easier to experiment and develop simple
data structures. The turning around of heuristics and trying -- What we have now is just
amazing switchboards of kind of cloudsoucing for heuristics and finding which one
works. And is it just historical coincidence or is there something deeper? [Inaudible] was
once asked about the French revolution, "What do you think about the French
Revolution?" He said, "Too early to tell." [Audience laughter] So maybe you're right but,
you know, come back with these questions in 50 years and discuss it.
And the nice thing about SAT is over the last few years -- and much of this work has
been done here -- it's not just a purely logical question, I think what's really -- I love the
work being done here -- is how people have found so many different applications for this
in the real live software engineering. So this has become, it's not just a theoretical work
anymore; it's really become part of software engineering.
And finally I'll give one example which is related to the issue of -- we talked about MSO.
I'll talk about this. And this is again reasoning about program but in particular in the mid70's Pnueli realizes that there are many, many classes of programs. In fact even by the
70's most programs are not programs; they just have input and output. But, you know,
what is the output of this machine? Everything is about interaction. So what Pneuli
realizes in the mid-70's is you must reason about interaction and not about input and
output. And he did logic for interaction. So he was hunting around and found a
philosophical logic called temporal logic, and for which he received for this a Turing
Award, which was just the right logic for talking about interaction. So he proposed
temporal logic to talk about ongoing behavior. And he even in the first paper he already
says, "It's decidable. You can reduce it to [inaudible] second-order logic. No problem."
It's nonelementary. He was really not too concerned about it fortunately for us. Okay?
And fortunately the [inaudible] committee did not reject the paper because it's
nonelementary. And so I'll just give you some examples, just the flavor of temporal logic.
This is not a talk about temporal logic, but you can say things such as mutual exclusion,
always not, CS1 and CS2, process 1 in a critical section, process 2 in a critical section.
Always request implies eventually grant. Always request implies the request must stay
on until the grant is given. And all kind of very, very useful properties when you want to
reason about ongoing behavior of programs.
And again Pneuli was more interested in the mathematical theory and the logic of
systems. But a few years later people started thinking, can we do this algorithmically?
And there were two important papers about algorithmic verification by Clarke and
Emerson and Queille and Sifakis. And they talk about the somewhat related logic called
CTL. And they proved that whose state space is m, and you have a formula of size n,
you can do the check in time m times n. Now there was some of a dispute between the
CTL people and the LTL people. So Pneuli replied a couple of years later with his
student, "Okay, if you use LTL -- even though originally I told you, you can do it in
nonelementatry time by reduction to MSO -- there is another way to do it and now we
only pay an exponential price in the formula." So it's linear in the size of the program and
exponential in the formula, but now you cannot use automata. Now you have to use a
set of heuristics called tableaux which I won't get into.
But if you use this heuristic then you can do it in exponential time inside of
nonelementary time which is, of course, a huge improvement. But it almost seems like if
you want to use automata, you are doomed to have to do it in nonelementary. But it
turns out that you can use automata. And the idea is, don't go to MSO. Okay? So Pierre
Wolper and I looked at it in the early 80's, and we realized that if you focused on
translating LTL formulas to automata but don't translate to MSO -- Find a direct
translation -- then there is a direct translation which is exponential. So going from LTL to
automata can be done in exponential blow up.
And this is what I call the Exponential Computation Theorem. This is enough to give you
really all the results that you want to have LTL satisfiability, satisfiability for [inaudible] in
PSPACE. It follows from this that LTL model-checking is in exponential time. It follows
from this. And today it is wide-spread industrial usage, not so much in using LTL itself
but in using industrial languages such as PSL, property specification language, and SVA
which is system variable assertions; these are all industrial standards that have been
derived from LTL and the implementation is based on using this automata theoretic
approach.
And we can even go back to the very beginning. Remember, we started almost at the
second big news which was Church and Turing, "First-order logic is undecidable
because termination is undecidable." And then, in 2011 Cook, Podelski and
Rybalchenko -- Byron Cook from Microsoft Cambridge -- wrote, "In contrast to popular
belief, proving termination is not always impossible." This is, I guess, a British way of
saying this. [Audience laughter] "Always impossible." Or maybe diagonalization. The
reality is the terminator can prove termination or divergence of many, many Microsoft
problems and many, many programs. Of course not all of them. The first question people
ask, "Why don't you apply the terminator to itself?" And of course the answer in this
case, it will not terminate."
To me there is some very important insight here. Why is it that one hand we can prove
the problem is unsolvable, undecidable, but in practice it doesn't seem to hard. And the
reality is if you ever wrote a program, and probably everybody here wrote a program, if
you program terminates or didn't terminate did not depend on the [inaudible] hypothesis.
If it terminated, it terminated for very simple reasons and if it did not terminate, it was
also for very, very simple reasons.
And [inaudible] -- I don't know how many of you are familiar with the 3x plus 1 function.
Okay, if you take -- And then we don't whether they terminate or not. Right? But if you
give it a terminator, it's not going to solve this problem. Most of the termination problems
are very easy problems and the terminator solves them fairly easily. So this brings us to
the end of the talk. I think what I wanted to show that logic around 1980 seems like a
total failure to today; it's an area where there're many successes, many challenges and
many areas we have not made enough progress but the thoughts are even more
exciting in some sense.
And there are some, I think, important differences as opposed to, I think, the early
period: much more focus on algorithms, not just on reasoning but on mechanical
reasoning, on algorithms; heuristics are incredibly important, we don't understand them
so mathematicians hate them but the success of SAT is due to a bag of heuristics and
nobody really fully understands why they are so successful but they are very successful;
lots of experimentations, lots and lots of experimentation. I mean the way we discovered
SAT is by just crowdsourcing the problem, running it [inaudible] many, many heuristics
and looking at all these combinations, finding the switchboards. Lots of tools, lots of
systems; and I think that even more fundamentally -- when I was a graduate student,
worst-case complexity ruled the day. I mean we were taught, "Okay, if you prove that
one algorithm is quadratic and one is linear or n log n, surely the n log n algorithm is
better. Right?" Worst-case complexity. And today it's a much more complicated picture.
All can say about worst-case complexity is it barks but it doesn't necessarily bite.
And I'll stop here.
[Applause]
>> Jeannette Wing: Well, we have plenty of time for questions. Ken?
>>: You had mentioned some other applications of logic and computer science but not
logic and programming. So is that a success story a failure or is it even logic?
>> Moshe Vardi: [Inaudible] [Audience laughter] So I would say that many years ago I
had a project when I was a research manager and we had to review some project. The
manager [inaudible], "What I'm hearing here is a lot of hope." And I said, "All of research
is about hope." So the answer is that reality is most of what we're going to do in our life
is going to be forgotten. Right? This is it. Most of research is failure. John Bakus wrote -I don't know if anybody saw -- a beautiful piece that says, "We don't publish the failures.
We publish the successes. So people get a distorted picture about research. Most of
research is failure." This is true everywhere. It's true here. It's for everybody who does
research.
Now along the way sometimes because we are human beings and we have to be funded
there's a lot of hype that comes along the way. And some of it we discover later. It didn't
pan out. There are many that actually don't pan out. So I think logic programming is a
panacea. This is the way -- In fact anybody who promises you panacea, you should be
skeptic by now. So logic programming as a panacea was a failure.
Actually there is one area, to me, that has come out of it that [inaudible] and this is called
logic answer set programming. And this is way to do solve optimization problems using a
version of logic programming. You combine it with many of the heuristics today of SAT;
actually you combine it with search engines. And you get actually a fairly nice language
to describe optimization problems and use a solver underneath to find a solution. So I'm
sure there are people in this area that can say more. You know, remember that "The fifth
generation, Japan is going to rise. This country might as well retire because of logic
programming." That didn't happen. Yeah?
>>: I'll make a comment. So a few years ago I gave a somewhat similar talk at the
University of Chicago about the importance of logic, that it was [inaudible]. But my stress
was in a different place. It is that engineers right here at Microsoft badly need logic and
don't know it. So they don't know how to explain themselves. You speak [inaudible] to
explain something to him and he says, "You think that -- Oh, now I understand. You're
saying that this language is a subset of that language" which can mean so many
different things. They don't have the vocabulary to speak about things they badly need.
So everybody writes languages of different kinds here and the logic in education is
ubiquitous. So, for example, if they all started calculus, never use it; they never started
logic and use it all the time. [Audience laughter] So that was my stress there that do
teach logic. So this is [inaudible] concerning. As a logician I am happy to hear [inaudible]
but a little skepticism. For example, [inaudible] solved a problem using logic and
[inaudible]. And [inaudible]. Also Cook, I spoke of Cook, so he came from logic. He didn't
just look at what happened and say [inaudible]. Now [inaudible] completely different
[inaudible]. So the whole thing came from [inaudible] engineering but that's [inaudible].
[Inaudible] exhaustive search came. There's no way you can prove it. And so he found a
way to -- Nobody could even formulate, "What does it mean?" [Inaudible]. And he found
a way to formulate it. So in his eyes it was about engineering at that time.
>> Moshe Vardi: So actually I read [inaudible]'s paper. Electrical engineering is a bit of a
stretch. A beautiful paper. I mean he does Cook and [inaudible] in about three pages. It's
pretty amazing.
>>: Four pages.
>> Moshe Vardi: So it's pretty amazing. But I wouldn't call it -- I mean it's not necessarily
declarative logic but it's very much a Turing machine so it is definitely logic. Look! I mean
as I said before along every research area there is some hype along the way. There
have been many attempts in complexity theory to try to bring some other -- We are so
stuck there. We think the latest thing, what's it going to be? The algebraic geometry will
save. People always think, "If we just bring some other mathematical domain into this."
So far we have been humbled every time. People thought it would be proof complexity, it
would be [inaudible] complexity, [inaudible] complexity, and all I can say is the German
phrase, "Mensch [inaudible], Gott [inaudible]." Men plans. God laughs. So the complexity
theory, God is laughing at us about every attempt including logic.
In fact even on one hand -- People say, "Oh this was logic;" it was a communitorial
argument and [inaudible]. And even in his own paper made the communitorial argument.
So when people say, "Yes, but I thought about using logic," I was never [inaudible]. So in
fact if you [inaudible] complexity, probably it's fair to say in that particular area,
complexity helped logic more than the other way around because we can do separation
results in logic using complexity theory. Not the other way around. So, you know, that's
[inaudible] along the way. This is the way life is.
>> Jeannette Wing: Education.
>> Moshe Vardi: So I would actually broaden this because I think we have a problem is
that we have four years for a Bachelor's Degree. In fact, if at all, people want to make it
shorter, faster. Right? It's expensive. Everybody's talked about cost reduction. And we
have a growing discipline. So now you want to say, "Well now we have distributed
programming and web programming and search and data mining." And so the thing
that's very easy to get squeezed is the theory courses. And it doesn't matter if it's logic or
discrete math or automata theory. And people say, "Where are people going to use this
automata theory?" So I'm not even talking about [inaudible] application. What we're
losing there in educating a generation of computer scientists who simply don't know how
to abstract because they have lost -- This generation still had to carry the [inaudible]. But
we have a generation of people, they just cannot reason abstractly. If anything, we do
know about complexity which is what we're dealing with whether it's software or
hardware or systems. The only way we can think about complexity is by abstraction. And
now my worry is, is that we're losing the ability to [inaudible] because that's what
[inaudible] from all these courses in math. You learn to abstract.
And by cutting, cutting, cutting and adding more and more courses on this topic and that
topic, that's my big worry. Losing logic is part of it but I worry in a bigger way that we're
losing the ability to abstract.
>>: So I also would comment with a question. And it was sort of triggered by Yuri's
comment. It's not just developers that don't understand that they need logic and
vocabulary. It triggered the thought that back in CACM, Vince [inaudible] had an article
in the October issue that was calling for more of a science of an understanding of
programs. And I thought that the article was somewhat surprising and even stunning for
its complete absence of any acknowledgement of the existence of logic and of logic in
computer science. And it's a comment. I'm not expecting a response from that. But...
>> Moshe Vardi: I review all -- We review all articles going to CACM except for the
columns by the president of CACM. [Audience laughter] That's all I can say, [inaudible]
policy. [Audience laughter]
>>: On a related note, there was an NSF workshop [inaudible] was talking about the
state of network protocol documentation and [inaudible] still like capacity and they still
like tables and they use ASCII art for drawing state machines. And that's like still -- So
it's like there's also sort of -- I mean, we're still working on getting languages and
formalisms adopted by other disciplines who are in our industry just running ahead to
find new protocols.
>>: Right. So in this regard, just to close the thought from Yuri's comment: I would
assert that Microsoft is actually the most enlightened in this respect in the industry.
>> Moshe Vardi: Let me go farther. So in 2008 when Clark, Emerson and Sifakis
received the Turing Award for model-checking, somebody sent me an e-mail pointing to
a blog by someone that was from, I think, Google or Yahoo. A respectable theoretician
and a member of [inaudible] community who wrote, "Oh, they got the Turing Award for
model-checking? How can --" I’m rephrasing. I'm not maybe 100 percent, "How can
someone receive a Turing Award for something I never heard anything about?"
[Audience laughter]
Okay? The claim was, "Look, if something was really important, I should have heard
about it somehow. One way or another, in a hallway conversation, in Tokyo. Not that I
need to [inaudible]; I need to have heard about it." And so on one hand, you know, logic
is the declining in education. At the same time I think what Microsoft Research has done
is show how important it is for the practice of software development. So formal method is
flourishing much more in Europe than it is in the U.S. And this is time were actually, you
know, we want to know if something is important. One way to look is to look at what's
happening industry. And in fact what was shown here is how useful it can be to software
development. So I have a hard time myself reconciling this paradox. Yeah?
>>: So anyway the question is, on the idea of proof as a social process that Lipton and
Perlis had mentioned, the systems and tools that we have today, they do internally try to
prove things.
>> Moshe Vardi: Yeah, I think that was -- they thought if it's going to be [inaudible]
proofs. I mean they were so blind; they thought, "It's going to be [inaudible] proofs of
correctness." And of course we already know by now that the proofs are humongous.
[inaudible] already by then people were working on the [inaudible] of this. And they could
have said the same thing and said, "[Inaudible] proofs are doomed. The challenge has to
be fully mechanizing of these proofs." If they had said that, I think I would have agreed
with them.
But they stopped after one-half. And in fact it was ironic, right, because the modelchecking paper came up within two years. And they complete missed that idea that you
can mechanize the proof.
>>: So you characterized the SAT as being a pile of heuristics and we don't know why it
works. And I hope that's...
>> Moshe Vardi: Do you know?
>>: I hope that's not entirely true. But the phrase had a ring to it, "A pile of heuristics and
we don't know why it works" because I think that characterizes almost every large
software system. [Audience laughter] If that's true, how do we get from that situation to a
place where we can reason logically about a system?
>> Moshe Vardi: So I think that to me I view the success of SAT as [inaudible]
opportunity because I go to a theoretician and say, "Look, it's a [inaudible] problem." We
all know we can generate problems with hundreds of variables and no [inaudible] can
handle them. And then, the [inaudible] goes around and solves a problems with millions
of variables. What does [inaudible] have to say about that? It just talks about the
[inaudible] complexity. It gives us no guidance what problems are hard and what
problems are easy. So right now I would say, I'm hoping there is some beautiful theory
that's yet to be discovered that explains, "Okay, so this is begging for more theory
[inaudible]. But this is too general. When you have something very complicated, you
know, sometimes we understand and it takes a long time maybe. Right now I think we've
had empirical success, we are a little bit like physics was like in the turn of the century.
We have a lot of experiments but nobody could explain what the hell was going on. And
to me, that's what's happening now. We have the experimental evidence that this works,
that this is very easy. But I don't think we have a good theory. Not that I've seen.
>>: Perhaps you could characterize Windows as an empirical success. Most of the time
it doesn't crack.
>> Moshe Vardi: I don't think it's a fair analogy. I mean, here we have a mathematical
problem and we have, not a proof, but a lot of evidence that this is a hard problem but
we cannot explain when it is hard and when it is not hard. In particular, for example one
of the ways that Windows does work is a lot of the composition and orthogonality and
separation of concerns. And I don't think you can say that about SAT. Just this particular
combination of heuristics, it's just try this. No it doesn't work. Okay, try this. Shift it here.
Do it here. Maybe I'm too pessimistic on this, but to me it's a switchboard that emerged
experimentally and I don't view it quite -- It's not -- You know, people did try to apply in
principle some software engineering principle to develop Windows, and I don't think the
situation is similar. There are some SAT experts here. They can talk about it more than I
can talk about it. Yeah?
>>: I think we can make huge progress on every case complexity and things like that.
But typical case, probably it's very hard to analyze because it involves human
psychology. A simple example is typing. So typing is [inaudible] space complete. Typical
problems are very easy to type. Why? Because when they write I need to make sure that
I understand what I'm talking about. And that soft side of things is difficult to analyze.
>> Moshe Vardi: But one could imagine that somebody would come up with some
metric for SAT problems, something you can measure, something syntactical that you
can measure. And it will some how be predictable whether a SAT solver will spend a lot
of time on it or not. It's imaginable to me. I mean right now we don't have anything like
that. I mean and look, another example that people struggle with for many years is to
understand why we're so successful in linear programming. Linear programming was an
example. Right? What is it [inaudible] in 1974 [inaudible] proved, if I'm correct, that
simplex is exponential. And then in practice it works incredibly well. And people have
actually tried [inaudible] complexity. And there was not a good explanation. But
[inaudible] smooth complexity by Spielman and that's a much more satisfying
explanation. You read this and you say, "Okay." And I actually thought, "Gee, I'd love to
apply it to something other than programming." It's very hard. It seems to be very
specific to classical problems or linear programming. But it took us a long time to find
some mathematical explanation of why something works so well. So I'm hoping that
something will emerge for SAT eventually that will explain what is special about the
problem we are looking at. Why is it we cannot break RSA using SAT but we can solve
[inaudible] with SAT. I think eventually we'll figure it out but it will take some time.
>> Jeannette Wing: And another area where I find this is true with computer science
right now is in machine learning. There are a lot of algorithms and there are a lot of data
sets for which certain heuristics or parameters are set that work really well and others
don't and we don't really understand why. So this may very well be just a phase in our
field where we're -- you know, the paradigm right now is scale millions of variables,
terabytes of data, whatever it is. [inaudible] complexity will catch up to figuring out why it
all works.
>> Moshe Vardi: Partly I think it's a social phenomenon in my opinion because
somehow these kinds of problems have not yet caught up with -- We have a [inaudible]
community of utterly -- Go to [inaudible] and you at awe of the brilliance, mathematical
brilliance of people there. But they are not looking at these kinds of problems somehow.
And when you tell them, "Oh it's messy. This is a real problem. We don't want to look at
theory problems." [Audience laughter] It's how to convince them to look at these
problems. And I will say if you look now -- So one of the reasons I think that we made
such progress in SAT is because of the competition. Competitions have been very, very
productive. People really want to compete. They want to win. They publish what wins.
And the whole field progresses because of the competition. But the competitions are a
hindrance to deep reflection about why things work.
I mean, I had a student and I wanted the student to spend more time going into the
deep, why, what's happening. And he told me, "But I will never win the competition with
such a paper." So we finally found a way how to win some competition, okay, by doing
something. But competitions are a two-edged sword; they help us one hand faster -- But
there is a guy at -- Where is he? I think he's at CMU. Hooker. He's an industrial engineer
or something like that. John Hooker I think. At CMU. And he wrote actually a paper years
ago "Algorithms versus heuristics: we got it all wrong." And he said we're focusing so
much on just improving runtime, we're not spending time trying to do [inaudible] how the
algorithm works internally. It's a very hollow experiment trying to figure out what is
happening, why does it work so fast. An our community somehow at this point does not
appreciate it. So people go where the community wants them to go which is, "Go faster,
young men. Go faster." Okay? Thank you very much.
[Audience applause]
Download