Zulip Chat Archive

Stream: new members

Topic: prop2


BANGJI HU (Oct 24 2024 at 10:21):

import Mathlib.Tactic

variable (P Q : Prop)

theorem q1 : (P→¬ ¬Q) ↔¬¬ (PQ) := by
 rw [@not_not]
 simp only [not_not]
 constructor

BANGJI HU (Oct 24 2024 at 10:22):

simp only [not_not] lead to contradiction ?or may be the theorem just false

Ruben Van de Velde (Oct 24 2024 at 10:35):

It is clearly false:

import Mathlib.Tactic

variable (P Q : Prop)

theorem q1 : (P→¬ ¬Q) ↔¬¬ (PQ) := by
  simp
  sorry

example : False := by
  have := q1 False True
  simpa

BANGJI HU (Oct 24 2024 at 10:55):

here is my complete code

import Mathlib.Tactic
set_option linter.unusedVariables false
variable (P Q : Prop)



theorem q1 (P Q : Prop) : (P  ¬¬Q)  ¬¬(P  Q) := by
  apply Iff.intro
  · intro h
    by_contra h'
    apply h'
    intro p
    by_contra q'
    apply h p
    assumption
  · intro h p q'
    by_contra h'
    apply h
    intro p'
    by_contra q''
    apply h'
    exact h fun a => q' (p' p)

BANGJI HU (Oct 24 2024 at 12:18):

and i try to turn to lean3

variables (P Q : Prop)

theorem q1 : (P  ¬¬Q)  ¬¬(P  Q) :=
begin
  constructor,
  { assume h,
    assume h',
    apply h',
    assume p,
    assume q',
    apply h,
    exact p,
    exact q' },
  { assume h,
    assume p,
    assume q',
    apply h,
    have pq : P  Q,
    { assume p',
      apply q',
      exact p' p },
    exact pq }
end

BANGJI HU (Oct 24 2024 at 12:19):

but Assuming the target of the goal is a Pi or a let, assume h : t unifies th [...]


Last updated: May 02 2025 at 03:31 UTC