Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在我的代码中以编程方式结合假设,而不是作为测试?(使用假设来区分自动机和Python函数)_Python_Dfa_Model Checking_Python Hypothesis - Fatal编程技术网

如何在我的代码中以编程方式结合假设,而不是作为测试?(使用假设来区分自动机和Python函数)

如何在我的代码中以编程方式结合假设,而不是作为测试?(使用假设来区分自动机和Python函数),python,dfa,model-checking,python-hypothesis,Python,Dfa,Model Checking,Python Hypothesis,我有一个Python函数,它描述了语言L,它获取一个单词,如果单词在语言中,则返回True,否则返回False。 另外,我有一个确定性有限自动机(DFA),它描述了另一种语言L2,我想检查L2是否=L。 我想也许我可以使用假设库来获得反例并区分函数和DFA,但我不知道如何以编程方式在代码中组合假设,而不是作为测试。 谢谢看起来你在假设问题追踪器上问了这个问题-谢谢你按照建议把它移到这里:-)把我的答案也传给后代: 这里的关键洞察是,您可以像调用任何其他函数一样调用假设包装函数,并让内部函数保存其

我有一个Python函数,它描述了语言L,它获取一个单词,如果单词在语言中,则返回True,否则返回False。 另外,我有一个确定性有限自动机(DFA),它描述了另一种语言L2,我想检查L2是否=L。 我想也许我可以使用假设库来获得反例并区分函数和DFA,但我不知道如何以编程方式在代码中组合假设,而不是作为测试。
谢谢

看起来你在假设问题追踪器上问了这个问题-谢谢你按照建议把它移到这里:-)把我的答案也传给后代:

这里的关键洞察是,您可以像调用任何其他函数一样调用假设包装函数,并让内部函数保存其输入。例如:

反例=无
@给定(x=st.整数()
def检查(f、g、x):
如果f(x)!=g(x):
全球反例
反例=x
提出断言错误
使用contextlib.suppress(断言错误):
检查(f=math.sin,g=math.cos)
断言反例不是无