Zulip Chat Archive
Stream: new members
Topic: Off by one in types
Brandon Wu (Jul 07 2020 at 02:03):
Why does this proof not work out? I have something of an "off by one" in my types, where I'm expecting something of type A
, but instead I provided something that simply was A
. It's my impression that, in the example that I am trying to prove, A
should be quantified over all propositions.
example (A : Prop) : ∀ A, ¬ ¬(¬ ¬ A ∨ ¬ ¬ ¬ A) :=
assume A,
assume h : ¬ (¬ ¬ A ∨ ¬ ¬ ¬ A),
show false, from
h (or.inl (assume h2 : ¬ A,
show false, from h2 A))
Bryan Gin-ge Chen (Jul 07 2020 at 02:14):
The (A : Prop)
and the ∀ A
have nothing to do with each other. Are you sure you want them both?
Bryan Gin-ge Chen (Jul 07 2020 at 02:19):
I think you just took a wrong turn near the end of your proof. This works:
example (A : Prop) : ¬ ¬(¬ ¬ A ∨ ¬ ¬ ¬ A) :=
assume h : ¬ (¬ ¬ A ∨ ¬ ¬ ¬ A),
show false, from
h (or.inl (assume h2 : ¬ A,
show false, from h (or.inr (assume h3 : ¬ ¬ A,
show false, from h3 h2))))
Brandon Wu (Jul 07 2020 at 02:25):
Oh, I see what happened. I got mistaken with quantifying the A : Prop
for having a term of type A
. My goal in the end was fundamentally flawed from the start. Thank you!
Bryan Gin-ge Chen (Jul 07 2020 at 02:42):
Well, this is exactly equivalent:
example : ∀ A, ¬ ¬(¬ ¬ A ∨ ¬ ¬ ¬ A) :=
assume A : Prop,
assume h : ¬ (¬ ¬ A ∨ ¬ ¬ ¬ A),
show false, from
h (or.inl (assume h2 : ¬ A,
show false, from h (or.inr (assume h3 : ¬ ¬ A,
show false, from h3 h2))))
Last updated: Dec 20 2023 at 11:08 UTC