Zulip Chat Archive

Stream: mathlib4

Topic: Instance search for nat pow times out


Yakov Pechersky (Nov 20 2022 at 23:15):

This appears in mathlib4#549

import Mathlib.Algebra.Group.Basic

structure Units (α : Type u) [Monoid α] where
  val : α

-- comment out any of the instances below to have `mul_pow'` not time out
instance (priority := low) [Monoid α] : Coe (Units α) α :=
  Units.val

instance [Monoid α] : Group (Units α) where
  one := One.one
  mul u₁ u₂ := u₁.val * u₂.val
  inv := fun u => u.1
  one_mul u := sorry
  mul_one u := sorry
  mul_left_inv := sorry
  mul_assoc := sorry

instance {α} [CommMonoid α] : CommGroup (Units α) where
  one := One.one
  mul u₁ u₂ := u₁.val * u₂.val
  inv := fun u => u.1
  one_mul u := sorry
  mul_one u := sorry
  mul_left_inv := sorry
  mul_assoc := sorry
  mul_comm := sorry

variable {M : Type _}

theorem mul_pow' [CommMonoid M] (a b : M) (n : ) : (a * b) ^ n = a ^ n * b ^ n := sorry

Yakov Pechersky (Nov 20 2022 at 23:17):

I am trying to minimize

Yakov Pechersky (Nov 20 2022 at 23:19):

Frustratingly, theorem mul_pow'' [CommMonoid M] (a b : M) (n : ℕ) : Pow.pow (a * b) n = Pow.pow a n * Pow.pow b n := sorry is fine.

Yakov Pechersky (Nov 20 2022 at 23:20):

Similarly, theorem mul_pow'' [CommMonoid M] (a b : M) (n : ℕ) : HPow.hPow (a * b) n = HPow.hPow a n * HPow.hPow b n := sorry is fine


Last updated: Dec 20 2023 at 11:08 UTC