Zulip Chat Archive

Stream: new members

Topic: Maths_in_lean book example.


Manoj Kummini (Sep 24 2020 at 20:49):

Dear all,

I am trying to learn lean and mathlib, and am working through the book mathematics_in_lean. In Section 2.1, there is an example of a `typical proof state', which I am trying to set up and solve as follows:

import data.nat.parity data.nat.prime tactic
open nat

example (x y : nat) : (prime x) /\ not (even x) /\ (y > x) -> (y >= 4) :=
begin
intros h,
have h1,
exact (h.left),
have h23,
exact (h.right),
have h2,
exact (h23.left),
have h3,
exact(h23.right),
clear h h23,
-- now I have a proof state as given in the book!
-- I now tried
have x_ge_two,
apply prime.two_le h1

which got me x_ge_two : 2 <= x. After this, I am unable to use the the remaining hypothesis (h2 and h3). Any hint would be appreciated! Thanks.

Kevin Buzzard (Sep 24 2020 at 21:12):

import data.nat.parity data.nat.prime tactic
open nat

example (x y : nat) : (prime x) /\ not (even x) /\ (x < y) -> (4  y) :=
begin
  intros h,
  have h1,
    exact (h.left),
  have h23,
    exact (h.right),
  have h2,
    exact (h23.left),
  have h3,
    exact(h23.right),
  clear h h23,
  -- now I have a proof state as given in the book!
  -- I now tried
  have x_ge_two,
    apply prime.two_le h1,
  -- 2 ≤ x ↔ 2 < x or 2 = x
  rw le_iff_lt_or_eq at x_ge_two,
  cases x_ge_two,
  { -- 2 < x case
    -- use lemma saying a < b ↔ a+1 ≤ b
    rw [succ_le_iff, succ_eq_add_one] at x_ge_two h3,
    -- now it's easy
    linarith,
  },
  { -- 2 = x case
    -- proof by contradiction
    exfalso,
    apply h2,
    rw x_ge_two,
    simp,
  }

end

Kevin Buzzard (Sep 24 2020 at 21:15):

It's a bit annoying that I couldn't finish it off more quickly

Kevin Buzzard (Sep 24 2020 at 21:15):

Maybe I'm missing a tactic. Actually does tidy do it?

Manoj Kummini (Sep 25 2020 at 01:19):

Thank you!


Last updated: Dec 20 2023 at 11:08 UTC