#公式 #命题 #求解器 #可满足性 #输入 #HTML #

bin+lib propositional-tableau-solver-rs

命题公式命题表求解器

1 个不稳定版本

0.1.0 2020年4月24日

1654数学

MIT 许可证

66KB
1K SLoC

命题表求解器

使用命题表方法编写的一个小型命题公式可满足性求解器,使用 Rust 编程语言实现!

http://www.dis.uniroma1.it/liberato/planning/tableau/tableau.html.

命题公式的语法

求解器的输入必须是良好形式的命题公式。

它可以由以下 BNF 语法描述

<formula>   ::= <propositional-variable>
            |   ( - <formula> )             # negation
            |   ( <formula> ^ <formula>  )  # conjunction
            |   ( <formula> | <formula>  )  # disjunction
            |   ( <formula> -> <formula>  ) # implication
            |   ( <formula> <-> <formula> ) # bi-implication

空白字符被删除并忽略,一个 <propositional-variable> 可以是任何以字母字符开头的数字字母字符序列 [a-zA-Z][a-zA-Z0-9]*。大小写敏感,aaaAAA 是不同的命题变量。

通过 Cargo 运行

模式

CLI 支持对给定命题公式的 satisfiability 模式和 validity 模式进行检查。

使用 -m 模式开关

  1. 有效性模式:-m v.
  2. 可满足性模式(默认):-m s.

输入

有两种方式提供命题公式,使用 - 开关方法具有优先级

  1. CLI 参数开关 -<input_string>
  2. IO 重定向

命令行字符串

使用 -<input_string>

$ cargo run -c "(a^b)"

IO 重定向

或者,将标准输入 stdin 重定向到求解器以提供命题公式。

$ cat input.txt > cargo run

依赖项

~6-15MB
~171K SLoC