我的问题:符号表达式操作。
在 +、-、*、/、min、max 等运算符的帮助下,从整数常量和变量开始构建符号表达式。更确切地说,我会用以下方式表示一个表达式(Caml 代码):
type sym_expr_t =
| PlusInf
| MinusInf
| Const of int
| Var of var_t
| Add of sym_expr_t * sym_expr_t
| Sub of sym_expr_t * sym_expr_t
| Mul of sym_expr_t * sym_expr_t
| Div of sym_expr_t * sym_expr_t
| Min of sym_expr_t * sym_expr_t
| Max of sym_expr_t * sym_expr_t
我想,为了执行有用且高效的计算(例如 a + b - a = 0 或 a + 1 > a),我需要有某种范式并对其进行操作。上述表示可能不太好。
有人可以指出我应该如何处理这个问题吗?我不需要代码。如果我知道怎么写,那可以很容易地写出来。提供范式表示和/或构造/简化/比较算法的论文的链接也会有所帮助。
另外,如果您知道这样做的 Ocaml 库,请告诉我。