给定一个由 n 个元素 U
组成的集合,以及一组包含 m 个属性 P
的集合,其中 P 的每个元素都定义了从 U 到布尔值的函数。
给定两个形式为(递归定义)的复合逻辑表达式:
p1 : true iff p1(x) is true
e1 and e2 : means e1 and e2 are both true
e1 or e2 : means e1 and e2 are not both false
not e1 : true iff e1 is false
(e1) : true iff e1
这些逻辑表达式被解析为表达式语句(解析树)。
假设对于任意p1、p2:四个集合(p1和p2)、(p1且非p2)、(非p1且p2)、(非p1且非p2)都是非空的。
我想确定逻辑表达式L1是否是L2的子集。也就是说,对于U中的每个元素x,如果L1(x)为true,则L2(x)也为true。
例如:
is_subset(not not p1, p1) is true
is_subset(p1, p2) is false
is_subset(p1 and p2 and p3, (p1 and p2) or p3) is true
我认为我需要以某种方式“规范化”解析树,然后进行比较。是否有人能够概述一种方法或勾勒出一个架构?
x
没有任何结构,它们没有被使用。 - starblue