我需要证明:256 * (x / 256) <= 256 * x / 256
,或更笼统地说forall a b c : N, c > 0 -> a * (b / c) <= a * b / c
。这是正确的,因为b可以被c整除并且它们相等或不相等,并且先相乘可以使数字膨胀并导致更高的精度。但是,我在标准库中找不到能证明这一点的定理,而且我所知没有自动策略(自动,直觉,简单,zify和omega)起作用。如果有帮助,我也知道x < 256 * 256
,但是检查所有65536个案例并不是一个很好的证明...
答案 0 :(得分:4)
在我的特定情况下,我能够这样解决:
rewrite (N.mul_comm 256 x).
这会在右侧切换到256 * (x / 256) <= x * 256 / 256
。
rewrite (N.div_mul x 256).
这将右侧缩小为256 * (x / 256) <= x
。
rewrite (N.mul_div_le x 256).
采用这种自动策略后就可以了。