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