pub open spec fn wrapping_mul(x: usize, y: usize) -> usize
{ ((x as nat * y as nat) % (usize::MAX - usize::MIN + 1) as nat) as usize }