Zulip Chat Archive

Stream: maths

Topic: absurd


orlando (Apr 22 2020 at 19:29):

Hello
I don't very use often proof by contradiction, and it's my first in lean

i don't understand how to start i proof by contradiction, introducing x0 s.t not P x to use hyp on x0 ?

example (X :Type) (P : X  Prop ) (hyp : ( x : X, ¬ (P x))  false ) :  x, P x := begin
    sorry,
end

Alex J. Best (Apr 22 2020 at 19:39):

Using @Patrick Massot 's contrapose tactic

import tactic.push_neg
example (X :Type) (P : X  Prop ) (hyp : ( x : X, ¬ (P x))  false ) :  x, P x := begin
    contrapose! hyp,
    use hyp,
end

Bryan Gin-ge Chen (Apr 22 2020 at 19:40):

This particular result is already in the library as one direction of not_exists_not. Here are a few other ways to prove it:

import tactic

open_locale classical

#check @not_exists_not

example (X :Type) (P : X  Prop ) (hyp : ( x : X, ¬ (P x))  false ) :  x, P x := begin
  by_contra H,
  rw not_forall at H,
  exact hyp H,
end

example (X :Type) (P : X  Prop ) (hyp : ( x : X, ¬ (P x))  false ) :  x, P x := begin
  change ¬ _ at hyp,
  push_neg at hyp,
  assumption,
end

orlando (Apr 22 2020 at 19:43):

ohh thx @Patrick Massot and @Alex J. Best :big_smile:

orlando (Apr 22 2020 at 19:44):

and @Bryan Gin-ge Chen


Last updated: Dec 20 2023 at 11:08 UTC