获取 Lambda 演算表达式中的谓词

Obtaining the predicates in a Lambda Calculus Expression

在给定的 lambda 演算表达式中获取谓词的代码是什么。

给定 lambda 表达式

(race(x) & run(I2,x))

我知道 race 和 运行 是谓词。

我如何提取代码或任何给定代码中的谓词?

如果您已经在使用 NLTK,您可以重新使用他们的解析器(假设您的表达式是字符串):

import nltk

read_expr = nltk.sem.Expression.fromstring

teststr = '(race(x) & run(I2,x))'

parsed = read_expr(teststr)
for p in parsed.predicates():
    print(p)