Zulip Chat Archive

Stream: new members

Topic: recurrence on fermat numbers


Peter Ross (Jan 03 2022 at 20:16):

Hello I am new to Lean, and I would like help with proving a recurrence on the fermat numbers, which in latex is

\prod_{k=0}^{n-1} F_k = F_n-2

I tried to write it in Lean as

-- define a fermat number
def fermat_number (p :  ) := 2^2^p +1
-- prove the recurrence on the Fermat numbers
lemma fermat_recurrence (n:  ) :  fermat_number x in range(n-1) = fermat_number n - 2 := begin
  sorry,
end

but the error said "unexpected token". I don't know how to solve this because I am new to using Lean, so I would appreciate it if anyone would help me.

Ruben Van de Velde (Jan 03 2022 at 20:18):

You're looking for something more like ∏ x in range(n-1), fermat_number x = fermat_number n - 2

Eric Rodriguez (Jan 03 2022 at 20:18):

you'll want open_locale big_operators too

Yaël Dillies (Jan 03 2022 at 20:19):

And range n instead of range (n - 1) most likely.

Eric Rodriguez (Jan 03 2022 at 20:20):

(natural number subtraction is annoying in Lean)

Ruben Van de Velde (Jan 03 2022 at 20:23):

import tactic

open_locale big_operators

-- define a fermat number
def fermat_number (p : ) := 2^2^p +1

-- prove the recurrence on the Fermat numbers
lemma fermat_recurrence (n: ) :  x in finset.range n, fermat_number x = fermat_number n - 2 :=
begin
  sorry,
end

Stuart Presnell (Jan 03 2022 at 20:26):

To avoid the subtraction would it be better to write this?

lemma fermat_recurrence (n: ) :  x in finset.range (n+2), fermat_number x = fermat_number n :=
begin
  sorry,
end

Kevin Buzzard (Jan 03 2022 at 20:28):

Nonono, the brackets aren't there. It's (fermat_number n) +2

Kevin Buzzard (Jan 03 2022 at 20:29):

The formalisation is fine with the subtraction because the Fermat numbers are all >= 3.

Kevin Buzzard (Jan 03 2022 at 20:31):

I think that the correct way to avoid nat subtraction is not to use nat:

import tactic

open_locale big_operators

-- define a Fermat number as an integer
def fermat_number (p : ) := (2 : ) ^ 2 ^ p + 1

open finset

-- prove the recurrence on the Fermat numbers
lemma fermat_recurrence (n: ) :  x in range n, fermat_number x = fermat_number n - 2 :=
begin
  sorry,
end

Ruben Van de Velde (Jan 03 2022 at 20:31):

It appears to be true in lean:

Kevin Buzzard (Jan 03 2022 at 20:35):

The proof is simpler if you use integers.

Ruben Van de Velde (Jan 03 2022 at 20:35):

Isn't it always :)

Kevin Buzzard (Jan 03 2022 at 20:36):

Furthermore I would argue that the moment you use subtraction you're saying "I am assuming subtraction makes sense hence I am assuming these things are integers". I would argue that the integer version is a more correct way of translating into Lean the meaning of the original question, as well as being easier to work with.


Last updated: Dec 20 2023 at 11:08 UTC