私はその値val1> = val2をアサートする必要があります。それはモデルチェックの点では、証人(反例)はval1> = val2と主張する必要があります。 Pythonでそれをする方法はありPythonで__CPROVER_assertの効果を得るには?
C1 = True;
C1 = (C1 && (val1 >= val2));
__CPROVER_assert(!C1 ,"constraint sat");
:
私がすることによってC(CBMC)で簡単に行うことができますか?
更新:
C1 = True
C1 = C1 && (val1 >= val2)
assert not C1
File "python_version.py", line 123, in main
assert not C1
AssertionError
を引き起こししかし、私は
C1 = True
C1 = C1 && (val1 >= val2)
assert C1
をすれば、結果は私が(私はしたいとval2> = val1と何をしたいの逆であります)。 編集:
import math
from random import randint
def main():
C1 = True
z = randint(1,10)
r = randint(1,10)
x = z + 2
y = r + 2
C1 = C1 and (x >= y)
assert C1
print(x)
print(y)
z及びR選択された値に応じて、これが破損するか、または通過し、印刷するX、Y。これは__CPROVER_assertとして機能しません。これは、有効/満足の証人/解釈を検出します。
例えば、同じコードの私の3つの異なる実行はと結果:
>mokambo 11:16 PM ~/cost-allocation/Constraint_solving python checkPython.py
Traceback (most recent call last):
File "checkPython.py", line 23, in <module>
main()
File "checkPython.py", line 15, in main
assert C1
AssertionError
>mokambo 11:16 PM ~/cost-allocation/Constraint_solving python checkPython.py
7
4
>mokambo 11:16 PM ~/cost-allocation/Constraint_solving python checkPython.py
12
11
は、Pythonでの制約の充足をチェックする方法があります。
['assert'](https://docs.python.org/2/reference/sim)を使用してくださいple_stmts.html#the-assert-statement)文ですか?例えば'assert(C1 &&(val1> = val2))'である。詳細については、この[stackoverflow post](http://stackoverflow.com/questions/5142418/what-is-the-use-of-assert-in-python)を参照することもできます。 – AKS
@AKSアサートは片道だけを引き起こしています。 val2つまり、私はやっている!(C1 &&(val1> = val2)))それは来る。このval1> = val2を使用すると違反が発生します。 – Pushpa
downvotingの理由は何ですか? – Pushpa