Zulip Chat Archive
Stream: new members
Topic: propext
Daniel Fabian (Aug 17 2019 at 09:42):
Good morning, I'm working my way through the tutorial and I've stumbled across something I don't get.
In chapter 11.2, you are encouraged to prove a certain theorem without propext, or more specifically, to prove that it's equivalent to the axiom.
Here's the proof:
theorem thm₃ : ((a ↔ b) → p a → p b) ↔ ((a ↔ b) → a = b) := begin apply iff.intro, intros h hab, rw [hab], intros ax h hpa, from ax h ▸ hpa end
I'm fairly confident, I don't use propext anywhere (it's being added as an assumption in of the two iff branches. But
#print axioms thm₃
claims I'm using propext. And when I drill down into it, it looks like using substitution is what causes the message.
Any explanation?
Joe (Aug 17 2019 at 09:53):
You can prove propext
directly using rewrite, so I guess rw
must assume propext
.
theorem propext' : (a ↔ b) → a = b := λh, by rw h
Joe (Aug 17 2019 at 09:53):
Also the theorem you want to prove should be
theorem thm₃ : (∀ (p : Prop → Prop), (a ↔ b) → p a → p b) ↔ ((a ↔ b) → a = b) :=
Joe (Aug 17 2019 at 09:57):
theorem thm₃ : (∀ {p : Prop → Prop}, (a ↔ b) → p a → p b) ↔ ((a ↔ b) → a = b) := iff.intro (λh hab, h hab rfl) (λh p hab ha, (h hab) ▸ ha)
Daniel Fabian (Aug 17 2019 at 09:58):
well, I have a variable p : Prop -> Prop
Mario Carneiro (Aug 17 2019 at 09:59):
the version you stated isn't true
Mario Carneiro (Aug 17 2019 at 09:59):
if p
is always true then the LHS is trivial
Mario Carneiro (Aug 17 2019 at 10:00):
it is important that the quantifier appear on the LHS as in Joe's version
Daniel Fabian (Aug 17 2019 at 10:01):
this is the full code:
section variables a b c d e : Prop variable p : Prop → Prop theorem thm₁ (h : a ↔ b) : (c ∧ a ∧ d → e) ↔ (c ∧ b ∧ d → e) := propext h ▸ iff.refl _ theorem thm₂ (h : a ↔ b) (h₁ : p a) : p b := propext h ▸ h₁ theorem thm₃ : ((a ↔ b) → p a → p b) ↔ ((a ↔ b) → a = b) := begin apply iff.intro, intros h hab, rw [hab], intros ax h hpa, from ax h ▸ hpa end #print axioms thm₃ end
Daniel Fabian (Aug 17 2019 at 10:02):
from what I understand about the syntax, p
from the section is passed as an argument to thm_3, correct?
Mario Carneiro (Aug 17 2019 at 10:02):
it is
Mario Carneiro (Aug 17 2019 at 10:02):
but it is quantified at the top level, rather than on the LHS of the iff only
Daniel Fabian (Aug 17 2019 at 10:03):
i see
Daniel Fabian (Aug 17 2019 at 10:04):
i'm re-trying the proof with that different quantification, now
Daniel Fabian (Aug 17 2019 at 10:23):
thanks, got it working!
Last updated: Dec 20 2023 at 11:08 UTC