# Zulip Chat Archive

## Stream: new members

### Topic: Real number is an integer

#### Gareth Ma (Feb 07 2023 at 05:34):

Hi. How should I express that a real number is an integer, in the sense that there exists an integer that casts to it? I wrote it as it is right now `∃ N : ℕ, ↑N = r`

, but I was wondering if there were better ways.

#### Gareth Ma (Feb 07 2023 at 05:36):

In particular, if I want to prove this statement for some `r`

, then I will have to construct `N`

, but sometimes I cannot

#### Johan Commelin (Feb 07 2023 at 06:44):

@Gareth Ma I think this is the best way. If you don't want to construct an `N`

what other method would you like to use instead? (You can give an informal mathematical answer, no Lean code required.)

#### Gareth Ma (Feb 07 2023 at 06:46):

Here is my actual use case:

```
lemma aux_exp_mul_int {n : ℕ} :
∃ N : ℕ, ↑N = (Icc 1 (2 * n + 1)).lcm (coe : ℕ → ℝ) * (∫ x : ℝ in 0..1, x ^ n * (1 - x) ^ n) :=
begin
end
```

I don't know how to provide a more minimal example to demonstrate the complexity. The idea is that the term `x ^ n * (1 - x) ^ n`

is a polynomial in `x`

with degree `2n`

, so after integrating and evaluating at 1, it is a rational number where the denominator dives lcm(1, ..., 2n + 1), or more specifically sum of fractions with denominators <= (2n + 1). and hence the whole thing is an integer.

#### Johan Commelin (Feb 07 2023 at 06:49):

I think you should first simplify away that integral.

#### Johan Commelin (Feb 07 2023 at 06:49):

After that, you will still have a polynomial expression. But you will be able to show that it is equal to `polynomial.eval`

of an explicit polynomial with rational coefficients.

#### Johan Commelin (Feb 07 2023 at 06:51):

After more simplifications, you'll get to a point where you can actually plug in the `N`

.

#### Gareth Ma (Feb 07 2023 at 06:51):

That sounds scary but I will try that!

#### Gareth Ma (Feb 07 2023 at 06:52):

So essentially "just do it explicitly"

#### Johan Commelin (Feb 07 2023 at 06:52):

We currently don't have tactic support for these calculations, unfortunately.

#### Johan Commelin (Feb 07 2023 at 06:54):

But do we already have the theory to simplify that integral?

#### Gareth Ma (Feb 07 2023 at 07:03):

We essentially want something like this:

```
lemma eval_integral_thing_idk {N : ℕ} {a : ℕ → ℝ} :
∫ x : ℝ in 0..1, ∑ n in range N, (a n) * x ^ n = ∑ n in range (N + 1), a n / ↑(n + 1) :=
begin
end
```

Which seems quite easy?

#### Gareth Ma (Feb 07 2023 at 07:03):

binomial theorem exists in `add_pow`

#### Gareth Ma (Feb 07 2023 at 07:12):

```
lemma eval_integral_thing_idk {N : ℕ} {a : ℕ → ℝ} :
∫ x : ℝ in 0..1, ∑ n in range N, (a n) * x ^ n = ∑ n in range N, a n / ↑(n + 1) :=
begin
rw interval_integral.integral_finset_sum,
-- swap signs since it's finite sum
simp_rw [integral_const_mul, nat.cast_add, algebra_map.coe_one, integral_pow, one_pow,
zero_pow (nat.zero_lt_succ _), sub_zero, mul_div, mul_one],
-- prove integrable
{ intros k hk,
simp only [interval_integral.interval_integrable.const_mul, interval_integrable_pow], },
end
```

Last updated: Dec 20 2023 at 11:08 UTC