我正在寻找一种工具来确定给定的一组线性方程/不等式 (A) 是否需要另一组给定的线性方程/不等式 (B)。返回值应该是“真”或“假”。
为了说明,让我们看一下 A 和 B 的可能实例以及算法的预期返回值:
A: {Z=3,Y=Z+2, X < Y} ;
B: {X<5} ;
Expected result: true
A: {Z=3,Y=Z+2, X < Y} ;
B: {X<10} ;
Expected result: true
A: {Z=3,Y=Z+2, X < Y} ;
B: {X=3} ;
Expected result: false
A: {X<=Y,X>=Y} ;
B: {X=Y} ;
Expected result: true
A: {X<=Y,X>=Y} ;
B: {X=Y, X>Z+2} ;
Expected result: false
通常 A 包含多达 10 个方程/不等式,B 包含 1 或 2 个。它们都是线性的并且相对简单。我们甚至可以假设所有变量都是整数。
这个任务 - 确定 A 是否需要 B - 是更大系统的一部分,因此我正在寻找已经实现了类似的东西并且我可以使用的工具/源代码/包。
我开始看的东西:
- 代数定理证明器 - Otter、EQP 和 Z3(Vampire 目前无法下载)。
- Coq 正式的证明管理系统。
- 线性规划。
但是,我使用这些工具的经验非常有限,到目前为止我还没有找到有希望的方向。任何比我更有经验的人的指导和想法都将受到高度赞赏。
感谢您的时间!