Sorts #
The constructors of Srt, the conversions between a Srt and its Lean description Typ, and the
classes IsArith and HasConcat the operators restrict their sorts with.
Function sorts are curried: α → β → γ is the sort (-> α β γ), while a function in domain
position stays a higher-order argument.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Get the Boolean sort.
Equations
- Cvc.Srt.bool = Cvc.runUnsafe✝ fun (tm : cvc5.TermManager) => tm.getBooleanSort
Instances For
Get the Integer sort.
Equations
- Cvc.Srt.int = Cvc.runUnsafe✝ fun (tm : cvc5.TermManager) => tm.getIntegerSort
Instances For
Get the Real sort.
Equations
- Cvc.Srt.real = Cvc.runUnsafe✝ fun (tm : cvc5.TermManager) => tm.getRealSort
Instances For
Get the string sort.
Equations
- Cvc.Srt.string = Cvc.runUnsafe✝ fun (tm : cvc5.TermManager) => tm.getStringSort
Instances For
Get the regular expression sort.
Equations
- Cvc.Srt.regex = Cvc.runUnsafe✝ fun (tm : cvc5.TermManager) => tm.getRegExpSort
Instances For
Get the rounding mode sort.
Equations
- Cvc.Srt.roundingMode = Cvc.runUnsafe✝ fun (tm : cvc5.TermManager) => tm.getRoundingModeSort
Instances For
Create a bit-vector sort.
sizeThe bit-width of the bit-vector sort.
Equations
- Cvc.Srt.bitVec size = Cvc.runUnsafe✝ fun (tm : cvc5.TermManager) => tm.mkBitVectorSort size
Instances For
Create a floating-point sort.
expThe bit-width of the exponent of the floating-point sort.sigThe bit-width of the significand of the floating-point sort.
Equations
- Cvc.Srt.float exp sig = Cvc.runUnsafe✝ fun (tm : cvc5.TermManager) => tm.mkFloatingPointSort exp sig
Instances For
The sort of the finite field with size elements, size being prime.
Equations
- Cvc.Srt.finiteField size = Cvc.runUnsafe✝ fun (tm : cvc5.TermManager) => tm.mkFiniteFieldSort size
Instances For
Whether a sort has been declared under a name in this scope.
Equations
- Cvc.Srt.isDeclared name = do let __do_lift ← Cvc.getRegisteredSort?✝ name pure __do_lift.isSome
Instances For
Creates the sort of arrays from idx to elm, e.g. idx.arrayTo elm.
Equations
- idx.arrayTo elm = Cvc.runUnsafe✝ fun (tm : cvc5.TermManager) => tm.mkArraySort idx elm
Instances For
The sort of bags of elm.
Equations
- elm.bag = Cvc.runUnsafe✝ fun (tm : cvc5.TermManager) => tm.mkBagSort elm
Instances For
The sort of sets of elm.
Equations
- elm.set = Cvc.runUnsafe✝ fun (tm : cvc5.TermManager) => tm.mkSetSort elm
Instances For
The sort of sequences of elm.
Equations
- elm.seq = Cvc.runUnsafe✝ fun (tm : cvc5.TermManager) => tm.mkSequenceSort elm
Instances For
The sort of tuples of the given components.
Equations
- Cvc.Srt.tuple sorts = Cvc.runUnsafe✝ fun (tm : cvc5.TermManager) => tm.mkTupleSort sorts
Instances For
The sort of functions from the domain sorts dom to cod.
Equations
- Cvc.Srt.function dom cod domNonempty = Cvc.runUnsafe✝ fun (tm : cvc5.TermManager) => tm.mkFunctionSort dom cod
Instances For
The abstract sort of a family, its parameters left unspecified.
Equations
- Cvc.Srt.abstract a = Cvc.runUnsafe✝ fun (tm : cvc5.TermManager) => tm.mkAbstractSort a.toKind
Instances For
cvc5's fully abstract sort, ?.
cvc5 accepts it only as a set, bag or sequence element, an array's index or element, or a function's codomain.
Equations
- Cvc.Srt.any = Cvc.runUnsafe✝ fun (tm : cvc5.TermManager) => tm.mkAbstractSort cvc5.SortKind.ABSTRACT_SORT
Instances For
Equations
- a.toSrt = Cvc.Srt.abstract a
Instances For
Further constructors #
The sort of predicates over doms: functions from them to Bool.
Equations
- Cvc.Srt.predicate doms = Cvc.runUnsafe✝ fun (tm : cvc5.TermManager) => tm.mkPredicateSort doms
Instances For
The sort of nullable elm values, denoted Lean-side by Option.
Equations
- elm.nullable = Cvc.runUnsafe✝ fun (tm : cvc5.TermManager) => tm.mkNullableSort elm
Instances For
A record sort, of named fields in order.
Fails on an empty record and on a repeated field name. The order is part of the sort:
{a : Int, b : Bool} and {b : Bool, a : Int} are different.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Create a sort parameter.
symbolThe name of the sort.
Warning: This function is experimental and may change in future versions.
Equations
- Cvc.Srt.param symbol = Cvc.runUnsafe✝ fun (tm : cvc5.TermManager) => tm.mkParamSort symbol
Instances For
A new uninterpreted sort named symbol, which Typ.uninterpreted symbol then names.
The name must not be taken by another sort declared in this scope.
Equations
- Cvc.Srt.uninterpreted symbol = do Cvc.Srt.checkFreshSortSymbol symbol let u ← Cvc.runUnsafe✝ fun (tm : cvc5.TermManager) => tm.mkUninterpretedSort symbol Cvc.registerSort✝ symbol u pure u
Instances For
A finite field sort whose size is given in the base base.
Equations
- Cvc.Srt.finiteFieldOfString size base = Cvc.runUnsafe✝ fun (tm : cvc5.TermManager) => tm.mkFiniteFieldSortOfString size base
Instances For
An uninterpreted sort constructor, which arity parameters instantiate into a sort.
The name must not be taken by another sort declared in this scope.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A placeholder for a datatype sort not yet resolved.
For mutually recursive parametric datatypes, whose declarations mention each other.
Equations
- Cvc.Srt.unresolvedDatatype symbol arity = Cvc.runUnsafe✝ fun (tm : cvc5.TermManager) => tm.mkUnresolvedDatatypeSort symbol arity
Instances For
Datatype sorts #
A datatype sort comes from a Datatype.Decl. Each call makes a fresh sort, even from an
identical declaration, so a datatype is declared once per scope and then named with Typ.datatype.
The sort of the datatype decl declares, which Typ.datatype then names.
The datatype's name must not be taken by another sort declared in this scope.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The sorts of a mutually recursive group of datatypes, declared together.
Members refer to each other through Datatype.Ctor.Decl.addSelectorUnresolved. As for
Srt.datatype, each name must be new to this scope.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Testers #
Which family a sort belongs to. Each is the guard on the accessors of that family below: asking a non-array for its index sort fails, and these are how to know not to.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Determine if this is the Boolean sort (SMT-LIB: Bool).
Equations
- srt✝.isBool = (Cvc.Srt.toUnsafe✝ srt✝).isBoolean
Instances For
Determine if this is the Integer sort (SMT-LIB: Int).
Equations
- srt✝.isInt = (Cvc.Srt.toUnsafe✝ srt✝).isInteger
Instances For
Determine if this is the Real sort (SMT-LIB: Real).
Equations
- srt✝.isReal = (Cvc.Srt.toUnsafe✝ srt✝).isReal
Instances For
Determine if this is the String sort (SMT-LIB: String).
Equations
- srt✝.isString = (Cvc.Srt.toUnsafe✝ srt✝).isString
Instances For
Determine if this is the regular expression sort (SMT-LIB: RegLan).
Equations
- srt✝.isRegex = (Cvc.Srt.toUnsafe✝ srt✝).isRegExp
Instances For
Determine if this is the rounding mode sort (SMT-LIB: RoundingMode).
Equations
- srt✝.isRoundingMode = (Cvc.Srt.toUnsafe✝ srt✝).isRoundingMode
Instances For
Determine if this is a bit-vector sort (SMT-LIB: (_ BitVec i)).
Equations
- srt✝.isBitVec = (Cvc.Srt.toUnsafe✝ srt✝).isBitVector
Instances For
Determine if this is a floating-point sort (SMT-LIB: (_ FloatingPoint eb sb)).
Equations
- srt✝.isFloat = (Cvc.Srt.toUnsafe✝ srt✝).isFloatingPoint
Instances For
Determine if this is a finite field sort.
Equations
- srt✝.isFiniteField = (Cvc.Srt.toUnsafe✝ srt✝).isFiniteField
Instances For
Determine if this is an array sort.
Equations
- srt✝.isArray = (Cvc.Srt.toUnsafe✝ srt✝).isArray
Instances For
Determine if this is a Sequence sort.
Equations
- srt✝.isSeq = (Cvc.Srt.toUnsafe✝ srt✝).isSequence
Instances For
Determine if this is a tuple sort.
Equations
- srt✝.isTuple = (Cvc.Srt.toUnsafe✝ srt✝).isTuple
Instances For
Determine if this is a nullable sort.
Equations
- srt✝.isNullable = (Cvc.Srt.toUnsafe✝ srt✝).isNullable
Instances For
Determine if this is a record sort.
Warning: this function is experimental and may change in future versions.
Equations
- srt✝.isRecord = (Cvc.Srt.toUnsafe✝ srt✝).isRecord
Instances For
Determine if this is a function sort.
Equations
- srt✝.isFunction = (Cvc.Srt.toUnsafe✝ srt✝).isFunction
Instances For
Determine if this is a predicate sort.
A predicate sort is a function sort that maps to the Boolean sort. All predicate sorts are also function sorts.
Equations
- srt✝.isPredicate = (Cvc.Srt.toUnsafe✝ srt✝).isPredicate
Instances For
Determine if this is an abstract sort.
Equations
- srt✝.isAbstract = (Cvc.Srt.toUnsafe✝ srt✝).isAbstract
Instances For
Determine if this is a datatype sort.
Equations
- srt✝.isDatatype = (Cvc.Srt.toUnsafe✝ srt✝).isDatatype
Instances For
Determine if this is a datatype constructor sort.
Equations
- srt✝.isDatatypeConstructor = (Cvc.Srt.toUnsafe✝ srt✝).isDatatypeConstructor
Instances For
Determine if this is a datatype selector sort.
Equations
- srt✝.isDatatypeSelector = (Cvc.Srt.toUnsafe✝ srt✝).isDatatypeSelector
Instances For
Determine if this is a datatype tester sort.
Equations
- srt✝.isDatatypeTester = (Cvc.Srt.toUnsafe✝ srt✝).isDatatypeTester
Instances For
Determine if this is a datatype updater sort.
Equations
- srt✝.isDatatypeUpdater = (Cvc.Srt.toUnsafe✝ srt✝).isDatatypeUpdater
Instances For
Determine if this is an uninterpreted sort.
Equations
- srt✝.isUninterpreted = (Cvc.Srt.toUnsafe✝ srt✝).isUninterpretedSort
Instances For
Determine if this is an uninterpreted sort constructor.
An uninterpreted sort constructor has arity > 0 and can be instantiated to construct uninterpreted
sorts with given sort parameters.
Equations
Instances For
Whether this sort instantiates a parametric datatype or an uninterpreted sort constructor.
cvc5 also answers true for a datatype sort without parameters: a non-empty
getInstantiatedParameters is the reliable test. See Srt.instantiate.
Equations
- srt.isInstantiated = (Cvc.Srt.toUnsafe✝ srt).isInstantiated
Instances For
Accessors #
Each answers only for the family its tester identifies, so each comes in two forms: the plain one
fails elsewhere, the ?-suffixed one answers none.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Any sort #
Get the kind of this sort.
Equations
- srt✝.getKind = Except.mapError Cvc.Error.ofUnsafe✝ (Cvc.Srt.toUnsafe✝ srt✝).getKind
Instances For
Whether this sort has a symbol, a name; see getSymbol.
Equations
- srt.hasSymbol? = (Cvc.Srt.toUnsafe✝ srt).hasSymbol?
Instances For
The symbol of this sort, its name.
It is the name given to Srt.uninterpreted, Srt.uninterpretedConstructor or
Srt.unresolvedDatatype.
Equations
Instances For
The symbol of this sort, its name.
It is the name given to Srt.uninterpreted, Srt.uninterpretedConstructor or
Srt.unresolvedDatatype.
Equations
- srt.getSymbol? = (Cvc.Srt.toUnsafe✝ srt).getSymbol?
Instances For
Sized and parameterized sorts #
The bit-width of the bit-vector sort.
Equations
Instances For
The bit-width of the bit-vector sort.
Equations
- srt✝.getBitVecSize? = (Cvc.Srt.toUnsafe✝ srt✝).getBitVectorSize?
Instances For
The size of the finite field sort.
Equations
Instances For
The size of the finite field sort.
Equations
- srt✝.getFiniteFieldSize? = (Cvc.Srt.toUnsafe✝ srt✝).getFiniteFieldSize?
Instances For
The bit-width of the exponent of the floating-point sort.
Equations
Instances For
The bit-width of the exponent of the floating-point sort.
Equations
Instances For
The width of the significand of the floating-point sort.
Equations
Instances For
The width of the significand of the floating-point sort.
Equations
Instances For
Containers #
The index sort of an array sort.
Equations
Instances For
The index sort of an array sort.
Equations
Instances For
The element sort of an array sort.
Equations
Instances For
The element sort of an array sort.
Equations
Instances For
The element sort of a set sort.
Equations
- srt✝.getSetElementSort? = (Cvc.Srt.toUnsafe✝ srt✝).getSetElementSort?
Instances For
The element sort of a set sort.
Equations
Instances For
The element sort of a bag sort.
Equations
- srt✝.getBagElementSort? = (Cvc.Srt.toUnsafe✝ srt✝).getBagElementSort?
Instances For
The element sort of a bag sort.
Equations
Instances For
The element sort of a sequence sort.
Equations
Instances For
The element sort of a sequence sort.
Equations
- srt✝.getSeqElementSort? = (Cvc.Srt.toUnsafe✝ srt✝).getSequenceElementSort?
Instances For
The element sort of a nullable sort.
Equations
Instances For
The element sort of a nullable sort.
Equations
Instances For
The length of a tuple sort.
Equations
- srt✝.getTupleLength? = (Cvc.Srt.toUnsafe✝ srt✝).getTupleLength?
Instances For
The length of a tuple sort.
Equations
Instances For
The element sorts of a tuple sort.
Equations
- srt✝.getTupleSorts? = (Cvc.Srt.toUnsafe✝ srt✝).getTupleSorts?
Instances For
The element sorts of a tuple sort.
Equations
Instances For
Functions #
The arity of a function sort.
Equations
Instances For
The arity of a function sort.
Equations
- srt✝.getFunctionArity? = (Cvc.Srt.toUnsafe✝ srt✝).getFunctionArity?
Instances For
The domain sorts of a function sort.
Equations
Instances For
The domain sorts of a function sort.
Equations
Instances For
The codomain sort of a function sort.
Equations
Instances For
The codomain sort of a function sort.
Equations
Instances For
Abstract and uninterpreted sorts #
The sort kind of an abstract sort, which denotes the kind of sorts that this abstract sort denotes.
Equations
Instances For
The sort kind of an abstract sort, which denotes the kind of sorts that this abstract sort denotes.
Equations
- srt✝.getAbstractedKind? = (Cvc.Srt.toUnsafe✝ srt✝).getAbstractedKind?
Instances For
Get the associated uninterpreted sort constructor of an instantiated uninterpreted sort.
Equations
Instances For
Get the associated uninterpreted sort constructor of an instantiated uninterpreted sort.
Equations
Instances For
The arity of an uninterpreted sort constructor sort.
Equations
Instances For
The arity of an uninterpreted sort constructor sort.
Equations
Instances For
The sorts a parametric datatype or an uninterpreted sort constructor was instantiated with.
See Srt.instantiate.
Equations
Instances For
The sorts a parametric datatype or an uninterpreted sort constructor was instantiated with.
See Srt.instantiate.
Equations
Instances For
Datatypes #
The datatype sorts: what a constructor, selector or tester sort relates. The Datatype they
answer has its own API, in Cvc.Untyped.Theory.Datatype.
Get the underlying datatype of a datatype sort.
Equations
- srt✝.getDatatype? = (Cvc.Srt.toUnsafe✝ srt✝).getDatatype?
Instances For
Get the underlying datatype of a datatype sort.
Equations
Instances For
Get the arity of a datatype sort.
Number of type parameters if the datatype is parametric, 0 otherwise.
Equations
Instances For
Get the arity of a datatype sort.
Number of type parameters if the datatype is parametric, 0 otherwise.
Equations
- srt✝.getDatatypeArity? = (Cvc.Srt.toUnsafe✝ srt✝).getDatatypeArity?
Instances For
The arity of a datatype constructor sort.
Equations
Instances For
The arity of a datatype constructor sort.
Equations
Instances For
The domain sorts of a datatype constructor sort.
Equations
Instances For
The domain sorts of a datatype constructor sort.
Equations
Instances For
The codomain sort of a constructor sort.
Equations
Instances For
The codomain sort of a constructor sort.
Equations
Instances For
The domain sort of a datatype selector sort.
Equations
Instances For
The domain sort of a datatype selector sort.
Equations
Instances For
The codomain sort of a datatype selector sort.
Equations
Instances For
The codomain sort of a datatype selector sort.
Equations
Instances For
The domain sort of a datatype tester sort.
Equations
Instances For
The domain sort of a datatype tester sort.
Equations
Instances For
The codomain sort of a datatype tester sort.
Equations
Instances For
The codomain sort of a datatype tester sort.
Equations
Instances For
Instantiation and substitution #
Instantiates a parametric sort with the given parameters.
Equations
- srt.instantiate params = Except.mapError Cvc.Error.ofUnsafe✝ ((Cvc.Srt.toUnsafe✝ srt).instantiate params)
Instances For
Instantiates a parametric sort with the given parameters.
Equations
- srt.instantiate? params = (Cvc.Srt.toUnsafe✝ srt).instantiate? params
Instances For
Replaces srts by replacements throughout a sort, simultaneously.
Equations
- srt.substitute srts replacements = Except.mapError Cvc.Error.ofUnsafe✝ ((Cvc.Srt.toUnsafe✝ srt).substitute srts replacements)
Instances For
Replaces srts by replacements throughout a sort, simultaneously.
Equations
- srt.substitute? srts replacements = (Cvc.Srt.toUnsafe✝ srt).substitute? srts replacements
Instances For
Sort refinements #
Whether a sort is arithmetic: Int or Real.
Equations
- Cvc.Typ.int.isArith = true
- Cvc.Typ.real.isArith = true
- Cvc.Typ.bool.isArith = false
- Cvc.Typ.string.isArith = false
- Cvc.Typ.regex.isArith = false
- Cvc.Typ.roundingMode.isArith = false
- (Cvc.Typ.bitVec size).isArith = false
- (Cvc.Typ.float exp sig).isArith = false
- (Cvc.Typ.finiteField size).isArith = false
- (Cvc.Typ.arrayTo idx elm).isArith = false
- (Cvc.Typ.bag elm).isArith = false
- (Cvc.Typ.set elm).isArith = false
- (Cvc.Typ.seq elm).isArith = false
- (Cvc.Typ.prod args).isArith = false
- elm.nullable.isArith = false
- (Cvc.Typ.record fields).isArith = false
- (Cvc.Typ.datatype name).isArith = false
- (dom.function cod).isArith = false
- (Cvc.Typ.uninterpreted name).isArith = false
Instances For
Whether a sort has concatenation: strings and sequences.
Equations
- Cvc.Typ.string.hasConcat = true
- (Cvc.Typ.seq elm).hasConcat = true
- Cvc.Typ.int.hasConcat = false
- Cvc.Typ.real.hasConcat = false
- Cvc.Typ.bool.hasConcat = false
- Cvc.Typ.regex.hasConcat = false
- Cvc.Typ.roundingMode.hasConcat = false
- (Cvc.Typ.bitVec size).hasConcat = false
- (Cvc.Typ.float exp sig).hasConcat = false
- (Cvc.Typ.finiteField size).hasConcat = false
- (Cvc.Typ.arrayTo idx elm).hasConcat = false
- (Cvc.Typ.bag elm).hasConcat = false
- (Cvc.Typ.set elm).hasConcat = false
- (Cvc.Typ.prod args).hasConcat = false
- elm.nullable.hasConcat = false
- (Cvc.Typ.record fields).hasConcat = false
- (Cvc.Typ.datatype name).hasConcat = false
- (dom.function cod).hasConcat = false
- (Cvc.Typ.uninterpreted name).hasConcat = false
Instances For
Conversions between Typ and Srt #
The sort a Typ describes.
Fails only on a datatype or uninterpreted name no sort was declared under in this scope.
Equations
- One or more equations did not get rendered due to their size.
- Cvc.Typ.bool.toSrt = Cvc.Srt.bool
- Cvc.Typ.int.toSrt = Cvc.Srt.int
- Cvc.Typ.real.toSrt = Cvc.Srt.real
- Cvc.Typ.regex.toSrt = Cvc.Srt.regex
- Cvc.Typ.string.toSrt = Cvc.Srt.string
- Cvc.Typ.roundingMode.toSrt = Cvc.Srt.roundingMode
- (Cvc.Typ.bitVec size).toSrt = Cvc.Srt.bitVec size.toUInt32
- (Cvc.Typ.float exp sig).toSrt = Cvc.Srt.float exp.toUInt32 sig.toUInt32
- (Cvc.Typ.finiteField size).toSrt = Cvc.Srt.finiteField size
- (Cvc.Typ.arrayTo idx elm).toSrt = do let __do_lift ← elm.toSrt let __do_lift_1 ← idx.toSrt __do_lift_1.arrayTo __do_lift
- (Cvc.Typ.bag elm).toSrt = elm.toSrt >>= Cvc.Srt.bag
- (Cvc.Typ.set elm).toSrt = elm.toSrt >>= Cvc.Srt.set
- (Cvc.Typ.seq elm).toSrt = elm.toSrt >>= Cvc.Srt.seq
- elm.nullable.toSrt = elm.toSrt >>= Cvc.Srt.nullable
- (Cvc.Typ.prod args).toSrt = Cvc.Typ.toSrtList args >>= Cvc.Srt.tuple
- (Cvc.Typ.record fields).toSrt = Cvc.Typ.toSrtFields fields >>= Cvc.Srt.record
- (Cvc.Typ.datatype name).toSrt = Cvc.Srt.ofName name
Instances For
The sort a Typ describes.
Fails only on a datatype or uninterpreted name no sort was declared under in this scope.
Equations
Instances For
The sort a Typ describes.
Fails only on a datatype or uninterpreted name no sort was declared under in this scope.
Equations
Instances For
The sort a Typ describes.
Fails only on a datatype or uninterpreted name no sort was declared under in this scope.
Equations
Instances For
Conversion to Typ, the inverse of Typ.toSrt wherever a Typ can describe the sort.
A function sort comes back curried, (-> α β γ) as function α (function β γ). A declared sort —
a datatype or an uninterpreted sort — converts only if it is the sort this scope registered under
its name.
Sorts that no Typ describes fail rather than approximate: the abstract sorts, which toTyp?
accepts, instantiated parametric datatypes, uninterpreted sort constructors and their
instantiations, and the datatype-operator sorts.
The Typ associated to some type.
Equations
- Cvc.Typ.of α = Cvc.ToTyp.typ α
Instances For
The sort a type denotes, through its ToTyp instance.
Equations
Instances For
The sort a type denotes, through its ToTyp instance.
Equations
Instances For
The usual order on rationals, which core lacks; at low priority, so that Mathlib's wins.
Equations
- Cvc.instOrdRat = { compare := fun (x y : Rat) => compareOfLessAndEq x y }
Equations
- Cvc.ToTyp.instBool = { typ := Cvc.Typ.bool }
Equations
- Cvc.ToTyp.instInt = { typ := Cvc.Typ.int }
Equations
- Cvc.ToTyp.instRat = { typ := Cvc.Typ.real }
Equations
- Cvc.ToTyp.instString = { typ := Cvc.Typ.string }
Equations
- Cvc.ToTyp.instBitVec = { typ := Cvc.Typ.bitVec size }
Equations
Lean's Array denotes cvc5's sequences; SMT-LIB arrays are TotalMap.
Equations
- Cvc.ToTyp.instArray = { typ := Cvc.Typ.seq (Cvc.Typ?.typ (Cvc.ToTyp.typ α)) }
Lean's Option denotes cvc5's Nullable.
Equations
- Cvc.ToTyp.instOption = { typ := (Cvc.ToTyp.typ α).nullable }
Regular expressions #
Equations
Instances For
Equations
Equations
- Cvc.instOrdRegex.ord x✝ y✝ = compare x✝.ctorIdx y✝.ctorIdx
Instances For
Equations
- Cvc.instOrdRegex = { compare := Cvc.instOrdRegex.ord }
Equations
- Cvc.Regex.instToTyp = { typ := Cvc.Typ.regex }
Functions #
Equations
- Cvc.ToTyp.instForall = { typ := (Cvc.ToTyp.typ α).function (Cvc.Typ?.typ (Cvc.ToTyp.typ β)) }
A sort written either way #
Where the sort-erased DSL lets a sort be written — a quantifier's binders, a grammar's
non-terminals and parameters, a record field's stated sort — it accepts a Lean type or a Srt
alike, through srtOf%.
srtOf% e is Srt.of e when e is a Lean type, and pure e when it is a Srt.
Equations
- Cvc.srtOfStx = Lean.ParserDescr.node `Cvc.srtOfStx 1022 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol "srtOf% ") (Lean.ParserDescr.cat `term 1024))
Instances For
Elaborates srtOf% e by looking at what e turned out to be.
Equations
- One or more equations did not get rendered due to their size.