Class Logic

All Implemented Interfaces:
ILanguage, ILogic, INode, IPos.IPosable
Direct Known Subclasses:
ALL, AUFLIA, AUFLIRA, AUFNIRA, DifferenceLogic, LIA, LRA, QF_AUFLIA, QF_AX, QF_BV, QF_EIA, QF_FP, QF_NIA, QF_NRA, QF_UF, QF_UFIDL, UFNIA

public abstract class Logic extends SMTExpr.Logic implements ILanguage
Common base for this package's per-logic syntactic-restriction classes (QF_IDL, LRA, QF_UF, etc). Each subclass overrides ILanguage.validExpression(org.smtlib.IExpr), ILanguage.checkFcnDeclaration(org.smtlib.IExpr.IIdentifier, java.util.List<org.smtlib.ISort>, org.smtlib.ISort, org.smtlib.IExpr), and ILanguage.checkSortDeclaration(org.smtlib.IExpr.IIdentifier, java.util.List<org.smtlib.ISort.IParameter>, org.smtlib.ISort) to reject whatever its own logic's SMT-LIB-mandated grammar forbids (quantifiers, uninterpreted functions, nonlinear arithmetic, unrestricted sorts, ...); this class supplies the shared helpers those overrides call (noQuantifiers, noFunctions, noSorts, checkArraySort, isLinearReal, ...).

Extends SMTExpr.Logic (the plain, unrestricted ILogic implementation sexpr.Parser falls back to when no subclass exists for a given logic name -- see issue #46) rather than depending only on the bare ILogic interface, so that a subclass which doesn't override one of the three hooks above still gets that hook's already-permissive default (an empty/no-op override) for free, instead of every subclass having to restate "permit everything" explicitly.