tools.aqua.konstraints.smt.Logic.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of konstraints Show documentation
Show all versions of konstraints Show documentation
A library for working with SMT Expressions in the JVM
The newest version!
/*
* SPDX-License-Identifier: Apache-2.0
*
* Copyright 2023-2024 The Konstraints Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package tools.aqua.konstraints.smt
import tools.aqua.konstraints.parser.Theory
import tools.aqua.konstraints.theories.*
interface Logic {
val theories: List
val datatypes: Boolean
val quantifierFree: Boolean
val linearArithmetic: Boolean
val nonlinearArithmetic: Boolean
val differentialArithmetic: Boolean
val freeSortFunctionSymbols: Boolean
}
/**
* This logic does not yet provide an offical documentation, but has the the following properties:
*
* This logic includes the following theories:
* - FixedSizeBitVectors
* - FloatingPoint
*/
data object BVFP : Logic {
override val theories = listOf(CoreTheory, BitVectorExpressionTheory, FloatingPointTheory)
override val datatypes = false
override val quantifierFree = false
override val linearArithmetic = false
override val nonlinearArithmetic = false
override val differentialArithmetic = false
override val freeSortFunctionSymbols = false
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
* - Linear arithmetic
* - Nonlinear arithmetic
* - Differential logics This logic includes the following theories:
* - Reals
*/
data object NRA : Logic {
override val theories = listOf(CoreTheory, RealsTheory)
override val datatypes = false
override val quantifierFree = false
override val linearArithmetic = true
override val nonlinearArithmetic = true
override val differentialArithmetic = true
override val freeSortFunctionSymbols = false
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
* - Free sort and function symbols
* - Quantifier free This logic includes the following theories:
* - FixedSizeBitVectors
* - FloatingPoint
* - ArraysEx
*/
data object QF_AUFBVFP : Logic {
override val theories =
listOf(CoreTheory, BitVectorExpressionTheory, FloatingPointTheory, ArrayExTheory)
override val datatypes = false
override val quantifierFree = true
override val linearArithmetic = false
override val nonlinearArithmetic = false
override val differentialArithmetic = false
override val freeSortFunctionSymbols = true
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
* - Free sort and function symbols This logic includes the following theories:
* - FixedSizeBitVectors
* - FloatingPoint
* - ArraysEx
*/
data object AUFBVFP : Logic {
override val theories =
listOf(CoreTheory, BitVectorExpressionTheory, FloatingPointTheory, ArrayExTheory)
override val datatypes = false
override val quantifierFree = false
override val linearArithmetic = false
override val nonlinearArithmetic = false
override val differentialArithmetic = false
override val freeSortFunctionSymbols = true
}
/**
* Closed formulas built over an arbitrary expansion of the Ints signature with free sort and
* function symbols.
*/
data object UFNIA : Logic {
override val theories = listOf(CoreTheory, IntsTheory)
override val datatypes = false
override val quantifierFree = false
override val linearArithmetic = true
override val nonlinearArithmetic = true
override val differentialArithmetic = true
override val freeSortFunctionSymbols = true
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
* - Free sort and function symbols
* - Quantifier free
* - Linear arithmetic
* - Nonlinear arithmetic
* - Differential logics This logic includes the following theories:
* - Ints
*/
data object QF_UFNIA : Logic {
override val theories = listOf(CoreTheory, IntsTheory)
override val datatypes = false
override val quantifierFree = true
override val linearArithmetic = true
override val nonlinearArithmetic = true
override val differentialArithmetic = true
override val freeSortFunctionSymbols = true
}
/**
* Closed quantifier-free formulas with atoms of the form:
* - p
* - (op (- x y) c),
* - (op x y),
* - (op (- (+ x ... x) (+ y ... y)) c) with n > 1 occurrences of x and of y,
*
* where
* - p is a variable or free constant symbol of sort Bool,
* - c is an expression of the form m or (- m) for some numeral m,
* - op is <, <=, >, >=, =, or distinct,
* - x, y are free constant symbols of sort Real.
*/
data object QF_RDL : Logic {
override val theories = listOf(CoreTheory, RealsTheory)
override val datatypes = false
override val quantifierFree = true
override val linearArithmetic = false
override val nonlinearArithmetic = false
override val differentialArithmetic = true
override val freeSortFunctionSymbols = false
}
/**
* Closed quantifier-free formulas built over an arbitrary expansion of the Ints signature with free
* constant symbols, but whose terms of sort Int are all linear, that is, have no occurrences of the
* function symbols /, div, mod, and abs, and no occurrences of the function symbol *, except as
* specified in the :extensions attribute.
*/
data object QF_LIA : Logic {
override val theories = listOf(CoreTheory, IntsTheory)
override val datatypes = false
override val quantifierFree = true
override val linearArithmetic = true
override val nonlinearArithmetic = false
override val differentialArithmetic = true
override val freeSortFunctionSymbols = false
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
* - Quantifier free This logic includes the following theories:
* - FixedSizeBitVectors
* - FloatingPoint
*/
data object QF_BVFP : Logic {
override val theories = listOf(CoreTheory, BitVectorExpressionTheory, FloatingPointTheory)
override val datatypes = false
override val quantifierFree = true
override val linearArithmetic = false
override val nonlinearArithmetic = false
override val differentialArithmetic = false
override val freeSortFunctionSymbols = false
}
/**
* Closed formulas built over arbitrary expansions of the Ints and ArraysEx signatures with free
* sort and function symbols, but with the following restrictions:
* - all terms of sort Int are linear, that is, have no occurrences of the function symbols *, /,
* div, mod, and abs, except as specified in the :extensions attributes;
* - all array terms have sort (Array Int Int).
*/
data object AUFLIA : Logic {
override val theories = listOf(CoreTheory, ArrayExTheory, IntsTheory)
override val datatypes = false
override val quantifierFree = false
override val linearArithmetic = true
override val nonlinearArithmetic = false
override val differentialArithmetic = true
override val freeSortFunctionSymbols = true
}
/**
* Closed quantifier-free formulas built over an arbitrary expansion of the Ints signature with free
* constant symbols.
*/
data object QF_NIA : Logic {
override val theories = listOf(CoreTheory, IntsTheory)
override val datatypes = false
override val quantifierFree = true
override val linearArithmetic = true
override val nonlinearArithmetic = true
override val differentialArithmetic = true
override val freeSortFunctionSymbols = false
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
* - Free sort and function symbols
* - Datatype support
* - Quantifier free
* - Linear arithmetic
* - Differential logics This logic includes the following theories:
* - Ints
*/
data object QF_UFDTLIA : Logic {
override val theories = listOf(CoreTheory, IntsTheory)
override val datatypes = true
override val quantifierFree = true
override val linearArithmetic = true
override val nonlinearArithmetic = false
override val differentialArithmetic = true
override val freeSortFunctionSymbols = true
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
* - Free sort and function symbols
* - Datatype support This logic includes the following theories:
* - FixedSizeBitVectors
*/
data object UFBVDT : Logic {
override val theories = listOf(CoreTheory, BitVectorExpressionTheory)
override val datatypes = true
override val quantifierFree = false
override val linearArithmetic = false
override val nonlinearArithmetic = false
override val differentialArithmetic = false
override val freeSortFunctionSymbols = true
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
* - Free sort and function symbols This logic includes the following theories:
* - FixedSizeBitVectors
*/
data object UFBV : Logic {
override val theories = listOf(CoreTheory, BitVectorExpressionTheory)
override val datatypes = false
override val quantifierFree = false
override val linearArithmetic = false
override val nonlinearArithmetic = false
override val differentialArithmetic = false
override val freeSortFunctionSymbols = true
}
/**
* Closed quantifier-free formulas built over arbitrary expansions of the Reals signature with free
* sort and function symbols, but containing only linear atoms, that is, atoms with no occurrences
* of the function symbols * and /, except as specified the :extensions attribute.
*/
data object QF_UFLRA : Logic {
override val theories = listOf(CoreTheory, RealsTheory)
override val datatypes = false
override val quantifierFree = true
override val linearArithmetic = true
override val nonlinearArithmetic = false
override val differentialArithmetic = true
override val freeSortFunctionSymbols = true
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
* - Quantifier free This logic includes the following theories:
* - FloatingPoint
*/
data object QF_FP : Logic {
override val theories = listOf(CoreTheory, FloatingPointTheory)
override val datatypes = false
override val quantifierFree = true
override val linearArithmetic = false
override val nonlinearArithmetic = false
override val differentialArithmetic = false
override val freeSortFunctionSymbols = false
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
* - Quantifier free
* - Linear arithmetic
* - Nonlinear arithmetic
* - Differential logics This logic includes the following theories:
* - Ints
* - Strings
*/
data object QF_SNIA : Logic {
override val theories = listOf(CoreTheory, IntsTheory, StringsTheory)
override val datatypes = false
override val quantifierFree = true
override val linearArithmetic = true
override val nonlinearArithmetic = true
override val differentialArithmetic = true
override val freeSortFunctionSymbols = false
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
* - Free sort and function symbols
* - Datatype support
* - Quantifier free
* - Linear arithmetic
* - Nonlinear arithmetic
* - Differential logics This logic includes the following theories:
* - Ints
*/
data object QF_UFDTNIA : Logic {
override val theories = listOf(CoreTheory, IntsTheory)
override val datatypes = true
override val quantifierFree = true
override val linearArithmetic = true
override val nonlinearArithmetic = true
override val differentialArithmetic = true
override val freeSortFunctionSymbols = true
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
* - Quantifier free
* - Linear arithmetic
* - Differential logics This logic includes the following theories:
* - FixedSizeBitVectors
* - FloatingPoint
* - Reals
*/
data object QF_BVFPLRA : Logic {
override val theories =
listOf(CoreTheory, BitVectorExpressionTheory, FloatingPointTheory, RealsTheory)
override val datatypes = false
override val quantifierFree = true
override val linearArithmetic = true
override val nonlinearArithmetic = false
override val differentialArithmetic = true
override val freeSortFunctionSymbols = false
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
*
* This logic includes the following theories:
* - FixedSizeBitVectors
* - ArraysEx
*/
data object ABV : Logic {
override val theories = listOf(CoreTheory, BitVectorExpressionTheory, ArrayExTheory)
override val datatypes = false
override val quantifierFree = false
override val linearArithmetic = false
override val nonlinearArithmetic = false
override val differentialArithmetic = false
override val freeSortFunctionSymbols = false
}
/**
* Closed formulas built over arbitrary expansions of the Reals signature with free constant
* symbols, but containing only linear atoms, that is, atoms with no occurrences of the function
* symbols * and /, except as specified the :extensions attribute.
*/
data object LRA : Logic {
override val theories = listOf(CoreTheory, RealsTheory)
override val datatypes = false
override val quantifierFree = false
override val linearArithmetic = true
override val nonlinearArithmetic = false
override val differentialArithmetic = true
override val freeSortFunctionSymbols = false
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
* - Free sort and function symbols
* - Linear arithmetic
* - Nonlinear arithmetic
* - Differential logics This logic includes the following theories:
* - Reals_Ints
*/
data object UFNIRA : Logic {
override val theories = listOf(CoreTheory, RealsIntsTheory)
override val datatypes = false
override val quantifierFree = false
override val linearArithmetic = true
override val nonlinearArithmetic = true
override val differentialArithmetic = true
override val freeSortFunctionSymbols = true
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
* - Free sort and function symbols
* - Quantifier free This logic includes the following theories:
* - FloatingPoint
*/
data object QF_UFFP : Logic {
override val theories = listOf(CoreTheory, FloatingPointTheory)
override val datatypes = false
override val quantifierFree = true
override val linearArithmetic = false
override val nonlinearArithmetic = false
override val differentialArithmetic = false
override val freeSortFunctionSymbols = true
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
* - Free sort and function symbols
* - Datatype support
* - Linear arithmetic
* - Differential logics This logic includes the following theories:
* - Reals_Ints
*/
data object UFDTLIRA : Logic {
override val theories = listOf(CoreTheory, RealsIntsTheory)
override val datatypes = true
override val quantifierFree = false
override val linearArithmetic = true
override val nonlinearArithmetic = false
override val differentialArithmetic = true
override val freeSortFunctionSymbols = true
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
* - Free sort and function symbols
* - Linear arithmetic
* - Differential logics This logic includes the following theories:
* - Ints
*/
data object UFLIA : Logic {
override val theories = listOf(CoreTheory, IntsTheory)
override val datatypes = false
override val quantifierFree = false
override val linearArithmetic = true
override val nonlinearArithmetic = false
override val differentialArithmetic = true
override val freeSortFunctionSymbols = true
}
/**
* Closed formulas built over arbitrary expansions of the Reals_Ints and ArraysEx signatures with
* free sort and function symbols, but with the following restrictions:
* - all terms of sort Int are linear, that is, have no occurrences of the function symbols *, /,
* div, mod, and abs, except as specified in the :extensions attributes;
* - all terms of sort Real are linear, that is, have no occurrences of the function symbols * and
* /, except as specified in the :extensions attribute;
* - all array terms have sort (Array Int Real) or (Array Int (Array Int Real)).
*/
data object AUFLIRA : Logic {
override val theories = listOf(CoreTheory, ArrayExTheory, RealsIntsTheory)
override val datatypes = false
override val quantifierFree = false
override val linearArithmetic = true
override val nonlinearArithmetic = false
override val differentialArithmetic = true
override val freeSortFunctionSymbols = true
}
/**
* Closed formulas built over an arbitrary expansion of the Ints signature with free constant
* symbols, but whose terms of sort Int are all linear, that is, have no occurrences of the function
* symbols *, /, div, mod, and abs, except as specified the :extensions attribute.
*/
data object LIA : Logic {
override val theories = listOf(CoreTheory, IntsTheory)
override val datatypes = false
override val quantifierFree = false
override val linearArithmetic = true
override val nonlinearArithmetic = false
override val differentialArithmetic = true
override val freeSortFunctionSymbols = false
}
/**
* Closed quantifier-free formulas built over the FixedSizeBitVectors and ArraysEx signatures, with
* the restriction that all array terms have sort of the form (Array (_ BitVec i) (_ BitVec j)) for
* some i, j > 0.
*/
data object QF_ABV : Logic {
override val theories = listOf(CoreTheory, BitVectorExpressionTheory, ArrayExTheory)
override val datatypes = false
override val quantifierFree = true
override val linearArithmetic = false
override val nonlinearArithmetic = false
override val differentialArithmetic = false
override val freeSortFunctionSymbols = false
}
/**
* Closed quantifier-free formulas built over an arbitrary expansion of the FixedSizeBitVectors and
* ArraysEx signatures with free sort and function symbols, but with the restriction that all array
* terms have sort of the form (Array (_ BitVec i) (_ BitVec j)) for some i, j > 0.
*/
data object QF_AUFBV : Logic {
override val theories = listOf(CoreTheory, BitVectorExpressionTheory, ArrayExTheory)
override val datatypes = false
override val quantifierFree = true
override val linearArithmetic = false
override val nonlinearArithmetic = false
override val differentialArithmetic = false
override val freeSortFunctionSymbols = true
}
/**
* Closed quantifier-free formulas built over an arbitrary expansion of the FixedSizeBitVectors
* signature with free constant symbols over the sorts (_ BitVec m) for 0 < m. Formulas in ite terms
* must satisfy the same restriction as well, with the exception that they need not be closed
* (because they may be in the scope of a let binder).
*/
data object QF_BV : Logic {
override val theories = listOf(CoreTheory, BitVectorExpressionTheory)
override val datatypes = false
override val quantifierFree = true
override val linearArithmetic = false
override val nonlinearArithmetic = false
override val differentialArithmetic = false
override val freeSortFunctionSymbols = false
}
/**
* Closed quantifier-free formulas built over arbitrary expansions of the Reals signature with free
* constant symbols.
*/
data object QF_NRA : Logic {
override val theories = listOf(CoreTheory, RealsTheory)
override val datatypes = false
override val quantifierFree = true
override val linearArithmetic = true
override val nonlinearArithmetic = true
override val differentialArithmetic = true
override val freeSortFunctionSymbols = false
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
* - Free sort and function symbols
* - Datatype support
* - Quantifier free This logic includes the following theories:
*/
data object QF_UFDT : Logic {
override val theories = listOf(CoreTheory)
override val datatypes = true
override val quantifierFree = true
override val linearArithmetic = false
override val nonlinearArithmetic = false
override val differentialArithmetic = false
override val freeSortFunctionSymbols = true
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
*
* This logic includes the following theories:
* - FixedSizeBitVectors
*/
data object BV : Logic {
override val theories = listOf(CoreTheory, BitVectorExpressionTheory)
override val datatypes = false
override val quantifierFree = false
override val linearArithmetic = false
override val nonlinearArithmetic = false
override val differentialArithmetic = false
override val freeSortFunctionSymbols = false
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
* - Free sort and function symbols
* - Datatype support
* - Quantifier free
* - Linear arithmetic
* - Differential logics This logic includes the following theories:
* - Reals_Ints
*/
data object QF_UFDTLIRA : Logic {
override val theories = listOf(CoreTheory, RealsIntsTheory)
override val datatypes = true
override val quantifierFree = true
override val linearArithmetic = true
override val nonlinearArithmetic = false
override val differentialArithmetic = true
override val freeSortFunctionSymbols = true
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
* - Free sort and function symbols
* - Datatype support
* - Linear arithmetic
* - Nonlinear arithmetic
* - Differential logics This logic includes the following theories:
* - FixedSizeBitVectors
* - ArraysEx
* - Reals_Ints
*/
data object AUFBVDTNIRA : Logic {
override val theories =
listOf(CoreTheory, BitVectorExpressionTheory, ArrayExTheory, RealsIntsTheory)
override val datatypes = true
override val quantifierFree = false
override val linearArithmetic = true
override val nonlinearArithmetic = true
override val differentialArithmetic = true
override val freeSortFunctionSymbols = true
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
* - Quantifier free
* - Linear arithmetic
* - Differential logics This logic includes the following theories:
* - FixedSizeBitVectors
* - FloatingPoint
* - ArraysEx
* - Reals
*/
data object QF_ABVFPLRA : Logic {
override val theories =
listOf(CoreTheory, BitVectorExpressionTheory, FloatingPointTheory, ArrayExTheory, RealsTheory)
override val datatypes = false
override val quantifierFree = true
override val linearArithmetic = true
override val nonlinearArithmetic = false
override val differentialArithmetic = true
override val freeSortFunctionSymbols = false
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
* - Quantifier free
* - Linear arithmetic
* - Differential logics This logic includes the following theories:
* - ArraysEx
* - Ints
*/
data object QF_ALIA : Logic {
override val theories = listOf(CoreTheory, ArrayExTheory, IntsTheory)
override val datatypes = false
override val quantifierFree = true
override val linearArithmetic = true
override val nonlinearArithmetic = false
override val differentialArithmetic = true
override val freeSortFunctionSymbols = false
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
*
* This logic includes the following theories:
* - FixedSizeBitVectors
* - FloatingPoint
* - ArraysEx
*/
data object ABVFP : Logic {
override val theories =
listOf(CoreTheory, BitVectorExpressionTheory, FloatingPointTheory, ArrayExTheory)
override val datatypes = false
override val quantifierFree = false
override val linearArithmetic = false
override val nonlinearArithmetic = false
override val differentialArithmetic = false
override val freeSortFunctionSymbols = false
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
* - Free sort and function symbols
* - Quantifier free
* - Linear arithmetic
* - Nonlinear arithmetic
* - Differential logics This logic includes the following theories:
* - ArraysEx
* - Ints
*/
data object QF_AUFNIA : Logic {
override val theories = listOf(CoreTheory, ArrayExTheory, IntsTheory)
override val datatypes = false
override val quantifierFree = true
override val linearArithmetic = true
override val nonlinearArithmetic = true
override val differentialArithmetic = true
override val freeSortFunctionSymbols = true
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
* - Free sort and function symbols
* - Datatype support
* - Linear arithmetic
* - Differential logics This logic includes the following theories:
* - Ints
*/
data object UFDTLIA : Logic {
override val theories = listOf(CoreTheory, IntsTheory)
override val datatypes = true
override val quantifierFree = false
override val linearArithmetic = true
override val nonlinearArithmetic = false
override val differentialArithmetic = true
override val freeSortFunctionSymbols = true
}
/**
* Closed formulas built over arbitrary expansions of the Reals signature with free sort and
* function symbols, but containing only linear atoms, that is, atoms with no occurrences of the
* function symbols * and /, except as specified the :extensions attribute.
*/
data object UFLRA : Logic {
override val theories = listOf(CoreTheory, RealsTheory)
override val datatypes = false
override val quantifierFree = false
override val linearArithmetic = true
override val nonlinearArithmetic = false
override val differentialArithmetic = true
override val freeSortFunctionSymbols = true
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
* - Linear arithmetic
* - Nonlinear arithmetic
* - Differential logics This logic includes the following theories:
* - ArraysEx
* - Ints
*/
data object ANIA : Logic {
override val theories = listOf(CoreTheory, ArrayExTheory, IntsTheory)
override val datatypes = false
override val quantifierFree = false
override val linearArithmetic = true
override val nonlinearArithmetic = true
override val differentialArithmetic = true
override val freeSortFunctionSymbols = false
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
* - Free sort and function symbols
* - Datatype support
* - Linear arithmetic
* - Nonlinear arithmetic
* - Differential logics This logic includes the following theories:
* - FloatingPoint
* - ArraysEx
* - Reals_Ints
*/
data object AUFFPDTNIRA : Logic {
override val theories = listOf(CoreTheory, FloatingPointTheory, ArrayExTheory, RealsIntsTheory)
override val datatypes = true
override val quantifierFree = false
override val linearArithmetic = true
override val nonlinearArithmetic = true
override val differentialArithmetic = true
override val freeSortFunctionSymbols = true
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
* - Free sort and function symbols
* - Datatype support
* - Linear arithmetic
* - Differential logics This logic includes the following theories:
* - FixedSizeBitVectors
* - ArraysEx
* - Ints
*/
data object AUFBVDTLIA : Logic {
override val theories = listOf(CoreTheory, BitVectorExpressionTheory, ArrayExTheory, IntsTheory)
override val datatypes = true
override val quantifierFree = false
override val linearArithmetic = true
override val nonlinearArithmetic = false
override val differentialArithmetic = true
override val freeSortFunctionSymbols = true
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
* - Free sort and function symbols
* - Datatype support
* - Linear arithmetic
* - Nonlinear arithmetic
* - Differential logics This logic includes the following theories:
* - FixedSizeBitVectors
* - ArraysEx
* - Ints
*/
data object AUFBVDTNIA : Logic {
override val theories = listOf(CoreTheory, BitVectorExpressionTheory, ArrayExTheory, IntsTheory)
override val datatypes = true
override val quantifierFree = false
override val linearArithmetic = true
override val nonlinearArithmetic = true
override val differentialArithmetic = true
override val freeSortFunctionSymbols = true
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
* - Linear arithmetic
* - Differential logics This logic includes the following theories:
* - FixedSizeBitVectors
* - FloatingPoint
* - ArraysEx
* - Reals
*/
data object ABVFPLRA : Logic {
override val theories =
listOf(CoreTheory, BitVectorExpressionTheory, FloatingPointTheory, ArrayExTheory, RealsTheory)
override val datatypes = false
override val quantifierFree = false
override val linearArithmetic = true
override val nonlinearArithmetic = false
override val differentialArithmetic = true
override val freeSortFunctionSymbols = false
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
* - Linear arithmetic
* - Differential logics This logic includes the following theories:
* - ArraysEx
* - Ints
*/
data object ALIA : Logic {
override val theories = listOf(CoreTheory, ArrayExTheory, IntsTheory)
override val datatypes = false
override val quantifierFree = false
override val linearArithmetic = true
override val nonlinearArithmetic = false
override val differentialArithmetic = true
override val freeSortFunctionSymbols = false
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
* - Free sort and function symbols
* - Datatype support
* - Linear arithmetic
* - Nonlinear arithmetic
* - Differential logics This logic includes the following theories:
* - ArraysEx
* - Reals_Ints
*/
data object AUFDTNIRA : Logic {
override val theories = listOf(CoreTheory, ArrayExTheory, RealsIntsTheory)
override val datatypes = true
override val quantifierFree = false
override val linearArithmetic = true
override val nonlinearArithmetic = true
override val differentialArithmetic = true
override val freeSortFunctionSymbols = true
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
* - Free sort and function symbols
* - Datatype support
* - Linear arithmetic
* - Differential logics This logic includes the following theories:
* - ArraysEx
* - Reals_Ints
*/
data object AUFDTLIRA : Logic {
override val theories = listOf(CoreTheory, ArrayExTheory, RealsIntsTheory)
override val datatypes = true
override val quantifierFree = false
override val linearArithmetic = true
override val nonlinearArithmetic = false
override val differentialArithmetic = true
override val freeSortFunctionSymbols = true
}
/**
* Closed formulas built over arbitrary expansions of the Reals_Ints and ArraysEx signatures with
* free sort and function symbols.
*/
data object AUFNIRA : Logic {
override val theories = listOf(CoreTheory, ArrayExTheory, RealsIntsTheory)
override val datatypes = false
override val quantifierFree = false
override val linearArithmetic = true
override val nonlinearArithmetic = true
override val differentialArithmetic = true
override val freeSortFunctionSymbols = true
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
* - Linear arithmetic
* - Differential logics This logic includes the following theories:
* - FixedSizeBitVectors
* - FloatingPoint
* - Reals
*/
data object BVFPLRA : Logic {
override val theories =
listOf(CoreTheory, BitVectorExpressionTheory, FloatingPointTheory, RealsTheory)
override val datatypes = false
override val quantifierFree = false
override val linearArithmetic = true
override val nonlinearArithmetic = false
override val differentialArithmetic = true
override val freeSortFunctionSymbols = false
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
* - Linear arithmetic
* - Differential logics This logic includes the following theories:
* - FloatingPoint
* - Reals
*/
data object FPLRA : Logic {
override val theories = listOf(CoreTheory, FloatingPointTheory, RealsTheory)
override val datatypes = false
override val quantifierFree = false
override val linearArithmetic = true
override val nonlinearArithmetic = false
override val differentialArithmetic = true
override val freeSortFunctionSymbols = false
}
/**
* Closed quantifier-free formulas built over arbitrary expansions of the Ints and ArraysEx
* signatures with free sort and function symbols, but with the following restrictions:
* - all terms of sort Int are linear, that is, have no occurrences of the function symbols *, /,
* div, mod, and abs, except as specified in the :extensions attributes;
* - all array terms have sort (Array Int Int).
*/
data object QF_AUFLIA : Logic {
override val theories = listOf(CoreTheory, ArrayExTheory, IntsTheory)
override val datatypes = false
override val quantifierFree = true
override val linearArithmetic = true
override val nonlinearArithmetic = false
override val differentialArithmetic = true
override val freeSortFunctionSymbols = true
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
* - Quantifier free
* - Linear arithmetic
* - Nonlinear arithmetic
* - Differential logics This logic includes the following theories:
* - Reals_Ints
*/
data object QF_NIRA : Logic {
override val theories = listOf(CoreTheory, RealsIntsTheory)
override val datatypes = false
override val quantifierFree = true
override val linearArithmetic = true
override val nonlinearArithmetic = true
override val differentialArithmetic = true
override val freeSortFunctionSymbols = false
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
*
* This logic includes the following theories:
* - FloatingPoint
*/
data object FP : Logic {
override val theories = listOf(CoreTheory, FloatingPointTheory)
override val datatypes = false
override val quantifierFree = false
override val linearArithmetic = false
override val nonlinearArithmetic = false
override val differentialArithmetic = false
override val freeSortFunctionSymbols = false
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
* - Quantifier free This logic includes the following theories:
* - FixedSizeBitVectors
* - FloatingPoint
* - ArraysEx
*/
data object QF_ABVFP : Logic {
override val theories =
listOf(CoreTheory, BitVectorExpressionTheory, FloatingPointTheory, ArrayExTheory)
override val datatypes = false
override val quantifierFree = true
override val linearArithmetic = false
override val nonlinearArithmetic = false
override val differentialArithmetic = false
override val freeSortFunctionSymbols = false
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
* - Linear arithmetic
* - Nonlinear arithmetic
* - Differential logics This logic includes the following theories:
* - Ints
*/
data object NIA : Logic {
override val theories = listOf(CoreTheory, IntsTheory)
override val datatypes = false
override val quantifierFree = false
override val linearArithmetic = true
override val nonlinearArithmetic = true
override val differentialArithmetic = true
override val freeSortFunctionSymbols = false
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
* - Quantifier free This logic includes the following theories:
* - Strings
*/
data object QF_S : Logic {
override val theories = listOf(CoreTheory, StringsTheory)
override val datatypes = false
override val quantifierFree = true
override val linearArithmetic = false
override val nonlinearArithmetic = false
override val differentialArithmetic = false
override val freeSortFunctionSymbols = false
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
* - Free sort and function symbols
* - Datatype support
* - Linear arithmetic
* - Nonlinear arithmetic
* - Differential logics This logic includes the following theories:
* - FloatingPoint
* - Reals_Ints
*/
data object UFFPDTNIRA : Logic {
override val theories = listOf(CoreTheory, FloatingPointTheory, RealsIntsTheory)
override val datatypes = true
override val quantifierFree = false
override val linearArithmetic = true
override val nonlinearArithmetic = true
override val differentialArithmetic = true
override val freeSortFunctionSymbols = true
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
* - Quantifier free
* - Linear arithmetic
* - Nonlinear arithmetic
* - Differential logics This logic includes the following theories:
* - ArraysEx
* - Ints
*/
data object QF_ANIA : Logic {
override val theories = listOf(CoreTheory, ArrayExTheory, IntsTheory)
override val datatypes = false
override val quantifierFree = true
override val linearArithmetic = true
override val nonlinearArithmetic = true
override val differentialArithmetic = true
override val freeSortFunctionSymbols = false
}
/**
* Closed quantifier-free formulas built over an arbitrary expansion of the ArraysEx signature with
* free sort and constant symbols.
*/
data object QF_AX : Logic {
override val theories = listOf(CoreTheory, ArrayExTheory)
override val datatypes = false
override val quantifierFree = true
override val linearArithmetic = false
override val nonlinearArithmetic = false
override val differentialArithmetic = false
override val freeSortFunctionSymbols = false
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
* - Free sort and function symbols This logic includes the following theories:
* - FixedSizeBitVectors
* - ArraysEx
*/
data object AUFBV : Logic {
override val theories = listOf(CoreTheory, BitVectorExpressionTheory, ArrayExTheory)
override val datatypes = false
override val quantifierFree = false
override val linearArithmetic = false
override val nonlinearArithmetic = false
override val differentialArithmetic = false
override val freeSortFunctionSymbols = true
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
* - Free sort and function symbols
* - Datatype support
* - Linear arithmetic
* - Differential logics This logic includes the following theories:
* - ArraysEx
* - Ints
*/
data object AUFDTLIA : Logic {
override val theories = listOf(CoreTheory, ArrayExTheory, IntsTheory)
override val datatypes = true
override val quantifierFree = false
override val linearArithmetic = true
override val nonlinearArithmetic = false
override val differentialArithmetic = true
override val freeSortFunctionSymbols = true
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
* - Free sort and function symbols
* - Linear arithmetic
* - Differential logics This logic includes the following theories:
* - FixedSizeBitVectors
* - Ints
*/
data object UFBVLIA : Logic {
override val theories = listOf(CoreTheory, BitVectorExpressionTheory, IntsTheory)
override val datatypes = false
override val quantifierFree = false
override val linearArithmetic = true
override val nonlinearArithmetic = false
override val differentialArithmetic = true
override val freeSortFunctionSymbols = true
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
* - Free sort and function symbols
* - Datatype support This logic includes the following theories:
*/
data object UFDT : Logic {
override val theories = listOf(CoreTheory)
override val datatypes = true
override val quantifierFree = false
override val linearArithmetic = false
override val nonlinearArithmetic = false
override val differentialArithmetic = false
override val freeSortFunctionSymbols = true
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
* - Datatype support
* - Quantifier free This logic includes the following theories:
*/
data object QF_DT : Logic {
override val theories = listOf(CoreTheory)
override val datatypes = true
override val quantifierFree = true
override val linearArithmetic = false
override val nonlinearArithmetic = false
override val differentialArithmetic = false
override val freeSortFunctionSymbols = false
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
* - Quantifier free
* - Linear arithmetic
* - Differential logics This logic includes the following theories:
* - Ints
* - Strings
*/
data object QF_SLIA : Logic {
override val theories = listOf(CoreTheory, IntsTheory, StringsTheory)
override val datatypes = false
override val quantifierFree = true
override val linearArithmetic = true
override val nonlinearArithmetic = false
override val differentialArithmetic = true
override val freeSortFunctionSymbols = false
}
/**
* Closed quantifier-free formulas built over an arbitrary expansion of the Core signature with free
* sort and function symbols.
*/
data object QF_UF : Logic {
override val theories = listOf(CoreTheory)
override val datatypes = false
override val quantifierFree = true
override val linearArithmetic = false
override val nonlinearArithmetic = false
override val differentialArithmetic = false
override val freeSortFunctionSymbols = true
}
/**
* Closed quantifier-free formulas built over arbitrary expansions of the FixedSizeBitVectors
* signature with free sort and function symbols.
*/
data object QF_UFBV : Logic {
override val theories = listOf(CoreTheory, BitVectorExpressionTheory)
override val datatypes = false
override val quantifierFree = true
override val linearArithmetic = false
override val nonlinearArithmetic = false
override val differentialArithmetic = false
override val freeSortFunctionSymbols = true
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
* - Free sort and function symbols
* - Datatype support
* - Linear arithmetic
* - Nonlinear arithmetic
* - Differential logics This logic includes the following theories:
* - Ints
*/
data object UFDTNIA : Logic {
override val theories = listOf(CoreTheory, IntsTheory)
override val datatypes = true
override val quantifierFree = false
override val linearArithmetic = true
override val nonlinearArithmetic = true
override val differentialArithmetic = true
override val freeSortFunctionSymbols = true
}
/**
* Closed quantifier-free formulas with atoms of the form:
* - q
* - (op (- x y) n),
* - (op (- x y) (- n)), or
* - (op x y)
*
* where
* - q is a variable or free constant symbol of sort Bool,
* - op is <, <=, >, >=, =, or distinct,
* - x, y are free constant symbols of sort Int,
* - n is a numeral.
*/
data object QF_IDL : Logic {
override val theories = listOf(CoreTheory, IntsTheory)
override val datatypes = false
override val quantifierFree = true
override val linearArithmetic = false
override val nonlinearArithmetic = false
override val differentialArithmetic = true
override val freeSortFunctionSymbols = false
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
* - Free sort and function symbols
* - Linear arithmetic
* - Nonlinear arithmetic
* - Differential logics This logic includes the following theories:
* - ArraysEx
* - Ints
*/
data object AUFNIA : Logic {
override val theories = listOf(CoreTheory, ArrayExTheory, IntsTheory)
override val datatypes = false
override val quantifierFree = false
override val linearArithmetic = true
override val nonlinearArithmetic = true
override val differentialArithmetic = true
override val freeSortFunctionSymbols = true
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
* - Free sort and function symbols This logic includes the following theories:
* - FixedSizeBitVectors
* - FloatingPoint
*/
data object UFBVFP : Logic {
override val theories = listOf(CoreTheory, BitVectorExpressionTheory, FloatingPointTheory)
override val datatypes = false
override val quantifierFree = false
override val linearArithmetic = false
override val nonlinearArithmetic = false
override val differentialArithmetic = false
override val freeSortFunctionSymbols = true
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
* - Free sort and function symbols
* - Datatype support
* - Linear arithmetic
* - Nonlinear arithmetic
* - Differential logics This logic includes the following theories:
* - Reals_Ints
*/
data object UFDTNIRA : Logic {
override val theories = listOf(CoreTheory, RealsIntsTheory)
override val datatypes = true
override val quantifierFree = false
override val linearArithmetic = true
override val nonlinearArithmetic = true
override val differentialArithmetic = true
override val freeSortFunctionSymbols = true
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
* - Free sort and function symbols
* - Differential logics This logic includes the following theories:
*/
data object UFIDL : Logic {
override val theories = listOf(CoreTheory, IntsTheory)
override val datatypes = false
override val quantifierFree = false
override val linearArithmetic = false
override val nonlinearArithmetic = false
override val differentialArithmetic = true
override val freeSortFunctionSymbols = true
}
/**
* Closed quantifier-free formulas built over arbitrary expansions of the Reals signature with free
* constant symbols, but containing only linear atoms, that is, atoms with no occurrences of the
* function symbols * and /, except as specified the :extensions attribute.
*/
data object QF_LRA : Logic {
override val theories = listOf(CoreTheory, RealsTheory)
override val datatypes = false
override val quantifierFree = true
override val linearArithmetic = true
override val nonlinearArithmetic = false
override val differentialArithmetic = true
override val freeSortFunctionSymbols = false
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
* - Free sort and function symbols
* - Datatype support
* - Quantifier free This logic includes the following theories:
* - FixedSizeBitVectors
*/
data object QF_UFBVDT : Logic {
override val theories = listOf(CoreTheory, BitVectorExpressionTheory)
override val datatypes = true
override val quantifierFree = true
override val linearArithmetic = false
override val nonlinearArithmetic = false
override val differentialArithmetic = false
override val freeSortFunctionSymbols = true
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
* - Free sort and function symbols
* - Datatype support
* - Quantifier free
* - Linear arithmetic
* - Nonlinear arithmetic
* - Differential logics This logic includes the following theories:
* - FloatingPoint
* - Reals_Ints
*/
data object QF_UFFPDTNIRA : Logic {
override val theories = listOf(CoreTheory, FloatingPointTheory, RealsIntsTheory)
override val datatypes = true
override val quantifierFree = true
override val linearArithmetic = true
override val nonlinearArithmetic = true
override val differentialArithmetic = true
override val freeSortFunctionSymbols = true
}
/**
* Closed quantifier-free formulas built over arbitrary expansions of the Ints signatures with free
* sort and function symbols, but with the following restrictions:
* - all terms of sort Int are linear, that is, have no occurrences of the function symbols *, /,
* div, mod, and abs, except as specified in the :extensions attributes;
*/
data object QF_UFLIA : Logic {
override val theories = listOf(CoreTheory, IntsTheory)
override val datatypes = false
override val quantifierFree = true
override val linearArithmetic = true
override val nonlinearArithmetic = false
override val differentialArithmetic = true
override val freeSortFunctionSymbols = true
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
* - Free sort and function symbols This logic includes the following theories:
*/
data object UF : Logic {
override val theories = listOf(CoreTheory)
override val datatypes = false
override val quantifierFree = false
override val linearArithmetic = false
override val nonlinearArithmetic = false
override val differentialArithmetic = false
override val freeSortFunctionSymbols = true
}
/**
* Closed quantifier-free formulas built over an arbitrary expansion with free sort and function
* symbols of the signature consisting of
* - all the sort and function symbols of Core and
* - the following symbols of Int:
*
* - :sorts ((Int 0))
* - :funs
* - (NUMERAL Int)
* - (- Int Int Int)
* - (+ Int Int Int)
* - (<= Int Int Bool)
* - (< Int Int Bool)
* - (>= Int Int Bool)
* - (> Int Int Bool)
*
* Additionally, for every term of the form (op t1 t2) with op in {+, -}, at least one of t1 and t2
* is a numeral.
*/
data object QF_UFIDL : Logic {
override val theories = listOf(CoreTheory, IntsTheory)
override val datatypes = false
override val quantifierFree = true
override val linearArithmetic = false
override val nonlinearArithmetic = false
override val differentialArithmetic = true
override val freeSortFunctionSymbols = true
}
/**
* Closed quantifier-free formulas built over arbitrary expansions of the Reals signature with free
* sort and function symbols.
*/
data object QF_UFNRA : Logic {
override val theories = listOf(CoreTheory, RealsTheory)
override val datatypes = false
override val quantifierFree = true
override val linearArithmetic = true
override val nonlinearArithmetic = true
override val differentialArithmetic = true
override val freeSortFunctionSymbols = true
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
* - Quantifier free
* - Linear arithmetic
* - Differential logics This logic includes the following theories:
* - FloatingPoint
* - Reals
*/
data object QF_FPLRA : Logic {
override val theories = listOf(CoreTheory, FloatingPointTheory, RealsTheory)
override val datatypes = false
override val quantifierFree = true
override val linearArithmetic = true
override val nonlinearArithmetic = false
override val differentialArithmetic = true
override val freeSortFunctionSymbols = false
}
/**
* This logic does not yet provide an offical documentation, but has the following properties:
* - Quantifier free
* - Linear arithmetic
* - Differential logics This logic includes the following theories:
* - Reals_Ints
*/
data object QF_LIRA : Logic {
override val theories = listOf(CoreTheory, RealsIntsTheory)
override val datatypes = false
override val quantifierFree = true
override val linearArithmetic = true
override val nonlinearArithmetic = false
override val differentialArithmetic = true
override val freeSortFunctionSymbols = false
}