我一直在努力验证Chalmers Lava中两个电路之间的等效性。我已声明了一个类型位:
type Bit = Signal Bool
我有两个电路,每个电路都有一个位列表作为输入和一个位列表元组,以及一个检查它们等价的函数:
circuit1:: [Bit] ->([Bit],[Bit])
circuit2:: [Bit] ->([Bit],[Bit])
propEquiv input = ok
where
out1 = circuit1 input
out2 = circuit2 input
ok = out1 <==> out2
这两个电路将输入作为64个元素的列表。 我能够使用模拟使用一个输入来模拟它们,并使用simulateSeq使用多个模拟它们,但是对于孔域我不能并且我得到了这个错误:
<interactive>:7:20:
No instance for (Finite [Bit]) arising from a use of `domain'
In the second argument of `simulateSeq', namely `domain'
In the expression: simulateSeq ipSpec domain
In an equation for `it': it = simulateSeq ipSpec domain
(第7行我有类型声明)
同样对于propEquiv,我可以模拟它,但我无法使用satzoo验证它,我得到了这个错误:
*Main> satzoo propEquiv
<interactive>:9:1:
No instance for (Fresh [Bit]) arising from a use of `satzoo'
In the expression: satzoo propEquiv
In an equation for `it': it = satzoo propEquiv
*Main>
我理解他们两人在网上搜索时都找不到任何东西,有人可以帮我这个吗?我试图用列表中的64个元素来定义电路,但它没有用。
问候。