基本上我需要在下面将这个属性表示为 lisp 中的一个函数
(p and q) or (r and t) = (p or r) and (p or t) and (q or r) and (q or t)
函数distribute-or (fbf) 将类型的公式作为参数
(or (and a b) c )
并将其转化为(and (or a c) (or b c))
但是,问题是你不知道 or-formula 可以有多少个参数,哪些是字母,哪些是字母的连词。它可以是以下任何示例
(or a b)
保持原样
(or a b c (and d e f)
应该变成(and (or a b c d) (or a b c e) (or a b c f)
(or (and a b) (and d e))
哪个交(and (or a d) (or a e) (or b d) (or b e))
只有当“或”有 2 个参数时,我才能设计一个函数,但如果它有更多参数,我不知道该怎么做。