我一直在尝试验证 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 个元素的列表。我能够使用模拟用一个输入来模拟它们,并使用模拟序列用多个输入来模拟它们,但是对于孔域我无法做到,我得到了这个错误:
<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 个元素的电路,但它没有用。
问候。