/- Copyright 2025 The Formal Conjectures Authors. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at https://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. -/ import FormalConjecturesUtil

Erdős Problem 68

Reference: erdosproblems.com/68

namespace Erdos68

Is $$\sum_{n=2}^\infty \frac{1}{n!-1}$$ irrational?

@[category research open, AMS 11] theorem declaration uses 'sorry'erdos_68 : answer(sorry) Irrational (∑' n : , 1 / ((n + 2).factorial - 1 : )) := True Irrational (∑' (n : ), 1 / ((n + 2).factorial - 1)) All goals completed! 🐙

$$\sum_{n=2}^\infty \frac{1}{n!-1} = \sum_{n=2}^\infty \sum_{k=1}^\infty \frac{1}{(n!)^k}$$

@[category textbook, AMS 11] theorem sum_factorial_inv_eq_geometric : let f (n k : ) : := 1 / ((n + 2).factorial : ) ^ (k + 1) ∑' n : , (1 : ) / ((n + 2).factorial - 1) = ∑' n : , ∑' k : , f n k := let f := fun n k => 1 / (n + 2).factorial ^ (k + 1); ∑' (n : ), 1 / ((n + 2).factorial - 1) = ∑' (n : ) (k : ), f n k f: := fun n k => 1 / (n + 2).factorial ^ (k + 1)∑' (n : ), 1 / ((n + 2).factorial - 1) = ∑' (n : ) (k : ), f n k f: := fun n k => 1 / (n + 2).factorial ^ (k + 1) (b : ), 1 / ((b + 2).factorial - 1) = ∑' (k : ), f b k f: := fun n k => 1 / (n + 2).factorial ^ (k + 1)n:1 / ((n + 2).factorial - 1) = ∑' (k : ), f n k f: := fun n k => 1 / (n + 2).factorial ^ (k + 1)n:∑' (k : ), f n k = 1 / ((n + 2).factorial - 1) -- The inner sum is a geometric series with ratio r = ((n + 2)!)⁻¹. f: := fun n k => 1 / (n + 2).factorial ^ (k + 1)n:r: := (↑(n + 2).factorial)⁻¹hr_def:r = (↑(n + 2).factorial)⁻¹ := rfl∑' (k : ), f n k = 1 / ((n + 2).factorial - 1) have hr_nonneg : 0 r := let f := fun n k => 1 / (n + 2).factorial ^ (k + 1); ∑' (n : ), 1 / ((n + 2).factorial - 1) = ∑' (n : ) (k : ), f n k All goals completed! 🐙 have hr_lt_one : r < 1 := inv_lt_one_of_one_lt₀ (f: := fun n k => 1 / (n + 2).factorial ^ (k + 1)n:r: := (↑(n + 2).factorial)⁻¹hr_def:r = (↑(n + 2).factorial)⁻¹ := rflhr_nonneg:0 r := le_of_lt (inv_pos_of_pos (Nat.cast_pos'.mpr (Nat.factorial_pos (n + 2))))1 < (n + 2).factorial All goals completed! 🐙) -- Geometric series: HasSum (fun k ↦ r ^ k) ((1 - r)⁻¹) f: := fun n k => 1 / (n + 2).factorial ^ (k + 1)n:r: := (↑(n + 2).factorial)⁻¹hr_def:r = (↑(n + 2).factorial)⁻¹ := rflhr_nonneg:0 r := le_of_lt (inv_pos_of_pos (Nat.cast_pos'.mpr (Nat.factorial_pos (n + 2))))hr_lt_one:r < 1 := inv_lt_one_of_one_lt₀ (of_eq_true (Eq.trans Nat.one_lt_cast._simp_1 (Eq.trans Nat.one_lt_factorial._simp_1 (Eq.trans (lt_mul_iff_one_lt_left'._simp_2 1) (Eq.trans Order.lt_add_one_iff._simp_1 (one_le._simp_2 n))))))hgeom:HasSum (fun n => r ^ n) (1 - r)⁻¹ := hasSum_geometric_of_lt_one hr_nonneg hr_lt_one∑' (k : ), f n k = 1 / ((n + 2).factorial - 1) -- Multiply by r to shift the index: HasSum (fun k ↦ r * r ^ k) (r * (1 - r)⁻¹) f: := fun n k => 1 / (n + 2).factorial ^ (k + 1)n:r: := (↑(n + 2).factorial)⁻¹hr_def:r = (↑(n + 2).factorial)⁻¹ := rflhr_nonneg:0 r := le_of_lt (inv_pos_of_pos (Nat.cast_pos'.mpr (Nat.factorial_pos (n + 2))))hr_lt_one:r < 1 := inv_lt_one_of_one_lt₀ (of_eq_true (Eq.trans Nat.one_lt_cast._simp_1 (Eq.trans Nat.one_lt_factorial._simp_1 (Eq.trans (lt_mul_iff_one_lt_left'._simp_2 1) (Eq.trans Order.lt_add_one_iff._simp_1 (one_le._simp_2 n))))))hgeom:HasSum (fun n => r ^ n) (1 - r)⁻¹ := hasSum_geometric_of_lt_one hr_nonneg hr_lt_onehshift:HasSum (fun i => r * r ^ i) (r * (1 - r)⁻¹) := HasSum.mul_left r hgeom∑' (k : ), f n k = 1 / ((n + 2).factorial - 1) -- Each summand satisfies f n k = r * r ^ k. have hf_eq : k, f n k = r * r ^ k := fun k => f: := fun n k => 1 / (n + 2).factorial ^ (k + 1)n:r: := (↑(n + 2).factorial)⁻¹hr_def:r = (↑(n + 2).factorial)⁻¹ := rflhr_nonneg:0 r := le_of_lt (inv_pos_of_pos (Nat.cast_pos'.mpr (Nat.factorial_pos (n + 2))))hr_lt_one:r < 1 := inv_lt_one_of_one_lt₀ (of_eq_true (Eq.trans Nat.one_lt_cast._simp_1 (Eq.trans Nat.one_lt_factorial._simp_1 (Eq.trans (lt_mul_iff_one_lt_left'._simp_2 1) (Eq.trans Order.lt_add_one_iff._simp_1 (one_le._simp_2 n))))))hgeom:HasSum (fun n => r ^ n) (1 - r)⁻¹ := hasSum_geometric_of_lt_one hr_nonneg hr_lt_onehshift:HasSum (fun i => r * r ^ i) (r * (1 - r)⁻¹) := HasSum.mul_left r hgeomk:f n k = r * r ^ k f: := fun n k => 1 / (n + 2).factorial ^ (k + 1)n:r: := (↑(n + 2).factorial)⁻¹hr_def:r = (↑(n + 2).factorial)⁻¹ := rflhr_nonneg:0 r := le_of_lt (inv_pos_of_pos (Nat.cast_pos'.mpr (Nat.factorial_pos (n + 2))))hr_lt_one:r < 1 := inv_lt_one_of_one_lt₀ (of_eq_true (Eq.trans Nat.one_lt_cast._simp_1 (Eq.trans Nat.one_lt_factorial._simp_1 (Eq.trans (lt_mul_iff_one_lt_left'._simp_2 1) (Eq.trans Order.lt_add_one_iff._simp_1 (one_le._simp_2 n))))))hgeom:HasSum (fun n => r ^ n) (1 - r)⁻¹ := hasSum_geometric_of_lt_one hr_nonneg hr_lt_onehshift:HasSum (fun i => r * r ^ i) (r * (1 - r)⁻¹) := HasSum.mul_left r hgeomk:1 / (n + 2).factorial ^ (k + 1) = (↑(n + 2).factorial)⁻¹ * (↑(n + 2).factorial)⁻¹ ^ k; All goals completed! 🐙 -- Evaluate ∑' k, f n k = r * (1 - r)⁻¹ = 1 / ((n + 2)! - 1). exact ((hshift.congr_fun hf_eq).tsum_eq.trans (f: := fun n k => 1 / (n + 2).factorial ^ (k + 1)n:r: := (↑(n + 2).factorial)⁻¹hr_def:r = (↑(n + 2).factorial)⁻¹ := rflhr_nonneg:0 r := le_of_lt (inv_pos_of_pos (Nat.cast_pos'.mpr (Nat.factorial_pos (n + 2))))hr_lt_one:r < 1 := inv_lt_one_of_one_lt₀ (of_eq_true (Eq.trans Nat.one_lt_cast._simp_1 (Eq.trans Nat.one_lt_factorial._simp_1 (Eq.trans (lt_mul_iff_one_lt_left'._simp_2 1) (Eq.trans Order.lt_add_one_iff._simp_1 (one_le._simp_2 n))))))hgeom:HasSum (fun n => r ^ n) (1 - r)⁻¹ := hasSum_geometric_of_lt_one hr_nonneg hr_lt_onehshift:HasSum (fun i => r * r ^ i) (r * (1 - r)⁻¹) := HasSum.mul_left r hgeomhf_eq: (k : ), f n k = r * r ^ k := fun k => Eq.mpr (id (congrArg (Eq (1 / (n + 2).factorial ^ (k + 1))) (congr (congrArg HMul.hMul hr_def) (congrArg (fun x => x ^ k) hr_def)))) (Mathlib.Tactic.Ring.of_eq (Mathlib.Tactic.Ring.div_congr (Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_one)) (Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf (n + 2).factorial) (Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf k) (Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat (Eq.refl 1))) (Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1) (Mathlib.Tactic.Ring.add_pf_add_zero (k ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))) (Mathlib.Tactic.Ring.pow_add (Mathlib.Tactic.Ring.pow_one_cast ((n + 2).factorial ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)) (Mathlib.Tactic.Ring.pow_add (Mathlib.Tactic.Ring.single_pow (Mathlib.Tactic.Ring.mul_pow (Mathlib.Tactic.Ring.mul_pf_right k (Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1))) (Mathlib.Tactic.Ring.one_pow (k ^ Nat.rawCast 1 * Nat.rawCast 1)))) (Mathlib.Tactic.Ring.pow_zero ((n + 2).factorial ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)) (Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.mul_pf_left (↑(n + 2).factorial) (k ^ Nat.rawCast 1 * Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1))) (Mathlib.Tactic.Ring.mul_zero ((n + 2).factorial ^ (k ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)) (Mathlib.Tactic.Ring.add_pf_add_zero ((n + 2).factorial ^ (k ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0))) (Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 1 + 0)) (Mathlib.Tactic.Ring.add_pf_add_zero ((n + 2).factorial ^ (k ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))) (Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.mul_pf_left (↑(n + 2).factorial) (Nat.rawCast 1) (Mathlib.Tactic.Ring.mul_pf_right (↑(n + 2).factorial) (k ^ Nat.rawCast 1 * Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))) (Mathlib.Tactic.Ring.mul_zero ((n + 2).factorial ^ Nat.rawCast 1 * Nat.rawCast 1)) (Mathlib.Tactic.Ring.add_pf_add_zero ((n + 2).factorial ^ Nat.rawCast 1 * ((n + 2).factorial ^ (k ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) + 0))) (Mathlib.Tactic.Ring.zero_mul ((n + 2).factorial ^ (k ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)) (Mathlib.Tactic.Ring.add_pf_add_zero ((n + 2).factorial ^ Nat.rawCast 1 * ((n + 2).factorial ^ (k ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) + 0))))) (Mathlib.Tactic.Ring.div_pf (Mathlib.Tactic.Ring.inv_single (Mathlib.Tactic.Ring.inv_mul (Eq.refl (↑(n + 2).factorial)⁻¹) (Mathlib.Tactic.Ring.inv_mul (Eq.refl (↑(n + 2).factorial)⁻¹) (Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.IsNNRat.to_isNat (Mathlib.Meta.NormNum.isNNRat_inv_pos (Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.IsNat.of_raw 1))))) (Mathlib.Tactic.Ring.mul_pf_right (↑(n + 2).factorial)⁻¹ (k ^ Nat.rawCast 1 * Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))) (Mathlib.Tactic.Ring.mul_pf_right (↑(n + 2).factorial)⁻¹ (Nat.rawCast 1) (Mathlib.Tactic.Ring.mul_pf_left (↑(n + 2).factorial)⁻¹ (k ^ Nat.rawCast 1 * Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))))) (Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.mul_pf_right (↑(n + 2).factorial)⁻¹ (Nat.rawCast 1) (Mathlib.Tactic.Ring.mul_pf_right (↑(n + 2).factorial)⁻¹ (k ^ Nat.rawCast 1 * Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))) (Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1)) (Mathlib.Tactic.Ring.add_pf_add_zero ((↑(n + 2).factorial)⁻¹ ^ Nat.rawCast 1 * ((↑(n + 2).factorial)⁻¹ ^ (k ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) + 0))) (Mathlib.Tactic.Ring.zero_mul ((↑(n + 2).factorial)⁻¹ ^ Nat.rawCast 1 * ((↑(n + 2).factorial)⁻¹ ^ (k ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) + 0)) (Mathlib.Tactic.Ring.add_pf_add_zero ((↑(n + 2).factorial)⁻¹ ^ Nat.rawCast 1 * ((↑(n + 2).factorial)⁻¹ ^ (k ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) + 0))))) (Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.inv_congr (Mathlib.Tactic.Ring.atom_pf (n + 2).factorial) (Mathlib.Tactic.Ring.inv_single (Mathlib.Tactic.Ring.inv_mul (Eq.refl (↑(n + 2).factorial)⁻¹) (Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.IsNNRat.to_isNat (Mathlib.Meta.NormNum.isNNRat_inv_pos (Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.IsNat.of_raw 1))))) (Mathlib.Tactic.Ring.mul_pf_right (↑(n + 2).factorial)⁻¹ (Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))))) (Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.inv_congr (Mathlib.Tactic.Ring.atom_pf (n + 2).factorial) (Mathlib.Tactic.Ring.inv_single (Mathlib.Tactic.Ring.inv_mul (Eq.refl (↑(n + 2).factorial)⁻¹) (Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.IsNNRat.to_isNat (Mathlib.Meta.NormNum.isNNRat_inv_pos (Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.IsNat.of_raw 1))))) (Mathlib.Tactic.Ring.mul_pf_right (↑(n + 2).factorial)⁻¹ (Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))))) (Mathlib.Tactic.Ring.atom_pf k) (Mathlib.Tactic.Ring.pow_add (Mathlib.Tactic.Ring.single_pow (Mathlib.Tactic.Ring.mul_pow (Mathlib.Tactic.Ring.mul_pf_right k (Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1))) (Mathlib.Tactic.Ring.one_pow (k ^ Nat.rawCast 1 * Nat.rawCast 1)))) (Mathlib.Tactic.Ring.pow_zero ((↑(n + 2).factorial)⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)) (Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.mul_pf_left (↑(n + 2).factorial)⁻¹ (k ^ Nat.rawCast 1 * Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1))) (Mathlib.Tactic.Ring.mul_zero ((↑(n + 2).factorial)⁻¹ ^ (k ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)) (Mathlib.Tactic.Ring.add_pf_add_zero ((↑(n + 2).factorial)⁻¹ ^ (k ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0))) (Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 1 + 0)) (Mathlib.Tactic.Ring.add_pf_add_zero ((↑(n + 2).factorial)⁻¹ ^ (k ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0))))) (Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.mul_pf_left (↑(n + 2).factorial)⁻¹ (Nat.rawCast 1) (Mathlib.Tactic.Ring.mul_pf_right (↑(n + 2).factorial)⁻¹ (k ^ Nat.rawCast 1 * Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))) (Mathlib.Tactic.Ring.mul_zero ((↑(n + 2).factorial)⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1)) (Mathlib.Tactic.Ring.add_pf_add_zero ((↑(n + 2).factorial)⁻¹ ^ Nat.rawCast 1 * ((↑(n + 2).factorial)⁻¹ ^ (k ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) + 0))) (Mathlib.Tactic.Ring.zero_mul ((↑(n + 2).factorial)⁻¹ ^ (k ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)) (Mathlib.Tactic.Ring.add_pf_add_zero ((↑(n + 2).factorial)⁻¹ ^ Nat.rawCast 1 * ((↑(n + 2).factorial)⁻¹ ^ (k ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) + 0)))))r * (1 - r)⁻¹ = 1 / ((n + 2).factorial - 1) f: := fun n k => 1 / (n + 2).factorial ^ (k + 1)n:r: := (↑(n + 2).factorial)⁻¹hr_def:r = (↑(n + 2).factorial)⁻¹ := rflhr_nonneg:0 r := le_of_lt (inv_pos_of_pos (Nat.cast_pos'.mpr (Nat.factorial_pos (n + 2))))hr_lt_one:r < 1 := inv_lt_one_of_one_lt₀ (of_eq_true (Eq.trans Nat.one_lt_cast._simp_1 (Eq.trans Nat.one_lt_factorial._simp_1 (Eq.trans (lt_mul_iff_one_lt_left'._simp_2 1) (Eq.trans Order.lt_add_one_iff._simp_1 (one_le._simp_2 n))))))hgeom:HasSum (fun n => r ^ n) (1 - r)⁻¹ := hasSum_geometric_of_lt_one hr_nonneg hr_lt_onehshift:HasSum (fun i => r * r ^ i) (r * (1 - r)⁻¹) := HasSum.mul_left r hgeomhf_eq: (k : ), f n k = r * r ^ k := fun k => Eq.mpr (id (congrArg (Eq (1 / (n + 2).factorial ^ (k + 1))) (congr (congrArg HMul.hMul hr_def) (congrArg (fun x => x ^ k) hr_def)))) (Mathlib.Tactic.Ring.of_eq (Mathlib.Tactic.Ring.div_congr (Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat Nat.cast_one)) (Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.atom_pf (n + 2).factorial) (Mathlib.Tactic.Ring.add_congr (Mathlib.Tactic.Ring.atom_pf k) (Mathlib.Tactic.Ring.cast_pos (Mathlib.Meta.NormNum.isNat_ofNat (Eq.refl 1))) (Mathlib.Tactic.Ring.add_pf_add_gt (Nat.rawCast 1) (Mathlib.Tactic.Ring.add_pf_add_zero (k ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)))) (Mathlib.Tactic.Ring.pow_add (Mathlib.Tactic.Ring.pow_one_cast ((n + 2).factorial ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)) (Mathlib.Tactic.Ring.pow_add (Mathlib.Tactic.Ring.single_pow (Mathlib.Tactic.Ring.mul_pow (Mathlib.Tactic.Ring.mul_pf_right k (Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1))) (Mathlib.Tactic.Ring.one_pow (k ^ Nat.rawCast 1 * Nat.rawCast 1)))) (Mathlib.Tactic.Ring.pow_zero ((n + 2).factorial ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)) (Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.mul_pf_left (↑(n + 2).factorial) (k ^ Nat.rawCast 1 * Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1))) (Mathlib.Tactic.Ring.mul_zero ((n + 2).factorial ^ (k ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)) (Mathlib.Tactic.Ring.add_pf_add_zero ((n + 2).factorial ^ (k ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0))) (Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 1 + 0)) (Mathlib.Tactic.Ring.add_pf_add_zero ((n + 2).factorial ^ (k ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)))) (Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.mul_pf_left (↑(n + 2).factorial) (Nat.rawCast 1) (Mathlib.Tactic.Ring.mul_pf_right (↑(n + 2).factorial) (k ^ Nat.rawCast 1 * Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))) (Mathlib.Tactic.Ring.mul_zero ((n + 2).factorial ^ Nat.rawCast 1 * Nat.rawCast 1)) (Mathlib.Tactic.Ring.add_pf_add_zero ((n + 2).factorial ^ Nat.rawCast 1 * ((n + 2).factorial ^ (k ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) + 0))) (Mathlib.Tactic.Ring.zero_mul ((n + 2).factorial ^ (k ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)) (Mathlib.Tactic.Ring.add_pf_add_zero ((n + 2).factorial ^ Nat.rawCast 1 * ((n + 2).factorial ^ (k ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) + 0))))) (Mathlib.Tactic.Ring.div_pf (Mathlib.Tactic.Ring.inv_single (Mathlib.Tactic.Ring.inv_mul (Eq.refl (↑(n + 2).factorial)⁻¹) (Mathlib.Tactic.Ring.inv_mul (Eq.refl (↑(n + 2).factorial)⁻¹) (Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.IsNNRat.to_isNat (Mathlib.Meta.NormNum.isNNRat_inv_pos (Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.IsNat.of_raw 1))))) (Mathlib.Tactic.Ring.mul_pf_right (↑(n + 2).factorial)⁻¹ (k ^ Nat.rawCast 1 * Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))) (Mathlib.Tactic.Ring.mul_pf_right (↑(n + 2).factorial)⁻¹ (Nat.rawCast 1) (Mathlib.Tactic.Ring.mul_pf_left (↑(n + 2).factorial)⁻¹ (k ^ Nat.rawCast 1 * Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))))) (Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.mul_pf_right (↑(n + 2).factorial)⁻¹ (Nat.rawCast 1) (Mathlib.Tactic.Ring.mul_pf_right (↑(n + 2).factorial)⁻¹ (k ^ Nat.rawCast 1 * Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))) (Mathlib.Tactic.Ring.mul_zero (Nat.rawCast 1)) (Mathlib.Tactic.Ring.add_pf_add_zero ((↑(n + 2).factorial)⁻¹ ^ Nat.rawCast 1 * ((↑(n + 2).factorial)⁻¹ ^ (k ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) + 0))) (Mathlib.Tactic.Ring.zero_mul ((↑(n + 2).factorial)⁻¹ ^ Nat.rawCast 1 * ((↑(n + 2).factorial)⁻¹ ^ (k ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) + 0)) (Mathlib.Tactic.Ring.add_pf_add_zero ((↑(n + 2).factorial)⁻¹ ^ Nat.rawCast 1 * ((↑(n + 2).factorial)⁻¹ ^ (k ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) + 0))))) (Mathlib.Tactic.Ring.mul_congr (Mathlib.Tactic.Ring.inv_congr (Mathlib.Tactic.Ring.atom_pf (n + 2).factorial) (Mathlib.Tactic.Ring.inv_single (Mathlib.Tactic.Ring.inv_mul (Eq.refl (↑(n + 2).factorial)⁻¹) (Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.IsNNRat.to_isNat (Mathlib.Meta.NormNum.isNNRat_inv_pos (Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.IsNat.of_raw 1))))) (Mathlib.Tactic.Ring.mul_pf_right (↑(n + 2).factorial)⁻¹ (Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))))) (Mathlib.Tactic.Ring.pow_congr (Mathlib.Tactic.Ring.inv_congr (Mathlib.Tactic.Ring.atom_pf (n + 2).factorial) (Mathlib.Tactic.Ring.inv_single (Mathlib.Tactic.Ring.inv_mul (Eq.refl (↑(n + 2).factorial)⁻¹) (Mathlib.Meta.NormNum.IsNat.to_raw_eq (Mathlib.Meta.NormNum.IsNNRat.to_isNat (Mathlib.Meta.NormNum.isNNRat_inv_pos (Mathlib.Meta.NormNum.IsNat.to_isNNRat (Mathlib.Meta.NormNum.IsNat.of_raw 1))))) (Mathlib.Tactic.Ring.mul_pf_right (↑(n + 2).factorial)⁻¹ (Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))))) (Mathlib.Tactic.Ring.atom_pf k) (Mathlib.Tactic.Ring.pow_add (Mathlib.Tactic.Ring.single_pow (Mathlib.Tactic.Ring.mul_pow (Mathlib.Tactic.Ring.mul_pf_right k (Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1))) (Mathlib.Tactic.Ring.one_pow (k ^ Nat.rawCast 1 * Nat.rawCast 1)))) (Mathlib.Tactic.Ring.pow_zero ((↑(n + 2).factorial)⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1 + 0)) (Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.mul_pf_left (↑(n + 2).factorial)⁻¹ (k ^ Nat.rawCast 1 * Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1))) (Mathlib.Tactic.Ring.mul_zero ((↑(n + 2).factorial)⁻¹ ^ (k ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1)) (Mathlib.Tactic.Ring.add_pf_add_zero ((↑(n + 2).factorial)⁻¹ ^ (k ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0))) (Mathlib.Tactic.Ring.zero_mul (Nat.rawCast 1 + 0)) (Mathlib.Tactic.Ring.add_pf_add_zero ((↑(n + 2).factorial)⁻¹ ^ (k ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0))))) (Mathlib.Tactic.Ring.add_mul (Mathlib.Tactic.Ring.mul_add (Mathlib.Tactic.Ring.mul_pf_left (↑(n + 2).factorial)⁻¹ (Nat.rawCast 1) (Mathlib.Tactic.Ring.mul_pf_right (↑(n + 2).factorial)⁻¹ (k ^ Nat.rawCast 1 * Nat.rawCast 1) (Mathlib.Tactic.Ring.one_mul (Nat.rawCast 1)))) (Mathlib.Tactic.Ring.mul_zero ((↑(n + 2).factorial)⁻¹ ^ Nat.rawCast 1 * Nat.rawCast 1)) (Mathlib.Tactic.Ring.add_pf_add_zero ((↑(n + 2).factorial)⁻¹ ^ Nat.rawCast 1 * ((↑(n + 2).factorial)⁻¹ ^ (k ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) + 0))) (Mathlib.Tactic.Ring.zero_mul ((↑(n + 2).factorial)⁻¹ ^ (k ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1 + 0)) (Mathlib.Tactic.Ring.add_pf_add_zero ((↑(n + 2).factorial)⁻¹ ^ Nat.rawCast 1 * ((↑(n + 2).factorial)⁻¹ ^ (k ^ Nat.rawCast 1 * Nat.rawCast 1) * Nat.rawCast 1) + 0)))))(↑(n + 2).factorial)⁻¹ * (1 - (↑(n + 2).factorial)⁻¹)⁻¹ = 1 / ((n + 2).factorial - 1); All goals completed! 🐙)) end Erdos68