Package org.smtlib

Interface IExpr.ILambda

All Superinterfaces:
IAttributeValue, IExpr, INode, IPos.IPosable, IResponse
All Known Implementing Classes:
SMTExpr.Lambda
Enclosing interface:
IExpr

public static interface IExpr.ILambda extends IExpr
This interface represents an SMT-LIB lambda expression: (lambda (sorted_var+) term). Lambda is only available as of SMT-LIB version 2.7 and later ("2.7ff") -- it was added to the <term> grammar as part of the optional HO-Core theory (see SMT/logics/HO-Core.smt2), the same way the non-standard par-polymorphic declare-fun extension documents its own version/scope restrictions elsewhere. jSMTLIB has no general runtime mechanism that would reject this node under an older configured version merely for existing; TypeChecker.visit(ILambda) does check the configured SMT-LIB version explicitly, the same way it already does for IExpr.IMatch. A lambda's own sort is the function/array sort mapping its parameters' sorts to its body's sort -- see TypeChecker.visit(ILambda) for exactly how (and under what conditions) that result sort is computed, using the SMT-LIB 2.7 (-> sort+ sort) function-sort constructor that HO-Core also declares.