如何用合金模数模运算符?
我想尝试使用合金来证明4的任意倍数可以被2整除....
这是我的代码..
//proof that 4n is divisible by 2
module I4nDivisibleby2
sig num {}
fact {
all n:num|n%4=0
}
assert even {
all n : num | n%2 = 0
}
check even for 1
这不编译
答案 0 :(得分:4)
您应该使用库定义的rem
函数。 rem
函数有两个整数,因此您无法为num
的实例调用它;相反,你可以做类似
module I4nDivisibleby2
sig num {
val: Int
}
fact {
all n:num | rem[n.val, 4] = 0
}
assert even {
all n : num | rem[n.val, 2] = 0
}
check even // => no counterexample found