Regular expressions over nullables, typed #
Each lifted operator has its plain counterpart's signature with an Option around every argument
and around the result, and nothing else changed. The lift is strict: none unless every
argument is some.
The regex term becomes nullable. The indexed reLoop and reRepeat have no lifted form, and
the string-matching operators live in the string theory, so strInRegex? is generated there.
reComplement lifted over nullables, strictly: none unless every argument is some.
Equations
Instances For
def
Cvc.Typed.Term.reUnionN?
[Ω]
(terms : Terms (Option Regex))
(atLeastTwoElements : 2 ≤ Array.size terms := by
(try grind) <;> fail "failed to prove term array has at least two elements")
:
reUnion? over two or more terms.
Equations
- Cvc.Typed.Term.reUnionN? terms atLeastTwoElements = Cvc.Untyped.Term.reUnionN? terms atLeastTwoElements
Instances For
def
Cvc.Typed.Term.reConcatN?
[Ω]
(terms : Terms (Option Regex))
(atLeastTwoElements : 2 ≤ Array.size terms := by
(try grind) <;> fail "failed to prove term array has at least two elements")
:
reConcat? over two or more terms.
Equations
- Cvc.Typed.Term.reConcatN? terms atLeastTwoElements = Cvc.Untyped.Term.reConcatN? terms atLeastTwoElements
Instances For
def
Cvc.Typed.Term.reInterN?
[Ω]
(terms : Terms (Option Regex))
(atLeastTwoElements : 2 ≤ Array.size terms := by
(try grind) <;> fail "failed to prove term array has at least two elements")
:
reInter? over two or more terms.
Equations
- Cvc.Typed.Term.reInterN? terms atLeastTwoElements = Cvc.Untyped.Term.reInterN? terms atLeastTwoElements