#[allow(unused_imports)]
use super::super::super::prelude::*;
verus! {
#[verifier::nonlinear]
pub proof fn lemma_mul_strictly_positive(x: int, y: int)
ensures
(0 < x && 0 < y) ==> (0 < x * y),
{
}
#[verifier::nonlinear]
pub proof fn lemma_mul_nonzero(x: int, y: int)
ensures
x * y != 0 <==> x != 0 && y != 0,
{
}
#[verifier::nonlinear]
pub proof fn lemma_mul_is_associative(x: int, y: int, z: int)
ensures
x * (y * z) == (x * y) * z,
{
}
#[verifier::nonlinear]
pub proof fn lemma_mul_is_distributive_add(x: int, y: int, z: int)
ensures
x * (y + z) == x * y + x * z,
{
}
#[verifier::nonlinear]
pub proof fn lemma_mul_ordering(x: int, y: int)
requires
x != 0,
y != 0,
0 <= x * y,
ensures
x * y >= x && x * y >= y,
{
}
#[verifier::nonlinear]
pub proof fn lemma_mul_strict_inequality(x: int, y: int, z: int)
requires
x < y,
z > 0,
ensures
x * z < y * z,
{
}
}