Zulip Chat Archive

Stream: mathlib4

Topic: ZMod maximum recursion depth


Jakob von Raumer (Jul 04 2023 at 11:10):

Has anybody come across this issue yet?

import Mathlib.Data.ZMod.Basic

example (x : ZMod 128) : ZMod (2^256) :=  x.cast  -- gives maximum recursion depth error

There's a workaround by evaulating 2^256 first, but this is pretty annoying

Kevin Buzzard (Jul 04 2023 at 11:28):

It's not the cast:

import Mathlib.Data.ZMod.Basic

example (x : ) : ZMod (2^256) := x -- max recursion

Jakob von Raumer (Jul 04 2023 at 11:34):

Yes, it's the modulus

Jakob von Raumer (Jul 04 2023 at 11:36):

But since the issue doesn't occur when replacing ZMod by Fin, I assume that to evaluate the cast (from Nat or from wherever) it needs to evaluate the modulus to determine whether it is 0, which in turn causes the issue

Matthew Ballard (Jul 04 2023 at 15:07):

def Bar : Nat   Type
  | 0 => Unit
  | _ => Unit

def foo : Bar (2^256) := .unit  -- max recursion

Last updated: Dec 20 2023 at 11:08 UTC