我有一个小型Scala程序,可将Scala ^ Z3 DSL表达式转换为乳胶,以便于阅读。但我不知道如何使用DSL声明一个未解释的函数。有许多方法可以使用其他结构来破解函数的行为,并且很容易打印出被破解的函数,因此它看起来像是乳胶中的普通函数。但我宁愿只是声明一个未解释的函数,如果可能的话。
答案 0 :(得分:1)
使用未解释函数解决的一种方法是在Val[_]
类型构造函数中使用Scala函数类型。例如:
import z3.scala._
import z3.scala.dsl._
choose(
(x : Val[Int], f : Val[Int=>Int]) => x < f(x)
)
> res0: (Int, Int=>Int) = (0,<function1>)
然后该函数由实际的Scala函数建模:
val f = res0._2
f(0)
> 1