← Session 28 — ii′-5e: partial-fraction identity (zero series + F entire)
thinking (7792 chars)
Errors:
1. **`Complex.norm_ofReal` unknown** — it's `RCLike.norm_ofReal` (banked in LiSkeleton: `RCLike.norm_ofReal _`) or... in this Mathlib maybe `Complex.norm_ofReal` doesn't exist; use `RCLike.norm_ofReal`. Occurrences at 394, 490 (and I used it in two more places — the hZ blocks in §6 use it too). Replace all `Complex.norm_ofReal` with `RCLike.norm_ofReal` — but note RCLike.norm_ofReal was used in LiSkeleton as a term `RCLike.norm_ofReal _` — as a rewrite: rw [show ..., RCLike.norm_ofReal] — ∀-form? LiSkeleton line 253: `exact RCLike.norm_ofReal _` — applied: RCLike.norm_ofReal x : ‖(x:𝕜)‖ = ... hmm for ℂ: ‖(↑x : ℂ)‖ = |x|? RCLike.norm_ofReal : ‖RCLike.ofReal r‖ = |r|? hmm — check: in LiSkeleton: `rw [liSummand_eq n ρ, norm_mul, RCLike.norm_natCast]; congr 1; exact RCLike.norm_ofReal _` — the goal there was ‖((...).re : ℂ)‖ = |...| presumably ✓. So RCLike.norm_ofReal : ‖(↑r : 𝕜)‖ = |r|? Hmm — RCLike.norm_ofReal signature: `theorem RCLike.norm_ofReal (r : ℝ) : ‖(r : 𝕜)‖ = |r|`? close enough — as rw it fires on ‖(↑x : ℂ)‖ ✓. Let me verify the exact name/form.
2. **Line 575 linarith fail** (the §6 M-test final bound): goal negated: a✝ : (2n+1)·((j+1)·‖w+j+1‖) < ‖w‖·(j+1)² — need False. Facts: ‖w‖ < n + 1/2 (hwn), (j+1)/2 ≤ ‖w+j+1‖ (hnorm2), j ≥ 2n+1 (hj2). Compute: ‖w‖·(j+1)² ≤ (n+1/2)(j+1)²; (2n+1)(j+1)‖w+j+1‖ ≥ (2n+1)(j+1)(j+1)/2 = (2n+1)/2·(j+1)² = (n+1/2)(j+1)². So a✝ : (n+1/2)(j+1)² ≤ ... < ‖w‖(j+1)² ≤ (n+1/2)(j+1)² — contradiction needs: (2n+1)·(j+1)·‖w+j+1‖ ≥ (n+1/2)(j+1)² and ‖w‖·(j+1)² ≤ (n+1/2)(j+1)². nlinarith should find these products: (2n+1)(j+1)·((j+1)/2 ≤ ‖w+j+1‖) — degree-4 products (n·j·...) — nlinarith with hints: pass [hwn.le, hnorm2, hj1.le, hn0] and products... nlinarith multiplies pairs of hypotheses: (2n+1) isn't a hypothesis as an atom... it can still multiply hnorm2 by terms built from hypotheses. The needed product: (j+1)·hnorm2 scaled: (j+1)·((j+1)/2) ≤ (j+1)·‖w+j+1‖ — needs (j+1) ≥ 0 ✓ hypothesis hj1.le. Then ×(2n+1) ≥ 0 — from hn0: 2n+1 ≥ 1 > 0. Then ‖w‖·(j+1)² ≤ (n+1/2)(j+1)²: from hwn.le and (j+1)² ≥ 0 (sq_nonneg). nlinarith [hwn.le, hnorm2, hj1.le, sq_nonneg ((j:ℝ)+1), hn0] — I did pass these! But it failed. The issue: nlinarith's product search: it considers products of PAIRS of hypotheses/atoms — the chain needs (j+1)·hnorm2 (product of atom (j+1) with hypothesis) then multiply by (2n+1)... two-step multiplication might exceed nlinarith's default search. Give it the product terms directly:
```lean
have hstep1 : ((j : ℝ) + 1) ^ 2 / 2 ≤ ((j : ℝ) + 1) * ‖w + (j : ℂ) + 1‖ := by
have := mul_le_mul_of_nonneg_left hnorm2 hj1.le -- (j+1)·(j+1)/2 ≤ (j+1)·‖..‖
nlinarith [this] -- or convert: (j+1)·((j+1)/2) = (j+1)²/2 by ring-forms: nlinarith closes? the goal vs this: (j+1)*(j+1)/2 vs (j+1)^2/2: nlinarith normalizes ✓
have hstep2 : (2 * (n : ℝ) + 1) * (((j : ℝ) + 1) ^ 2 / 2)
≤ (2 * (n : ℝ) + 1) * (((j : ℝ) + 1) * ‖w + (j : ℂ) + 1‖) :=
mul_le_mul_of_nonneg_left hstep1 (by positivity... (2n+1) ≥ 0: nlinarith [hn0] or have h21 : (0:ℝ) ≤ 2*(n:ℝ)+1 := by linarith [hn0] then positivity can't use; use h21 directly)
-- and ‖w‖·(j+1)² ≤ (n + 1/2)·(j+1)²:
have hstep3 : ‖w‖ * ((j : ℝ) + 1) ^ 2 ≤ ((n : ℝ) + 1 / 2) * ((j : ℝ) + 1) ^ 2 :=
mul_le_mul_of_nonneg_right hwn.le (sq_nonneg _)
-- assemble: a✝ says LHS > RHS; but hstep2: (2n+1)·X ≥ (2n+1)(j+1)²/2 = (n+1/2)(j+1)² ≥ ‖w‖(j+1)²: contradiction
nlinarith [hstep2, hstep3, hj1.le, hn0] -- need (2n+1)/2 = n+1/2 normalization ✓ linear
```
Then the final goal after div_le_div_iff₀ is ‖w‖·(j+1)² ≤ (2n+1)·((j+1)·‖w+j+1‖): exact le_of_not_gt (by intro hbad; ...)? Restructure: after rw [div_le_div_iff₀ hden0 hA2], goal: ‖w‖ * (↑j+1)^2 ≤ (2*↑n+1) * (↑j+1 * ‖w + ↑j+1‖) — wait the div_le_div_iff₀ form: a/b ≤ c/d ↔ a*d ≤ c*b: a = ‖w‖, b = (j+1)‖w+j+1‖, c = 2n+1, d = (j+1)²: goal: ‖w‖·(j+1)² ≤ (2n+1)·((j+1)·‖w+j+1‖) ✓: `linarith [hstep2, hstep3]`? (2n+1)(j+1)²/2 = (n+1/2)(j+1)²: hstep2 : (n+1/2)(j+1)²·... let me see: hstep2 says (2n+1)(j+1)²/2 ≤ (2n+1)((j+1)‖w+j+1‖); hstep3 : ‖w‖(j+1)² ≤ (n+1/2)(j+1)² = (2n+1)(j+1)²/2·... (n+1/2) = (2n+1)/2 ✓ so ‖w‖(j+1)² ≤ (2n+1)/2·(j+1)² ≤ (2n+1)((j+1)‖w+j+1‖) ✓: `linarith [hstep2, hstep3]` — linarith does linear combos with coefficient normalization ✓ ((n+1/2) vs (2n+1)/2 linear ✓).
Hmm wait — hstep2's LHS is (2n+1)·((j+1)²/2) and I need to relate (n+1/2)(j+1)²: linarith treats (j+1)² as an atom?? hstep3 has ‖w‖·((j+1)^2) and (n+1/2)·((j+1)^2); hstep2 has (2n+1)·((j+1)²/2) — if written as (j+1)^2 atoms consistently, linarith sees: hstep3: ‖w‖·A ≤ (n+1/2)·A; hstep2: (2n+1)·A/2 ≤ (2n+1)·B; goal ‖w‖·A ≤ (2n+1)·B: from hstep3: ‖w‖A ≤ (n+1/2)A = (2n+1)A/2 ≤ (2n+1)B ✓ — but linarith must treat ‖w‖·A as an atom and (n+1/2)·A as coefficient×atom: the terms are PRODUCTS of atoms (‖w‖·A is a product of two atoms) — linarith handles nonlinear terms as opaque atoms ONLY if they're syntactically identical products... ‖w‖ * A vs (n + 1/2) * A: linarith's preprocessing (ring_nf) normalizes: both become coefficients × (‖w‖·A atom)?? ‖w‖·A is one nonlinear monomial atom ✓ ring_nf normal forms match ✓ linarith can do it (atoms: ‖w‖*A, A*B'... hstep2 RHS (2n+1)*(A*‖w+..‖) is (2n+1)·A·‖..‖ degree 3 monomial — the goal RHS same monomial ✓; LHS both ‖w‖·A ✓). Should work.
3. **Line 624**: digammaSeriesPart_eq_sub_add_single's hZ — same `intro k hk` mistake (I fixed it in §5's version but §6's has `intro k hk` too — error "no binders" with k : w ∈ Set.range — fix identically with obtain).
4. **Line 681/678**: the calc first step: `digammaSeriesPart w = ∑' j, (1/(j+1) − 1/(w+j+1)) := rfl` — the error: the GOAL shows `∑' (j : ℂ), ...` — the tsum over ℂ!! Because digammaSeriesPart w unfolds to ∑' (j : ℕ) but my `:= rfl` step target... the error at 678:55 says rfl : ?m = ?m expected digammaSeriesPart w = ∑' (j : ℂ), ... — the calc RHS got elaborated with j : ℂ (since 1/(j+1) with j unpinned and w + j + 1 forcing ℂ!). My calc step: `_ = ∑' j, (1 / ((j : ℂ) + 1) - 1 / (w + j + 1))` — hmm I wrote `∑' j, (1 / ((j : ℂ) + 1) - 1 / (w + j + 1))` with the cast on the first j but the second `w + j + 1` uncast — j : ℂ inferred. Pin: `∑' (j : ℕ), (1 / ((j : ℂ) + 1) - 1 / (w + (j : ℂ) + 1))`. Wait — but the def digammaSeriesPart w := ∑' j : ℕ, (1 / ((j:ℂ)+1) − 1/(w + j + 1)) — the def's own body has `w + j + 1` with j : ℕ coerced automatically (elaborated when the def was written — the def compiled fine, so its j is ℕ with a hidden coercion). For the rfl step the displays must match up to defeq — rfl works definitionally so a correctly-pinned ℕ-tsum is defeq to the def ✓.
So fix the calc step 1: `_ = ∑' (j : ℕ), (1 / ((j : ℂ) + 1) - 1 / (w + (j : ℂ) + 1)) := rfl` — defeq with the def ✓ (the def's body after elaboration has the coercions).
And step 2's tsum_congr application error: goal LHS showed `∑' (j : ℂ)` — cascades from step 1's mis-elaboration. With the pin it should align.
Also check the tsum_congr usage: `apply tsum_congr; intro j; by_cases hjj : j = n - 1 <;> simp [hjj]` — goal: full j = sub j + single j: pos: hjj : j = n−1: LHS 1/(j+1)−1/(w+j+1); RHS: 0 + (1/(j+1)−1/(w+j+1)) ✓ simp [hjj]: if_pos... wait — simp [hjj] rewrites j := n−1 EVERYWHERE then if_pos rfl...: LHS becomes 1/((n−1:ℂ)+1) − 1/(w + ↑(n−1) + 1) and RHS 0 + same: simp closes (zero_add) ✓. neg: LHS = RHS via if_neg both: x = x + 0: simp [hjj] with if_neg: RHS = 0 + ... no: RHS = (if j = n−1 then 0 else term) + (if j = n−1 then term else 0) = term + 0 → add_zero ✓ simp closes ✓.
5. Also need to double check hnorm1's `RCLike.norm_natCast` in rw position — earlier error said it's a ∀-form (∀ (n : ℕ), ‖↑n‖ = ↑n) — in rw [e, RCLike.norm_natCast, ...] it rewrites ‖↑?n‖ — should unify ✓ (rw with ∀-form works).
Let me also check `RCLike.norm_ofReal` exact form:
Checking `RCLike.norm_ofReal`'s exact form, then applying the fix batch.
tool: Bash
input
{
"command": "cd D:/Python/Quantum/zeta-23-lean/.lake/packages/mathlib && grep -rn \"theorem RCLike.norm_ofReal\\|lemma RCLike.norm_ofReal\\|norm_ofReal\" Mathlib/Analysis/RCLike/Basic.lean | head -5; grep -rn \"theorem RCLike.norm_ofNat\\|norm_ofNat\" Mathlib/Analysis/RCLike/Basic.lean | head -4",
"description": "RCLike.norm_ofReal / norm_ofNat forms"
}
raw content_json (database row)
[{"type":"thinking","thinking":"Errors:\n\n1. **`Complex.norm_ofReal` unknown** — it's `RCLike.norm_ofReal` (banked in LiSkeleton: `RCLike.norm_ofReal _`) or... in this Mathlib maybe `Complex.norm_ofReal` doesn't exist; use `RCLike.norm_ofReal`. Occurrences at 394, 490 (and I used it in two more places — the hZ blocks in §6 use it too). Replace all `Complex.norm_ofReal` with `RCLike.norm_ofReal` — but note RCLike.norm_ofReal was used in LiSkeleton as a term `RCLike.norm_ofReal _` — as a rewrite: rw [show ..., RCLike.norm_ofReal] — ∀-form? LiSkeleton line 253: `exact RCLike.norm_ofReal _` — applied: RCLike.norm_ofReal x : ‖(x:𝕜)‖ = ... hmm for ℂ: ‖(↑x : ℂ)‖ = |x|? RCLike.norm_ofReal : ‖RCLike.ofReal r‖ = |r|? hmm — check: in LiSkeleton: `rw [liSummand_eq n ρ, norm_mul, RCLike.norm_natCast]; congr 1; exact RCLike.norm_ofReal _` — the goal there was ‖((...).re : ℂ)‖ = |...| presumably ✓. So RCLike.norm_ofReal : ‖(↑r : 𝕜)‖ = |r|? Hmm — RCLike.norm_ofReal signature: `theorem RCLike.norm_ofReal (r : ℝ) : ‖(r : 𝕜)‖ = |r|`? close enough — as rw it fires on ‖(↑x : ℂ)‖ ✓. Let me verify the exact name/form.\n\n2. **Line 575 linarith fail** (the §6 M-test final bound): goal negated: a✝ : (2n+1)·((j+1)·‖w+j+1‖) < ‖w‖·(j+1)² — need False. Facts: ‖w‖ < n + 1/2 (hwn), (j+1)/2 ≤ ‖w+j+1‖ (hnorm2), j ≥ 2n+1 (hj2). Compute: ‖w‖·(j+1)² ≤ (n+1/2)(j+1)²; (2n+1)(j+1)‖w+j+1‖ ≥ (2n+1)(j+1)(j+1)/2 = (2n+1)/2·(j+1)² = (n+1/2)(j+1)². So a✝ : (n+1/2)(j+1)² ≤ ... < ‖w‖(j+1)² ≤ (n+1/2)(j+1)² — contradiction needs: (2n+1)·(j+1)·‖w+j+1‖ ≥ (n+1/2)(j+1)² and ‖w‖·(j+1)² ≤ (n+1/2)(j+1)². nlinarith should find these products: (2n+1)(j+1)·((j+1)/2 ≤ ‖w+j+1‖) — degree-4 products (n·j·...) — nlinarith with hints: pass [hwn.le, hnorm2, hj1.le, hn0] and products... nlinarith multiplies pairs of hypotheses: (2n+1) isn't a hypothesis as an atom... it can still multiply hnorm2 by terms built from hypotheses. The needed product: (j+1)·hnorm2 scaled: (j+1)·((j+1)/2) ≤ (j+1)·‖w+j+1‖ — needs (j+1) ≥ 0 ✓ hypothesis hj1.le. Then ×(2n+1) ≥ 0 — from hn0: 2n+1 ≥ 1 > 0. Then ‖w‖·(j+1)² ≤ (n+1/2)(j+1)²: from hwn.le and (j+1)² ≥ 0 (sq_nonneg). nlinarith [hwn.le, hnorm2, hj1.le, sq_nonneg ((j:ℝ)+1), hn0] — I did pass these! But it failed. The issue: nlinarith's product search: it considers products of PAIRS of hypotheses/atoms — the chain needs (j+1)·hnorm2 (product of atom (j+1) with hypothesis) then multiply by (2n+1)... two-step multiplication might exceed nlinarith's default search. Give it the product terms directly:\n```lean\n have hstep1 : ((j : ℝ) + 1) ^ 2 / 2 ≤ ((j : ℝ) + 1) * ‖w + (j : ℂ) + 1‖ := by\n have := mul_le_mul_of_nonneg_left hnorm2 hj1.le -- (j+1)·(j+1)/2 ≤ (j+1)·‖..‖\n nlinarith [this] -- or convert: (j+1)·((j+1)/2) = (j+1)²/2 by ring-forms: nlinarith closes? the goal vs this: (j+1)*(j+1)/2 vs (j+1)^2/2: nlinarith normalizes ✓\n have hstep2 : (2 * (n : ℝ) + 1) * (((j : ℝ) + 1) ^ 2 / 2)\n ≤ (2 * (n : ℝ) + 1) * (((j : ℝ) + 1) * ‖w + (j : ℂ) + 1‖) :=\n mul_le_mul_of_nonneg_left hstep1 (by positivity... (2n+1) ≥ 0: nlinarith [hn0] or have h21 : (0:ℝ) ≤ 2*(n:ℝ)+1 := by linarith [hn0] then positivity can't use; use h21 directly)\n -- and ‖w‖·(j+1)² ≤ (n + 1/2)·(j+1)²:\n have hstep3 : ‖w‖ * ((j : ℝ) + 1) ^ 2 ≤ ((n : ℝ) + 1 / 2) * ((j : ℝ) + 1) ^ 2 :=\n mul_le_mul_of_nonneg_right hwn.le (sq_nonneg _)\n -- assemble: a✝ says LHS > RHS; but hstep2: (2n+1)·X ≥ (2n+1)(j+1)²/2 = (n+1/2)(j+1)² ≥ ‖w‖(j+1)²: contradiction\n nlinarith [hstep2, hstep3, hj1.le, hn0] -- need (2n+1)/2 = n+1/2 normalization ✓ linear\n```\nThen the final goal after div_le_div_iff₀ is ‖w‖·(j+1)² ≤ (2n+1)·((j+1)·‖w+j+1‖): exact le_of_not_gt (by intro hbad; ...)? Restructure: after rw [div_le_div_iff₀ hden0 hA2], goal: ‖w‖ * (↑j+1)^2 ≤ (2*↑n+1) * (↑j+1 * ‖w + ↑j+1‖) — wait the div_le_div_iff₀ form: a/b ≤ c/d ↔ a*d ≤ c*b: a = ‖w‖, b = (j+1)‖w+j+1‖, c = 2n+1, d = (j+1)²: goal: ‖w‖·(j+1)² ≤ (2n+1)·((j+1)·‖w+j+1‖) ✓: `linarith [hstep2, hstep3]`? (2n+1)(j+1)²/2 = (n+1/2)(j+1)²: hstep2 : (n+1/2)(j+1)²·... let me see: hstep2 says (2n+1)(j+1)²/2 ≤ (2n+1)((j+1)‖w+j+1‖); hstep3 : ‖w‖(j+1)² ≤ (n+1/2)(j+1)² = (2n+1)(j+1)²/2·... (n+1/2) = (2n+1)/2 ✓ so ‖w‖(j+1)² ≤ (2n+1)/2·(j+1)² ≤ (2n+1)((j+1)‖w+j+1‖) ✓: `linarith [hstep2, hstep3]` — linarith does linear combos with coefficient normalization ✓ ((n+1/2) vs (2n+1)/2 linear ✓). \n\nHmm wait — hstep2's LHS is (2n+1)·((j+1)²/2) and I need to relate (n+1/2)(j+1)²: linarith treats (j+1)² as an atom?? hstep3 has ‖w‖·((j+1)^2) and (n+1/2)·((j+1)^2); hstep2 has (2n+1)·((j+1)²/2) — if written as (j+1)^2 atoms consistently, linarith sees: hstep3: ‖w‖·A ≤ (n+1/2)·A; hstep2: (2n+1)·A/2 ≤ (2n+1)·B; goal ‖w‖·A ≤ (2n+1)·B: from hstep3: ‖w‖A ≤ (n+1/2)A = (2n+1)A/2 ≤ (2n+1)B ✓ — but linarith must treat ‖w‖·A as an atom and (n+1/2)·A as coefficient×atom: the terms are PRODUCTS of atoms (‖w‖·A is a product of two atoms) — linarith handles nonlinear terms as opaque atoms ONLY if they're syntactically identical products... ‖w‖ * A vs (n + 1/2) * A: linarith's preprocessing (ring_nf) normalizes: both become coefficients × (‖w‖·A atom)?? ‖w‖·A is one nonlinear monomial atom ✓ ring_nf normal forms match ✓ linarith can do it (atoms: ‖w‖*A, A*B'... hstep2 RHS (2n+1)*(A*‖w+..‖) is (2n+1)·A·‖..‖ degree 3 monomial — the goal RHS same monomial ✓; LHS both ‖w‖·A ✓). Should work.\n\n3. **Line 624**: digammaSeriesPart_eq_sub_add_single's hZ — same `intro k hk` mistake (I fixed it in §5's version but §6's has `intro k hk` too — error \"no binders\" with k : w ∈ Set.range — fix identically with obtain).\n\n4. **Line 681/678**: the calc first step: `digammaSeriesPart w = ∑' j, (1/(j+1) − 1/(w+j+1)) := rfl` — the error: the GOAL shows `∑' (j : ℂ), ...` — the tsum over ℂ!! Because digammaSeriesPart w unfolds to ∑' (j : ℕ) but my `:= rfl` step target... the error at 678:55 says rfl : ?m = ?m expected digammaSeriesPart w = ∑' (j : ℂ), ... — the calc RHS got elaborated with j : ℂ (since 1/(j+1) with j unpinned and w + j + 1 forcing ℂ!). My calc step: `_ = ∑' j, (1 / ((j : ℂ) + 1) - 1 / (w + j + 1))` — hmm I wrote `∑' j, (1 / ((j : ℂ) + 1) - 1 / (w + j + 1))` with the cast on the first j but the second `w + j + 1` uncast — j : ℂ inferred. Pin: `∑' (j : ℕ), (1 / ((j : ℂ) + 1) - 1 / (w + (j : ℂ) + 1))`. Wait — but the def digammaSeriesPart w := ∑' j : ℕ, (1 / ((j:ℂ)+1) − 1/(w + j + 1)) — the def's own body has `w + j + 1` with j : ℕ coerced automatically (elaborated when the def was written — the def compiled fine, so its j is ℕ with a hidden coercion). For the rfl step the displays must match up to defeq — rfl works definitionally so a correctly-pinned ℕ-tsum is defeq to the def ✓.\n\nSo fix the calc step 1: `_ = ∑' (j : ℕ), (1 / ((j : ℂ) + 1) - 1 / (w + (j : ℂ) + 1)) := rfl` — defeq with the def ✓ (the def's body after elaboration has the coercions).\n\nAnd step 2's tsum_congr application error: goal LHS showed `∑' (j : ℂ)` — cascades from step 1's mis-elaboration. With the pin it should align.\n\nAlso check the tsum_congr usage: `apply tsum_congr; intro j; by_cases hjj : j = n - 1 <;> simp [hjj]` — goal: full j = sub j + single j: pos: hjj : j = n−1: LHS 1/(j+1)−1/(w+j+1); RHS: 0 + (1/(j+1)−1/(w+j+1)) ✓ simp [hjj]: if_pos... wait — simp [hjj] rewrites j := n−1 EVERYWHERE then if_pos rfl...: LHS becomes 1/((n−1:ℂ)+1) − 1/(w + ↑(n−1) + 1) and RHS 0 + same: simp closes (zero_add) ✓. neg: LHS = RHS via if_neg both: x = x + 0: simp [hjj] with if_neg: RHS = 0 + ... no: RHS = (if j = n−1 then 0 else term) + (if j = n−1 then term else 0) = term + 0 → add_zero ✓ simp closes ✓.\n\n5. Also need to double check hnorm1's `RCLike.norm_natCast` in rw position — earlier error said it's a ∀-form (∀ (n : ℕ), ‖↑n‖ = ↑n) — in rw [e, RCLike.norm_natCast, ...] it rewrites ‖↑?n‖ — should unify ✓ (rw with ∀-form works).\n\nLet me also check `RCLike.norm_ofReal` exact form:","signature":""},{"type":"text","text":"Checking `RCLike.norm_ofReal`'s exact form, then applying the fix batch."},{"type":"tool_use","id":"Bash_162","name":"Bash","input":{"command":"cd D:/Python/Quantum/zeta-23-lean/.lake/packages/mathlib && grep -rn \"theorem RCLike.norm_ofReal\\|lemma RCLike.norm_ofReal\\|norm_ofReal\" Mathlib/Analysis/RCLike/Basic.lean | head -5; grep -rn \"theorem RCLike.norm_ofNat\\|norm_ofNat\" Mathlib/Analysis/RCLike/Basic.lean | head -4","description":"RCLike.norm_ofReal / norm_ofNat forms"},"extra_content":null}]