Chapter 3: Exercises

Prove the following identities, replacing the "sorry" placeholders with actual proofs.

variable (
p: Prop
p
q: Prop
q
r: Prop
r
:
Prop: Type
Prop
) -- commutativity of ∧ and ∨
Warning: declaration uses 'sorry'
:
p: Prop
p
q: Prop
q
q: Prop
q
p: Prop
p
:=
sorry: p ∧ q ↔ q ∧ p
sorry
Warning: declaration uses 'sorry'
:
p: Prop
p
q: Prop
q
q: Prop
q
p: Prop
p
:=
sorry: p ∨ q ↔ q ∨ p
sorry
-- associativity of ∧ and ∨
Warning: declaration uses 'sorry'
: (
p: Prop
p
q: Prop
q
)
r: Prop
r
p: Prop
p
(
q: Prop
q
r: Prop
r
) :=
sorry: (p ∧ q) ∧ r ↔ p ∧ q ∧ r
sorry
Warning: declaration uses 'sorry'
: (
p: Prop
p
q: Prop
q
)
r: Prop
r
p: Prop
p
(
q: Prop
q
r: Prop
r
) :=
sorry: (p ∨ q) ∨ r ↔ p ∨ q ∨ r
sorry
-- distributivity
Warning: declaration uses 'sorry'
:
p: Prop
p
(
q: Prop
q
r: Prop
r
) (
p: Prop
p
q: Prop
q
) (
p: Prop
p
r: Prop
r
) :=
sorry: p ∧ (q ∨ r) ↔ p ∧ q ∨ p ∧ r
sorry
Warning: declaration uses 'sorry'
:
p: Prop
p
(
q: Prop
q
r: Prop
r
) (
p: Prop
p
q: Prop
q
) (
p: Prop
p
r: Prop
r
) :=
sorry: p ∨ q ∧ r ↔ (p ∨ q) ∧ (p ∨ r)
sorry
-- other properties
Warning: declaration uses 'sorry'
: (
p: Prop
p
(
q: Prop
q
r: Prop
r
)) (
p: Prop
p
q: Prop
q
r: Prop
r
) :=
sorry: p → q → r ↔ p ∧ q → r
sorry
Warning: declaration uses 'sorry'
: ((
p: Prop
p
q: Prop
q
)
r: Prop
r
) (
p: Prop
p
r: Prop
r
) (
q: Prop
q
r: Prop
r
) :=
sorry: p ∨ q → r ↔ (p → r) ∧ (q → r)
sorry
Warning: declaration uses 'sorry'
: ¬(
p: Prop
p
q: Prop
q
) ¬
p: Prop
p
¬
q: Prop
q
:=
sorry: ¬(p ∨ q) ↔ ¬p ∧ ¬q
sorry
Warning: declaration uses 'sorry'
: ¬
p: Prop
p
¬
q: Prop
q
¬(
p: Prop
p
q: Prop
q
) :=
sorry: ¬p ∨ ¬q → ¬(p ∧ q)
sorry
Warning: declaration uses 'sorry'
: ¬(
p: Prop
p
¬
p: Prop
p
) :=
sorry: ¬(p ∧ ¬p)
sorry
Warning: declaration uses 'sorry'
:
p: Prop
p
¬
q: Prop
q
¬(
p: Prop
p
q: Prop
q
) :=
sorry: p ∧ ¬q → ¬(p → q)
sorry
Warning: declaration uses 'sorry'
: ¬
p: Prop
p
(
p: Prop
p
q: Prop
q
) :=
sorry: ¬p → p → q
sorry
Warning: declaration uses 'sorry'
: (¬
p: Prop
p
q: Prop
q
) (
p: Prop
p
q: Prop
q
) :=
sorry: ¬p ∨ q → p → q
sorry
Warning: declaration uses 'sorry'
:
p: Prop
p
False: Prop
False
p: Prop
p
:=
sorry: p ∨ False ↔ p
sorry
Warning: declaration uses 'sorry'
:
p: Prop
p
False: Prop
False
False: Prop
False
:=
sorry: p ∧ False ↔ False
sorry
Warning: declaration uses 'sorry'
: (
p: Prop
p
q: Prop
q
) (¬
q: Prop
q
¬
p: Prop
p
) :=
sorry: (p → q) → ¬q → ¬p
sorry

Prove the following identities, replacing the "sorry" placeholders with actual proofs. These require classical reasoning.

variable (
p: Prop
p
q: Prop
q
r: Prop
r
:
Prop: Type
Prop
)
Warning: declaration uses 'sorry'
: (
p: Prop
p
q: Prop
q
r: Prop
r
) ((
p: Prop
p
q: Prop
q
) (
p: Prop
p
r: Prop
r
)) :=
sorry: (p → q ∨ r) → (p → q) ∨ (p → r)
sorry
Warning: declaration uses 'sorry'
: ¬(
p: Prop
p
q: Prop
q
) ¬
p: Prop
p
¬
q: Prop
q
:=
sorry: ¬(p ∧ q) → ¬p ∨ ¬q
sorry
Warning: declaration uses 'sorry'
: ¬(
p: Prop
p
q: Prop
q
)
p: Prop
p
¬
q: Prop
q
:=
sorry: ¬(p → q) → p ∧ ¬q
sorry
Warning: declaration uses 'sorry'
: (
p: Prop
p
q: Prop
q
) (¬
p: Prop
p
q: Prop
q
) :=
sorry: (p → q) → ¬p ∨ q
sorry
Warning: declaration uses 'sorry'
: (¬
q: Prop
q
¬
p: Prop
p
) (
p: Prop
p
q: Prop
q
) :=
sorry: (¬q → ¬p) → p → q
sorry
Warning: declaration uses 'sorry'
:
p: Prop
p
¬
p: Prop
p
:=
sorry: p ∨ ¬p
sorry
Warning: declaration uses 'sorry'
: (((
p: Prop
p
q: Prop
q
)
p: Prop
p
)
p: Prop
p
) :=
sorry: ((p → q) → p) → p
sorry

Prove ¬(p ↔ ¬p) without using classical logic.