Zulip Chat Archive

Stream: new members

Topic: Multiply an Alpha type with a natural type.


Colin Jones ⚛️ (Apr 28 2024 at 20:03):

Hi all,

I was wondering if it was possible to easily set up the second definition summa_mul to work out. In the second definition, I need help adding an instance to allow for the multiplication of an alpha and a natural number. Is this possible? And, if so, how can I do this?

import Mathlib

open BigOperators Filter Finset Nat Set

variable (n m : ) (w z : ) (p q : ) (x y : ) (a b : α)

def summa (a : α) [AddCommMonoid α] : α :=  i in range n, a

def summa_mul (a : α) [AddCommMonoid α] [HMul α ] : α :=  i in range n, a*i
-- Here is the error!

#eval summa 5 (8/9 : )

#eval summa 8 (1/2 : )

Kevin Buzzard (Apr 28 2024 at 20:48):

docs#HMul takes three inputs: if you feed it X, Y and Z, then this means that x * y : Z if x : X and y : Y. So if you want the type of a * i to be alpha again, then you want [HMul α ℕ α].

Eric Wieser (Apr 28 2024 at 21:01):

Usually we would write this

def summa_mul (a : α) [AddCommMonoid α] : α :=  i in range n, i  a

Eric Wieser (Apr 28 2024 at 21:01):

Here is "the obvious multiplication by the naturals" not just "some arbitrary function that is written with a * symbol


Last updated: May 02 2025 at 03:31 UTC