Download q ~r - UBC Computer Science

Document related concepts

Knapsack problem wikipedia , lookup

Lateral computing wikipedia , lookup

Computational complexity theory wikipedia , lookup

Transcript
snick

snack
CPSC 121: Models of Computation
2012 Summer Term 2
Proof (First Visit)
Steve Wolfman, based on notes by Patrice
Belleville, Meghan Allen and others
1
This work is licensed under a Creative Commons Attribution 3.0 Unported License.
Outline
• Prereqs, Learning Goals, and Quiz Notes
• Prelude: What Is Proof?
• Problems and Discussion
– “Prove Your Own Adventure”
– Why rules of inference? (advantages + tradeoffs)
– Onnagata, Explore and Critique
• Next Lecture Notes
3
Learning Goals: Pre-Class
By the start of class, you should be able to:
– Use truth tables to establish or refute the
validity of a rule of inference.
– Given a rule of inference and propositional
logic statements that correspond to the rule’s
premises, apply the rule to infer a new
statement implied by the original statements.
4
Learning Goals: In-Class
By the end of this unit, you should be able to:
– Explore the consequences of a set of
propositional logic statements by application of
equivalence and inference rules, especially in
order to massage statements into a desired form.
– Critique a propositional logic proof; that is,
determine whether or not is valid (and explain
why) and judge the applicability of its result to a
specific context.
– Devise and attempt multiple different, appropriate
strategies for proving a propositional logic
statement follows from a list of premises.
5
Where We Are in
The Big Stories
Theory
How do we model
computational systems?
Now: Continuing to build the
foundation for our proofs.
(We’ll get to the level of
proof we really need
starting with the next
unit.)
Hardware
How do we build devices to
compute?
Now: Taking a bit of a
vacation in lecture!
6
Motivating Problem:
Changing cond Branches
Assuming that a and c cannot both be true and that this function produces true:
;; Boolean Boolean Boolean Boolean -> Boolean
(define (rearrange-cond? a b c d)
(cond [a b]
[c d]
[else e]))
Prove that the following function also produces true:
;; Boolean Boolean Boolean Boolean -> Boolean
(define (rearrange-cond? a b c d)
(Reality check: you must be
(cond [c d]
able to do formal proofs. But,
[a b]
as with using equivalence laws
[else e]))
But first, prove these handy “lemmas”:
1. p  (q  r)  (p  q)  (p  r)
2. p  (q  r)  q  (p  r)
to reorganize code, in practice
you’ll often reason using proof
techniques but without a formal
7
proof.)
NOT a Quiz Note
~p
~(p v q)
a. This is valid by generalization (p  p v q).
b. This is valid because anytime ~p is true, ~(p
v q) is also true.
c. This is invalid by generalization (p  p v q).
d. This is invalid because when p = F and q =
T, ~p is true but ~(p v q) is false.
e. None of these.
11
What does this mean?
We can always substitute something
equivalent for a subexpression of a logical
expression.
We cannot always apply a rule of inference to
just a part of a logical statement.
Therefore, we will only apply rules of
inference to complete statements, no matter
what!
12
Outline
• Prereqs, Learning Goals, and Quiz Notes
• Prelude: What Is Proof?
• Problems and Discussion
– “Prove Your Own Adventure”
– Why rules of inference? (advantages + tradeoffs)
– Onnagata, Explore and Critique
• Next Lecture Notes
13
What is Proof?
A rigorous formal argument that
unequivocally demonstrates the
truth of a proposition, given the truth
of the proof’s premises.
Adapted from MathWorld: http://mathworld.wolfram.com/Proof.html
14
What is Proof?
A rigorous formal argument that
unequivocally demonstrates the
truth of a proposition (conclusion),
given the truth of the proof’s
premises.
Adapted from MathWorld: http://mathworld.wolfram.com/Proof.html
15
Problem: Meaning of Proof
Let’s say you prove the following:
Premise 1
Premise 2
⁞
Premise n
Conclusion
What does this mean?
a. Premises 1 to n are true
b. Conclusion is true
c. Premises 1 to n can be true
d. Conclusion can be true
e. None of the above
16
Tasting Powerful Proof:
Some Things We Might Prove
• We can build a “three-way switch” system with any
number of switches. 
• We can build a combinational circuit matching any
truth table. 
• We can build any digital logic circuit using nothing but
NOR gates. 
• We can sort a list by breaking it in half, and then
sorting and merging the halves.
• We can find the GCD of two numbers by finding the
GCD of the 2nd and the remainder when dividing the
1st by the 2nd.
• Is there any fair way to run elections?
• Are there problems that no program can solve?
17
Meanwhile...
What Is a Propositional Logic
Proof?
An argument in which (1) each line is a
propositional logic statement, (2) each
statement is a premise or follows unequivocally
by a previously established rule of inference
from the truth of previous statements, and (3)
the last statement is the conclusion.
A very constrained form of proof, but a good starting point.
Interesting proofs will usually come in less structured
18
packages than propositional logic proofs.
Outline
• Prereqs, Learning Goals, and Quiz Notes
• Prelude: What Is Proof?
• Problems and Discussion
– “Prove Your Own Adventure”
– Why rules of inference? (advantages + tradeoffs)
– Onnagata, Explore and Critique
• Next Lecture Notes
19
Prop Logic Proof Problem
To prove:
~(q  r)
(u  q)  s
~s  ~p___
 ~p
20
“Prove Your Own Adventure”
To prove:
~(q  r)
(u  q)  s
~s  ~p___
 ~p
Which step is the easiest to fill in?
1. ~(q  r)
Premise
2. (u  q)  s
Premise
3. ~s  ~p
Premise
[STEP A: near the start]
[STEP B: in the middle]
[STEP C: near the end]
[STEP D: last step]
21
D: Last Step
To prove:
~(q  r)
(u  q)  s
~s  ~p___
 ~p
1. ~(q  r)
2. (u  q)  s
3. ~s  ~p
...
~q  ~r
Why do we want to put ~p at the end?
~q
...
a. ~p is the proof’s conclusion
((u  q)  s) 
b. ~p is the end of the last premise
(s  (u  q))
c. every proof ends with ~p
d. None of these but some other reason
...
e.
None of these because we don’t
want it there
Premise
Premise
Premise
De Morgan’s (1)
Specialization (?)
Bicond (2)
~s
~p
Modus ponens (3,?)
22
C: Near the End
To prove:
~(q  r)
(u  q)  s
~s  ~p___
 ~p
Why do we want to put the blue
line/justification at the end?
a.
b.
c.
d.
e.
1. ~(q  r)
2. (u  q)  s
3. ~s  ~p
...
~q  ~r
~q
...
((u  q)  s) 
(s  (u  q))
...
~s  ~p is the last premise
~s  ~p is the only premise that
mentions ~s
~s  ~p is the only premise that
~s
mentions p
~p
None of these but some other reason
None of these b/c we don’t want it there
Premise
Premise
Premise
De Morgan’s (1)
Specialization (?)
Bicond (2)
Modus ponens (3,?)
23
A: Near the Start
To prove:
~(q  r)
(u  q)  s
~s  ~p___
 ~p
1. ~(q  r)
2. (u  q)  s
3. ~s  ~p
...
~q  ~r
Why do we want the blue
~q
lines/justifications?
...
((u  q)  s) 
a. ~(q  r) is the first premise
(s  (u  q))
b. ~(q  r) is a useless premise
c. We can’t work directly with a premise
...
d.
e.
with a negation “on the outside”
Neither the conclusion nor another
premise mentions r
None of these
Premise
Premise
Premise
De Morgan’s (1)
Specialization (?)
Bicond (2)
~s
~p
Modus ponens (3,?)
24
B: In the Middle
To prove:
~(q  r)
(u  q)  s
~s  ~p___
 ~p
1. ~(q  r)
2. (u  q)  s
3. ~s  ~p
...
~q  ~r
Why do we want the blue
~q
line/justification?
...
a. (u  q)  s is the only premise left ((u  q)  s) 
b. (u  q)  s is the only premise that
(s  (u  q))
mentions u
...
c. (u  q)  s is the only premise that
d.
e.
~s
mentions s without a negation
We have no rule to get directly from ~p
one side of a biconditional to the other
None of these
Premise
Premise
Premise
De Morgan’s (1)
Specialization (?)
Bicond (2)
Modus ponens (3,?)
25
Prop Logic Proof Strategies
•
•
•
•
•
Work backwards from the end
Play with alternate forms of premises
Identify and eliminate irrelevant information
Identify and focus on critical information
Alter statements’ forms so they’re easier to
work with
• “Step back” from the problem frequently to
think about assumptions you might have
wrong or other approaches you could take
And, if you don’t know that what you’re trying to prove follows...
34
switch from proving to disproving and back now and then.
Continuing From There
To prove:
~(q  r)
(u  q)  s
~s  ~p___
 ~p
Which direction of  goes in step 7?
a.
b.
c.
d.
e.
1. ~(q  r)
Premise
2. (u  q)  s Premise
3. ~s  ~p
Premise
4. ~q  ~r
De Morgan’s (1)
5. ~q
Specialization (4)
6. ((u  q)  s)  Bicond (2)
(s  (u  q))
7. ??????
Specialization (6)
(u  q)  s because the simple part
is on the right
~s
(u  q)  s because the other
~p
direction can’t establish ~s
s  (u  q) because the simple part
is on the left
s  (u  q) because the other
direction can’t establish ~s
None of these
...
Modus ponens (3,?)
35
Aside: What does it mean to
“work backward”?
Take the conclusion of the proof.
Use a rule in reverse to generate something
closer to a statement you already have (like
a premise).
38
Finishing Up (1 of 3)
To prove:
~(q  r)
(u  q)  s
~s  ~p___
 ~p
We know we needed ~(u  q) on
line 9 because that’s what we
created line 7 for!
Side Note: Can we work directly
with a statement with a negation
“on the outside”?
1. ~(q  r)
Premise
2. (u  q)  s Premise
3. ~s  ~p
Premise
4. ~q  ~r
De Morgan’s (1)
5. ~q
Specialization (4)
6. ((u  q)  s)  Bicond (2)
(s  (u  q))
7. s  (u  q) Specialization (6)
8. ????
????
9. ~(u  q)
10. ~s
????
Modus tollens (7, 9)
11. ~p
Modus ponens (3,10)
39
Finishing Up (1 of 3)
To prove:
~(q  r)
(u  q)  s
~s  ~p___
 ~p
We know we needed ~(u  q) on
line 9 because that’s what we
created line 7 for!
Now, how do we get ~(u  q)?
Working forward is tricky. Let’s
work backward. What is ~(u  q)
equivalent to?
1. ~(q  r)
Premise
2. (u  q)  s Premise
3. ~s  ~p
Premise
4. ~q  ~r
De Morgan’s (1)
5. ~q
Specialization (4)
6. ((u  q)  s)  Bicond (2)
(s  (u  q))
7. s  (u  q) Specialization (6)
8. ????
????
9. ~(u  q)
10. ~s
????
Modus tollens (7, 9)
11. ~p
Modus ponens (3,10)
40
Finishing Up (2 of 3)
To prove:
~(q  r)
(u  q)  s
~s  ~p___
 ~p
All that’s left is to get to ~u  ~q.
How do we do it?
1. ~(q  r)
Premise
2. (u  q)  s Premise
3. ~s  ~p
Premise
4. ~q  ~r
De Morgan’s (1)
5. ~q
Specialization (4)
6. ((u  q)  s)  Bicond (2)
(s  (u  q))
7. s  (u  q) Specialization (6)
8. ~u  ~q
????
9. ~(u  q)
10. ~s
De Morgan’s (8)
Modus tollens (7, 9)
11. ~p
Modus ponens (3,10)
41
Finishing Up (3 of 3)
To prove:
~(q  r)
(u  q)  s
~s  ~p___
 ~p
As usual in our slides, we made no
mistakes and reached no dead
ends. That’s not the way things
really go on difficult proofs!
Mistakes and dead ends are part of
the discovery process! So, step
back now and then and reconsider
your assumptions and approach!
1. ~(q  r)
Premise
2. (u  q)  s Premise
3. ~s  ~p
Premise
4. ~q  ~r
De Morgan’s (1)
5. ~q
Specialization (4)
6. ((u  q)  s)  Bicond (2)
(s  (u  q))
7. s  (u  q) Specialization (6)
8. ~u  ~q
Generalization (5)
9. ~(u  q)
10. ~s
De Morgan’s (8)
Modus tollens (7, 9)
11. ~p
Modus ponens (3,10)
42
Outline
• Prereqs, Learning Goals, and Quiz Notes
• Prelude: What Is Proof?
• Problems and Discussion
– “Prove Your Own Adventure”
– Why rules of inference? (advantages + tradeoffs)
– Onnagata, Explore and Critique
• Next Lecture Notes
43
Limitations of Truth Tables
Why not just use truth tables to prove
propositional logic theorems?
a. No reason; truth tables are enough.
b. Truth tables scale poorly to large problems.
c. Rules of inference and equivalence rules
can prove theorems that cannot be proven
with truth tables.
d. Truth tables require insight to use, while
rules of inference can be applied
mechanically.
44
Limitations of
Logical Equivalences
Why not use logical equivalences to prove that
the conclusions follow from the premises?
a. No reason; logical equivalences are enough.
b. Logical equivalences scale poorly to large
problems.
c. Rules of inference and truth tables can
prove theorems that cannot be proven with
logical equivalences.
d. Logical equivalences require insight to use,
while rules of inference can be applied
mechanically.
45
Outline
• Prereqs, Learning Goals, and Quiz Notes
• Prelude: What Is Proof?
• Problems and Discussion
– “Prove Your Own Adventure”
– Why rules of inference? (advantages + tradeoffs)
– Onnagata: Explore and Critique
• Next Lecture Notes
46
Preparatory Comments
When we apply logic to a domain, we give interpretations
for the logical symbols. That interpretation is where we can
argue things like “meaning”, “values”, and “moral right”.
Within the logical context, we argue purely on the basis of
structure and irrefutable manipulations of that structure.
And… statements contradict each other when, taken
together, they are logically equivalent to F. There is no
way for them to be simultaneously true.
47
Problem: Onnagata
Problem: Critique the following argument.
Premise 1: If women are too close to femininity to portray
women then men must be too close to masculinity to
play men, and vice versa.
Premise 2: And yet, if the onnagata are correct, women are
too close to femininity to portray women and yet men
are not too close to masculinity to play men.
Conclusion: Therefore, the
onnagata are incorrect, and
women are not too close to
femininity to portray women.
48
Contradictory Premises?
Do premises #1 and #2 contradict each other (i.e., is
(premise1  premise2) logically equivalent to F)?
a. Yes
b. No
c. Not enough information to tell.
50
Defining the Problem
Which definitions should we use?
a. w = women, m = men, f = femininity, m = masculinity, o =
onnagata, c = correct
b. w = women are too close to femininity, m = men are too
close to masculinity, pw = women portray women, pm =
men portray men, o = onnagata are correct
c. w = women are too close to femininity to portray women,
m = men are too close to masculinity to portray men,
o = onnagata are correct
d. None of these, but another set of definitions works well.
e. None of these, and this problem cannot be modeled well
with propositional logic.
51
Translating the Statements
Which of these is not an accurate translation
of one of the statements?
a. w  m
b. (w  m)  (m  w)
c. o  (w  ~m)
d. ~o  ~w
e. All of these are accurate translations.
52
Contradictory Premises?
So premises #1 and #2 are w  m and o  (w  ~m).
Do premises #1 and #2 contradict each other (i.e., is
(premise1  premise2) logically equivalent to F)?
a. Yes
b. No
c. Not enough information to tell.
53
Problem: Now, Explore!
Critique the argument by either:
(1) Proving it correct (and commenting on how
good the propositional logic model’s fit to the
context is).
How do we prove prop logic statements?
(2) Showing that it is an invalid argument.
How do we show an argument is invalid?
(Remember the quiz!)
54
Outline
• Prereqs, Learning Goals, and Quiz Notes
• Prelude: What Is Proof?
• Problems and Discussion
– “Prove Your Own Adventure”
– Why rules of inference? (advantages + tradeoffs)
– Onnagata, Explore and Critique
• Next Lecture Notes
55
Next Lecture Learning Goals:
Pre-Class
By the start of class, you should be able to:
– Evaluate the truth of statements that include
predicates applied to particular values.
– Show predicate logic statements are true by
enumerating examples (i.e., all examples in the
domain for a universal or one for an existential).
– Show predicate logic statements are false by
enumerating counterexamples (i.e., one
counterexample for universals or all in the domain
for existentials).
– Translate between statements in formal predicate
logic notation and equivalent statements in
closely matching informal language (i.e., informal
statements with clear and explicitly stated
quantifiers).
56
Next Lecture Prerequisites
Review (Epp 4th ed) Chapter 2 and be able
to solve any Chapter 2 exercise.
Read Sections 3.1 and 3.3 (skipping the
“Negation” sections in 3.3)
Complete the open-book, untimed quiz on
Vista.
57
Motivating Problem:
Changing cond Branches
Assuming that a and c cannot both be true and that this function produces true:
;; Boolean Boolean Boolean Boolean -> Boolean
(define (rearrange-cond? a b c d)
(cond [a b]
[c d]
[else e]))
Prove that the following function also produces true:
;; Boolean Boolean Boolean Boolean -> Boolean
(define (rearrange-cond? a b c d)
(cond [c d]
[a b]
[else e]))
First, prove these handy “lemmas”:
1. p  (q  r)  (p  q)  (p  r)58
2. p  (q  r)  q  (p  r)
Motivating Problem:
Changing cond Branches
Assuming that a and c cannot both be true, and that this function produces true:
;; Boolean Boolean Boolean Boolean -> Boolean
(define (rearrange-cond? a b c d)
(cond [a b]
[c d]
[else e]))
We leave the lemmas as an exercise:
1. p  (q  r)  (p  q)  (p  r)
2. p  (q  r)  q  (p  r)
In prop logic:
1. ~(a  b)
2. (a  b)  (~a  ((c  d)  (~c  e)))
3. …
4. (c  d)  (~c  ((a  b)  (~a  e)))
We’ll use our “heuristics” to
work forward and backward
until we solve the problem.
premise
premise
target conclusion
59
Motivating Problem:
Changing cond Branches
In prop logic:
1. ~(a  c)
2. (a  b)  (~a  ((c  d)  (~c  e)))
3. …
4. (c  d)
5. (~c  ((a  b)  (~a  e)))
6. (c  d)  (~c  ((a  b)  (~a  e)))
We start by working backward;
how de we prove x  y? Well,
one way is to prove x and also
prove y. We’ll break those into
two separate subproblems!
premise
premise
“subgoal”
“subgoal”
by CONJ on 4, 5
Side note: we’ll use the two statements
you proved as exercises as “lemmas”:
rules we proved for use in this proof.
(Want to use them on an assignment /
exam? Prove them there!)
Lemmas:
1. p  (q  r)  (p  q)  (p  r) 60
2. p  (q  r)  q  (p  r)
Motivating Problem:
Changing cond Branches
In prop logic:
1. ~(a  c)
2. (a  b)  (~a  ((c  d)  (~c  e)))
3. …
4. (c  d)
5. (~c  (a  b))  (~c  (~a  e)))
6. (~c  ((a  b)  (~a  e)))
7. (c  d)  (~c  ((a  b)  (~a  e)))
premise
premise
“subgoal”
“subgoal”
Lemma 1 on 5
by CONJ on 4, 6
The second of these subgoals is
still huge. We decided to break
it into two pieces (and that’s
why we went off and proved
Lemma 1).
Lemmas:
1. p  (q  r)  (p  q)  (p  r)
2. p  (q  r)  q  (p  r)
61
Motivating Problem:
Changing cond Branches
In prop logic:
1. ~(a  c)
2. (a  b)  (~a  ((c  d)  (~c  e)))
3. …
4. (c  d)
5. ~c  (a  b)
6. ~c  (~a  e)
7. (~c  (a  b))  (~c  (~a  e)))
8. (~c  ((a  b)  (~a  e)))
9. (c  d)  (~c  ((a  b)  (~a  e)))
premise
premise
“subgoal”
“subgoal”
“subgoal”
by CONJ on 5, 6
Lemma 1 on 7
by CONJ on 4, 8
Now, we can attack those two
pieces separately (which feels like it
might be the wrong approach to
me… but worth a try!)
Lemmas:
1. p  (q  r)  (p  q)  (p  r)
2. p  (q  r)  q  (p  r)
62
Motivating Problem:
Changing cond Branches
In prop logic:
1. ~(a  c)
2. (a  b)  (~a  ((c  d)  (~c  e)))
3. ~a  ~c
4. …
5. (c  d)
6. ~c  (a  b)
7. ~c  (~a  e)
8. (~c  (a  b))  (~c  (~a  e)))
9. (~c  ((a  b)  (~a  e)))
10. (c  d)  (~c  ((a  b)  (~a  e)))
premise
premise
by DM on 1
“subgoal”
“subgoal”
“subgoal”
by CONJ on 6, 7
Lemma 1 on 8
by CONJ on 5, 9
I’m out of ideas at the end. I switch to the beginning
and play around with premises. (Foreshadowing: I
didn’t figure out what to do with this premise until
near the end.)
Lemmas:
1.
2.
p  (q  r)  (p  q)  (p  r)
p  (q  r)  q  (p  r)
63
Motivating Problem:
Changing cond Branches
In prop logic:
1. ~(a  c)
2. (a  b)  (~a  ((c  d)  (~c  e)))
3. ~a  ~c
4. a  b
5. …
6. (c  d)
7. ~c  (a  b)
8. ~c  (~a  e)
9. (~c  (a  b))  (~c  (~a  e)))
10. (~c  ((a  b)  (~a  e)))
11. (c  d)  (~c  ((a  b)  (~a  e)))
premise
premise
by DM on 1
by SPEC on 2
“subgoal”
“subgoal”
“subgoal”
by CONJ on 7, 8
Lemma 1 on 9
by CONJ on 6, 10
Let’s try the other premise.
Lemmas:
1. p  (q  r)  (p  q)  (p  r)
2. p  (q  r)  q  (p  r)
64
Motivating Problem:
Changing cond Branches
In prop logic:
1. ~(a  c)
2. (a  b)  (~a  ((c  d)  (~c  e)))
3. ~a  ~c
4. a  b
5. ~a  ((c  d)  (~c  e))
6. …
7. (c  d)
8. ~c  (a  b)
9. ~c  (~a  e)
10. (~c  (a  b))  (~c  (~a  e)))
11. (~c  ((a  b)  (~a  e)))
12. (c  d)  (~c  ((a  b)  (~a  e)))
premise
premise
by DM on 1
by SPEC on 2
by SPEC on 2
“subgoal”
“subgoal”
“subgoal”
by CONJ on 8, 9
Lemma 1 on 10
by CONJ on 7, 11
Continuing with that premise…
Hey! We can use our Lemma again!
Lemmas:
1. p  (q  r)  (p  q)  (p  r)
2. p  (q  r)  q  (p  r)
65
Motivating Problem:
Changing cond Branches
In prop logic:
1. ~(a  c)
2. (a  b)  (~a  ((c  d)  (~c  e)))
3. ~a  ~c
4. a  b
5. ~a  ((c  d)  (~c  e))
6. (~a  (c  d))  (~a  (~c  e))
7. …
8. (c  d)
9. ~c  (a  b)
10. ~c  (~a  e)
11. (~c  (a  b))  (~c  (~a  e)))
12. (~c  ((a  b)  (~a  e)))
13. (c  d)  (~c  ((a  b)  (~a  e)))
premise
premise
Continuing with
by DM on 1
that premise…
by SPEC on 2
by SPEC on 2
by Lemma 1 on 5
“subgoal”
“subgoal”
“subgoal”
by CONJ on 9, 10
Lemma 1 on 11
by CONJ on 8, 12
Lemmas:
1. p  (q  r)  (p  q)  (p  r)
2. p  (q  r)  q  (p  r)
66
Motivating Problem:
Changing cond Branches
In prop logic:
1. ~(a  c)
2. (a  b)  (~a  ((c  d)  (~c  e)))
3. ~a  ~c
4. a  b
5. ~a  ((c  d)  (~c  e))
6. (~a  (c  d))  (~a  (~c  e))
7. ~a  (c  d)
8. …
9. (c  d)
10. ~c  (a  b)
11. ~c  (~a  e)
12. (~c  (a  b))  (~c  (~a  e)))
13. (~c  ((a  b)  (~a  e)))
14. (c  d)  (~c  ((a  b)  (~a  e)))
premise
premise
by DM on 1
by SPEC on 2
by SPEC on 2
by Lemma 1 on 5
by SPEC on 6
Continuing with
that premise…
“subgoal”
“subgoal”
“subgoal”
by CONJ on 10, 11
Lemma 1 on 12
by CONJ on 9, 13
67
Lemma 2: p  (q  r)  q  (p  r)
Motivating Problem:
Changing cond Branches
In prop logic:
1. ~(a  c)
2. (a  b)  (~a  ((c  d)  (~c  e)))
3. ~a  ~c
4. a  b
5. ~a  ((c  d)  (~c  e))
6. (~a  (c  d))  (~a  (~c  e))
7. ~a  (c  d)
8. ~a  (~c  e)
9. …
10. (c  d)
11. ~c  (a  b)
12. ~c  (~a  e)
13. (~c  (a  b))  (~c  (~a  e)))
14. (~c  ((a  b)  (~a  e)))
15. (c  d)  (~c  ((a  b)  (~a  e)))
premise
premise
by DM on 1
by SPEC on 2
by SPEC on 2
by Lemma 1 on 5
by SPEC on 6
by SPEC on 6
Continuing with
that premise…
AHA!!
“subgoal”
We treated
“subgoal”
connecting these
“subgoal”
as its own problem
by CONJ on 11, 12
Lemma 1 on 13 and came up with
by CONJ on 10, 14
Lemma 2!
68
Lemma 2: p  (q  r)  q  (p  r)
Motivating Problem:
Changing cond Branches
In prop logic:
1. ~(a  c)
2. (a  b)  (~a  ((c  d)  (~c  e)))
3. ~a  ~c
4. a  b
5. ~a  ((c  d)  (~c  e))
6. (~a  (c  d))  (~a  (~c  e))
7. ~a  (c  d)
8. ~a  (~c  e)
9. …
10. (c  d)
11. ~c  (a  b)
12. ~c  (~a  e)
13. (~c  (a  b))  (~c  (~a  e)))
14. (~c  ((a  b)  (~a  e)))
15. (c  d)  (~c  ((a  b)  (~a  e)))
premise
premise
by DM on 1
by SPEC on 2
by SPEC on 2
by Lemma 1 on 5
by SPEC on 6
by SPEC on 6
Lemma 2 let’s us
connect these
directly!
Now what. Let’s
pause, remind
ourselves what
“subgoal”
our (sub)goals
“subgoal”
are, and look at
by Lemma 2 on 8
what we have.
by CONJ on 11, 12
Lemma 1 on 13
by CONJ on 10, 14
69
Lemma 2: p  (q  r)  q  (p  r)
Motivating Problem:
Changing cond Branches
In prop logic:
1. ~(a  c)
2. (a  b)  (~a  ((c  d)  (~c  e)))
3. ~a  ~c
4. a  b
5. ~a  ((c  d)  (~c  e))
6. (~a  (c  d))  (~a  (~c  e))
7. ~a  (c  d)
8. ~a  (~c  e)
9. …
10. (c  d)
11. ~c  (a  b)
12. ~c  (~a  e)
13. (~c  (a  b))  (~c  (~a  e)))
14. (~c  ((a  b)  (~a  e)))
15. (c  d)  (~c  ((a  b)  (~a  e)))
premise
premise
by DM on 1
by SPEC on 2
by SPEC on 2
by Lemma 1 on 5
by SPEC on 6
by SPEC on 6
Hmm..
“subgoal”
“subgoal”
by Lemma 2 on 8
by CONJ on 11, 12
Lemma 1 on 13
by CONJ on 10, 14
How do we do
something with
this? Again, we
treated this as a
separate
problem: 70
Lemma 2: p  (q  r)  q  (p  r)
Motivating Problem:
Changing cond Branches
Subproblem:
1.
ab
2. …
3. ~c  (a  b)
premise
“subgoal”
This time, we’ll
show you what we
did. We broke out
the goal and
starting point and
turned them into a
whole other proof
problem!
Now we do our
usual. Get rid of
, work
backward, work
forward… 71
Motivating Problem:
Changing cond Branches
Subproblem:
1.
ab
2. ~a  b
3. …
4. c  ~a  b
5. c  (a  b)
6. ~c  (a  b)
premise
by IMP on 1
“subgoal”
by IMP on 4
by IMP on 5
That’s about as far as dumping  can take us.
But, look at step 2 and step 4. What’s the difference?
72
Motivating Problem:
Changing cond Branches
Subproblem:
1.
ab
2. ~a  b
3. c  ~a  b
4. c  (a  b)
5. ~c  (a  b)
premise
by IMP on 1
by GEN on 2
by IMP on 3
by IMP on 4
Great! We can always OR on something else.
We did it!
Let’s patch it back into the original proof.
But… could we have done it more easily? Question your solutions!
(Hint: check out line 4. How can you get there?)
73
Motivating Problem:
Changing cond Branches
In prop logic:
1. ~(a  c)
2. (a  b)  (~a  ((c  d)  (~c  e)))
3. ~a  ~c
4. a  b
5. ~a  ((c  d)  (~c  e))
6. (~a  (c  d))  (~a  (~c  e))
7. ~a  (c  d)
8. ~a  (~c  e)
9. …
10. (c  d)
11. c  (a  b)
12. ~c  (a  b)
13. ~c  (~a  e)
14. (~c  (a  b))  (~c  (~a  e)))
15. (~c  ((a  b)  (~a  e)))
16. (c  d)  (~c  ((a  b)  (~a  e)))
premise
premise
by DM on 1
by SPEC on 2
by SPEC on 2
by Lemma 1 on 5
by SPEC on 6
by SPEC on 6
“subgoal”
“subgoal”
by IMP on 11
by Lemma 2 on 8
by CONJ on 12, 13
Lemma 1 on 14
by CONJ on 10, 15
Patching in “step
4” of the
previous proof.
Can it get us
back to step 4 of
this proof?
74
Motivating Problem:
Changing cond Branches
In prop logic:
1. ~(a  c)
2. (a  b)  (~a  ((c  d)  (~c  e)))
3. ~a  ~c
4. a  b
5. ~a  ((c  d)  (~c  e))
6. (~a  (c  d))  (~a  (~c  e))
7. ~a  (c  d)
8. ~a  (~c  e)
9. …
10. (c  d)
11. c  (a  b)
12. ~c  (a  b)
13. ~c  (~a  e)
14. (~c  (a  b))  (~c  (~a  e)))
15. (~c  ((a  b)  (~a  e)))
16. (c  d)  (~c  ((a  b)  (~a  e)))
premise
premise
by DM on 1
by SPEC on 2
by SPEC on 2
by Lemma 1 on 5
by SPEC on 6
by SPEC on 6
Sure! In one
step!
“subgoal”
Now what? Only
by GEN on 4
one subgoal left.
by IMP on 11
How does it
by Lemma 2 on 8
connect to the
by CONJ on 12, 13
top of the proof?
Lemma 1 on 14
75
by CONJ on 10, 15
Motivating Problem:
Changing cond Branches
In prop logic:
1. ~(a  c)
2. (a  b)  (~a  ((c  d)  (~c  e)))
3. ~a  ~c
4. a  b
5. ~a  ((c  d)  (~c  e))
6. (~a  (c  d))  (~a  (~c  e))
7. ~a  (c  d)
8. ~a  (~c  e)
9. …
10. (c  d)
11. c  (a  b)
12. ~c  (a  b)
13. ~c  (~a  e)
14. (~c  (a  b))  (~c  (~a  e)))
15. (~c  ((a  b)  (~a  e)))
16. (c  d)  (~c  ((a  b)  (~a  e)))
premise
premise
by DM on 1
by SPEC on 2
by SPEC on 2
by Lemma 1 on 5
by SPEC on 6 Hmm…
by SPEC on 6
That works if a is
false.
“subgoal”
by GEN on 4
by IMP on 11 Can we make a
by Lemma 2 onfalse?
8
by CONJ on 12, 13
Lemma 1 on 14What if a is true?
76
by CONJ on 10, 15
Motivating Problem:
Changing cond Branches
In prop logic:
1. ~(a  c)
2. (a  b)  (~a  ((c  d)  (~c  e)))
3. ~a  ~c
4. a  b
5. ~a  ((c  d)  (~c  e))
6. (~a  (c  d))  (~a  (~c  e))
7. ~a  (c  d)
8. ~a  (~c  e)
9. …
10. (c  d)
11. c  (a  b)
12. ~c  (a  b)
13. ~c  (~a  e)
14. (~c  (a  b))  (~c  (~a  e)))
15. (~c  ((a  b)  (~a  e)))
16. (c  d)  (~c  ((a  b)  (~a  e)))
I looked around for a
way to establish ~a
but couldn’t. So, I
checked what
happens if a is true.
premise
premise
by DM on 1
by SPEC on 2
by SPEC on 2
by Lemma 1 on 5
by SPEC on 6
by SPEC on 6
If a is true,
then c isn’t.
If c’s not true,
then c  d is true.
“subgoal”
by GEN on 4
by IMP on 11
by Lemma 2 on 8 Let’s put
by CONJ on 12, 13 logic!
Lemma 1 on 14
by CONJ on 10, 15
that in
77
Motivating Problem:
Changing cond Branches
In prop logic:
1. ~(a  c)
2. (a  b)  (~a  ((c  d)  (~c  e)))
3. ~a  ~c
4. ~a  ~c  d
5. a  b
6. ~a  ((c  d)  (~c  e))
7. (~a  (c  d))  (~a  (~c  e))
8. ~a  (c  d)
9. ~a  (~c  e)
10. …
11. (c  d)
12. c  (a  b)
13. ~c  (a  b)
14. ~c  (~a  e)
15. (~c  (a  b))  (~c  (~a  e)))
16. (~c  ((a  b)  (~a  e)))
17. (c  d)  (~c  ((a  b)  (~a  e)))
premise
premise
by DM on 1
by GEN on 3
by SPEC on 2
by SPEC on 2
by Lemma 1 on 6
by SPEC on 7
by SPEC on 7
“subgoal”
by GEN on 5
by IMP on 12
by Lemma 2 on 9
by CONJ on 13, 14
Lemma 1 on 15
by CONJ on 11, 16
We need to
“fabricate” a d.
The rest will be
just IMP
applications.
78
Motivating Problem:
Changing cond Branches
In prop logic:
1. ~(a  c)
2.
(a  b)  (~a  ((c  d)  (~c  e)))
3.
~a  ~c
4.
~a  ~c  d
5.
~a  (c  d)
6.
a  (c  d)
7.
ab
8.
~a  ((c  d)  (~c  e))
9.
(~a  (c  d))  (~a  (~c  e))
10.
~a  (c  d)
11.
~a  (~c  e)
12.
…
13.
(c  d)
14.
c  (a  b)
15.
~c  (a  b)
16.
~c  (~a  e)
17.
(~c  (a  b))  (~c  (~a  e)))
18.
(~c  ((a  b)  (~a  e)))
19.
(c  d)  (~c  ((a  b)  (~a  e)))
premise
premise
by DM on 1
by GEN on 3
by IMP on 4
by IMP on 5
by SPEC on 2
by SPEC on 2
by Lemma 1 on 8
by SPEC on 9
by SPEC on 9
“subgoal”
by GEN on 7
by IMP on 14
by Lemma 2 on 11
by CONJ on 15, 16
Lemma 1 on 17
by CONJ on 13, 18
Now, we put
these together,
and we’re done!
79
Motivating Problem:
Changing cond Branches
In prop logic:
1. ~(a  c)
2.
(a  b)  (~a  ((c  d)  (~c  e)))
3.
~a  ~c
4.
~a  ~c  d
5.
~a  (c  d)
6.
a  (c  d)
7.
ab
8.
~a  ((c  d)  (~c  e))
9.
(~a  (c  d))  (~a  (~c  e))
10.
~a  (c  d)
11.
(~a  a)  (c  d)
12.
T  (c  d)
13.
(c  d)
14.
~a  (~c  e)
15.
c  (a  b)
16.
~c  (a  b)
17.
~c  (~a  e)
18.
(~c  (a  b))  (~c  (~a  e)))
19.
(~c  ((a  b)  (~a  e)))
20.
(c  d)  (~c  ((a  b)  (~a  e)))
premise
premise
by DM on 1
by GEN on 3
by IMP on 4
by IMP on 5
by SPEC on 2
by SPEC on 2
by Lemma 1 on 8
by SPEC on 9
by CASE on 10, 6
by NEG on 11
by M.PON on 12, T
by SPEC on 9
by GEN on 7
by IMP on 15
by Lemma 2 on 14
by CONJ on 16, 17
Lemma 1 on 18
by CONJ on 13, 19
QED!! Whew!
(At step 14, no need
to separately
establish T. T is a
“tautology”; it’s
always true!)
80
Motivating Problem:
Changing cond Branches
In prop logic:
1. ~(a  c)
2.
(a  b)  (~a  ((c  d)  (~c  e)))
…
20. (c  d)  (~c  ((a  b)  (~a  e)))
premise
premise
…
by CONJ on 13, 19
So, what did that prove?
Technically: that if the conditions on the cond branches are
mutually exclusive (cannot both be true at the same time) and if
the result of the original version was true, then the version with
switched cond branches will also be true.
In fact, if you go back and think carefully about the proof, we can
conclude something much bigger without too much more work:
“If two conditions on neighboring cond branches are mutually
exclusive (and have no ‘side effects’), we can switch those
branches without changing the meaning of the program.”
81
Motivating Problem:
Changing cond Branches
In prop logic:
1. ~(a  c)
2.
(a  b)  (~a  ((c  d)  (~c  e)))
…
20. (c  d)  (~c  ((a  b)  (~a  e)))
premise
premise
…
by CONJ on 13, 19
For reference: fruitless directions I tried include changing a  b to ~a 
b, attempting to form the negation of c  d, and a bunch of other false
starts… all of which helped me build pieces I needed for my final
strategy!
You should have lots of scratchwork if you do a problem this large.
82
Motivating Problem:
Changing cond Branches
In prop logic:
1. ~(a  c)
2.
(a  b)  (~a  ((c  d)  (~c  e)))
…
20. (c  d)  (~c  ((a  b)  (~a  e)))
premise
premise
…
by CONJ on 13, 19
Exercise: We can translate code like: (if a b c)
To logic like this instead of our usual: (a  b)  (~a  c)
Prove that they’re equivalent.
Then, figure out how a cond would similarly translate.
Finally, go back and redo some of our proofs (like the one we just did)
with the new representation.
83
snick

snack
More problems to solve...
(on your own or if we have time)
84
Problem:
Who put the cat in the piano?
Hercule Poirot has been asked by Lord Martin to find out who closed
the lid of his piano after dumping the cat inside. Poirot interrogates
two of the servants, Akilna and Eiluj. One and only one of them put
the cat in the piano. Plus, one always lies and one never lies.
Akilna says:
– Eiluj did it.
– Urquhart paid her $50 to help him study.
Eiluj says:
– I did not put the cat in the piano.
– Urquhart gave me less than $60 to help him study.
Problem: Whodunit?
85
Problem: Automating Proof
Given:
pq
p  ~q  r
(r  ~p)  s  ~p
~r
Problem: What’s everything you can prove?
86
Problem: Canonical Form
A common form for propositional logic
expressions, called “disjunctive normal
form” or “sum of products form”, looks like
this:
(a  ~b  d)  (~c)  (~a  ~d)  (b  c  d
 e)  ...
In other words, each clause is built up of
simple propositions or their negations,
ANDed together, and all the clauses are
87
ORed together.
Problem: Canonical Form
Problem: Prove that any propositional logic
statement can be expressed in disjunctive
normal form.
88
Mystery #1
Theorem:
p  q
q  (r  s)
~r  (~t  u)
p  t
 u
Is this argument valid or invalid?
89
Is whatever u means true?
Mystery #2
Theorem:
p
p  r
p  (q  ~r)
~q  ~s
 s
Is this argument valid or invalid?
90
Is whatever s means true?
Mystery #3
Theorem:
q
p  m
q  (r  m)
m  q
 p
Is this argument valid or invalid?
91
Is whatever p means true?
Practice Problem (for you!)
Prove (with truth tables) that hypothetical
syllogism is a valid rule of inference:
p  q
q  r
 p  r
92
Practice Problem (for you!)
Prove (with truth tables) whether this is a
valid rule of inference:
q
p  q
 p
93
Practice Problem (for you!)
Are the following arguments valid?
This apple is green.
If an apple is green, it is sour.
 This apple is sour.
Sam is not barking.
If Sam is barking, then Sam is a dog.
 Sam is not a dog.
94
Practice Problem (for you!)
Are the following arguments valid?
This shirt is comfortable.
If a shirt is comfortable, it’s chartreuse.
 This shirt is chartreuse.
It’s not cold.
If it’s January, it’s cold.
 It’s not January.
95
Is valid (as a term) the same as true or correct (as English ideas)?
More Practice
Meghan is rich.
If Meghan is rich, she will pay your tuition.
 Meghan will pay your tuition.
Is this argument valid?
Should you bother sending in a check for your
96
tuition, or is Meghan going to do it?
Problem:
Equivalent Java Programs
Problem: How many valid Java programs
are there that do exactly the same thing?
97
Resources: Statements
From the Java language
specification, a
standard statement is
one that can be:
98
http://java.sun.com/docs/books/jls/third_edition/html/statements.html#14.5
Resources: Statements
From the Java language
specification, a
standard statement is
one that can be:
99
http://java.sun.com/docs/books/jls/third_edition/html/statements.html#14.5
What’s a “Block”?
Back to the Java Language Specification:
100
http://java.sun.com/docs/books/jls/third_edition/html/statements.html#14.2
What’s a “Block”?
A block is a sequence of statements, local
class declarations and local variable
declaration statements within braces.
…
A block is executed by executing each of the
local variable declaration statements and
other statements in order from first to last
(left to right).
101
What’s an “EmptyStatement”
Back to the Java Language Specification:
http://java.sun.com/docs/books/jls/third_edition/html/statements.html#14.6
102
Problem: Validity of Arguments
Problem: If an argument is valid, does that
mean its conclusion is true? If an
argument is invalid, does that mean its
conclusion is false?
103
Problem: Proofs and
Contradiction
Problem: Imagine I assume premises x, y,
and z and prove F. What can I conclude
(besides “false is true if x, y, and z are
true”)?
104
Proof Critique
Theorem: √2 is irrational
Proof: Assume √2 is rational, then...
There’s some integers p and q such that √2 = p/q, and
p and q share no factors.
2 = (p/q)2 = p2/q2 and p2 = 2q2
p2 is divisible by 2; so p is divisible by 2.
There’s some integer k such that p = 2k.
q2 = p2/2 = (2k)2/2 = 2k2; so q2 and q are divisible by 2.
p and q do share the factor 2, a contradiction!
√2 is irrational. QED
105
Problem: Comparing Deduction
and Equivalence Rules
Problem: How are logical equivalence rules
and deduction rules similar and different,
in form, function, and the means by which
we establish their truth?
106
Problem: Evens and Integers
Problem: Which are there more of, (a)
positive even integers, (b) positive
integers, or (c) neither?
107