Zulip Chat Archive
Stream: new members
Topic: propositon
BANGJI HU (Oct 26 2024 at 12:57):
example : ∃ (A : Type) (PP : A → Prop),
((∃ x : A, True) ∧ ¬(∃ x : A, PP x → ∀ x : A, PP x)) := by {
let A := Nat
let PP := (· = 0)
exists A, PP
constructor
·
exists 0
·
intro h
cases h with
| intro witness h_impl =>
have h_all : ∀ x : Nat, x = 0 := by {
intro x
apply h_impl
exists 0
rfl
}
have absurd : 1 = 0 := h_all 1
contradiction
}
BANGJI HU (Oct 26 2024 at 12:58):
invalid constructor ⟨...⟩, insufficient number of arguments, constructs 'Eq.refl' does not have explicit fields, but #2 provided?
Richard Copley (Oct 26 2024 at 13:05):
exists 0
means refine ⟨0, ?_⟩
. At the point where you use exact 0
, the goal is PP witness
. Does that answer the question? (What is the question?)
Alex Mobius (Oct 26 2024 at 13:07):
your h_all
declaration (forall x: Nat, x = 0
) is false, you won't be able to provide a valid proof.
Alex Mobius (Oct 26 2024 at 13:14):
Since you're under negation in existential, your ¬(∃ x : A, PP x → ∀ x : A, PP x)
is equivalent to ∀ x: A, PP x ∧ ¬ ∀ y: A, PP y
, or, more glaringly, ∀ x: A, PP x ∧ ∃ y: A, ¬ PP y
. I.e. there exists a PP which holds for every element of an inhabited type but there also exists an element for which it doesn't hold.
While your construction makes sense at a glance, due to _ex falso quodlibet_ the implication PP x → ∀ x : A, PP x
is actually true whenever PP x
is false.
Alex Mobius (Oct 26 2024 at 13:14):
Can you explain what you're trying to express here?
BANGJI HU (Oct 26 2024 at 13:18):
Alex Mobius said:
Can you explain what you're trying to express here?
i just want to give a example of (∃ x : A, true) → (∃ x: A, PP x → ∀ x : A,PP x)
BANGJI HU (Oct 26 2024 at 13:28):
Alex Mobius said:
Can you explain what you're trying to express here?
(∃ x : A, true) → (∃ x: A, PP x → ∀ x : A,PP x) is it true or false
Last updated: May 02 2025 at 03:31 UTC