我正在开发一个用于编写逻辑公式的Python框架。例如,如果我请求a
和b
之间的互斥,则输出将是布尔公式:
"(a --> ¬b)^(b --> ¬a)"
此外,我想使用一些公式作为构建块来构建不同类型的公式,例如Linear Temporal Logic中的公式(它是布尔逻辑的超集)。
问题有两个:
BooleanFormula
),然后:
gen_mutex_formula(a, b)
)?MutExFormula
)继承自基础类(在我的示例中为BooleanFormula
)并在其构造函数中生成公式?当我想创建新类型的公式时,我是从(1)中的类继承并掩盖/覆盖它们的方法还是使用多重继承。后者的例子:
class LTLMutExFormula(LTLFormula, MutExFormula)
在我设计框架时,我应该考虑什么标准和启发式?
PS1。我已经在separate module中定义了逻辑运算符。
PS2。以下是我在公式方面所做的工作:link to module on Github