All Projects → uuverifiers → ostrich

uuverifiers / ostrich

Licence: other
An SMT Solver for string constraints

Programming Languages

scala
5932 projects
SMT
39 projects
shell
77523 projects

Projects that are alternatives of or similar to ostrich

pyprover
Resolution theorem proving for predicate logic in pure Python.
Stars: ✭ 71 (+294.44%)
Mutual labels:  theorem-proving, theorem-prover
awesome-rust-formalized-reasoning
An exhaustive list of all Rust resources regarding automated or semi-automated formalization efforts in any area, constructive mathematics, formal algorithms, and program verification.
Stars: ✭ 185 (+927.78%)
Mutual labels:  theorem-proving, theorem-prover
Regular Expressions
🔍 Swirl course on regular expressions and the regex family of functions in R
Stars: ✭ 21 (+16.67%)
Mutual labels:  strings, regular-expressions
LeetCode
Solution to LeetCode Problems in Python and Golang 🎯
Stars: ✭ 12 (-33.33%)
Mutual labels:  strings
Ruby Regexp
Learn Ruby Regexp step by step from beginner to advanced levels with plenty of examples and exercises
Stars: ✭ 79 (+338.89%)
Mutual labels:  regular-expressions
Leo-III
An Automated Theorem Prover for Classical Higher-Order Logic with Henkin Semantics
Stars: ✭ 29 (+61.11%)
Mutual labels:  theorem-proving
tokenquery
TokenQuery (regular expressions over tokens)
Stars: ✭ 28 (+55.56%)
Mutual labels:  regular-expressions
rusty-razor
Razor is a tool for constructing finite models for first-order theories
Stars: ✭ 54 (+200%)
Mutual labels:  theorem-proving
common
Metarhia Common Library
Stars: ✭ 55 (+205.56%)
Mutual labels:  strings
url-regex-safe
Regular expression matching for URL's. Maintained, safe, and browser-friendly version of url-regex. Resolves CVE-2020-7661 for Node.js servers.
Stars: ✭ 59 (+227.78%)
Mutual labels:  regular-expressions
regXwild
⏱ Superfast ^Advanced wildcards++? | Unique algorithms that was implemented on native unmanaged C++ but easily accessible in .NET via Conari (with caching of 0x29 opcodes +optimizations) etc.
Stars: ✭ 20 (+11.11%)
Mutual labels:  strings
strings-ansi
Handle ANSI escape codes in strings
Stars: ✭ 17 (-5.56%)
Mutual labels:  strings
pomagma
An inference engine for extensional untyped λ-calculus
Stars: ✭ 15 (-16.67%)
Mutual labels:  theorem-proving
simplematch
Minimal, super readable string pattern matching for python.
Stars: ✭ 147 (+716.67%)
Mutual labels:  regular-expressions
python-string-utils
A handy Python library to validate, manipulate and generate strings
Stars: ✭ 47 (+161.11%)
Mutual labels:  strings
Python
covers python basic to advance topics, practice questions, logical problems in python, web development using html, css, bootstrap, jquery, DOM, Django 🚀🚀. 💥 🌈
Stars: ✭ 29 (+61.11%)
Mutual labels:  regular-expressions
gidti
Book: Gentle Introduction to Dependent Types with Idris
Stars: ✭ 70 (+288.89%)
Mutual labels:  theorem-proving
solidity-standard-library
Solidity standard library (Array, random, math, string)
Stars: ✭ 61 (+238.89%)
Mutual labels:  strings
poeditor-cli
POEditor CLI
Stars: ✭ 29 (+61.11%)
Mutual labels:  strings
bigint
bigint is a C++ library which can handle Very very Big Integers. It can calculate factorial of 1000000... it can go any big. It may be useful in Competitive Coding and Scientific Calculations which deals with very very large Integers. It can also be used in Decryption process. It has many inbuilt functions which can be very useful.
Stars: ✭ 34 (+88.89%)
Mutual labels:  strings

OSTRICH

An SMT Solver for String Constraints

OSTRICH is an SMT solver for string constraints.

Using Ostrich

After installing the Scala Build tool (SBT), you can assemble a JAR file using sbt assembly. To run it, use either the ostrich script in the root folder, or ostrich-client. The latter transparently spins up a server that continuously serves requests from the client script; useful to avoid cold-starting the JVM if you are running many instances.

See ./ostrich -help for more options.

Input Format

OSTRICH accepts constraints written using the SMT-LIB theory of strings. At this point, most of the operators in the theory are supported, but inputs need to be straightline; see this paper for a definition.

In addition to the standardized SMT-LIB operators, OSTRICH can handle a number of further functions.

Additional string functions

Name Explanation
str.reverse Reverse a string

Unary transducers

Finite-state transducers are a general way to introduce further string functions. Examples of functions that can be represented as transducers are encoders, decoders, extraction of sub-strings, removal of white-space characters, etc.

Finite-state transducers can be defined as (mutually) recursive functions, see this file for an example.

It is also possible to use prioritised finite-state transducers: multiple outgoing transitions from a state can be given priorities, and the transducer will take the transition with highest priority that will lead to a successful run. See this file for an example.

Additional regular expression constructors

Name Explanation
re.from_ecma2020 Parse a regular expression in textual ECMAScript 2020 format (example)
re.from_ecma2020_flags Parse a regular expression in textual ECMAScript 2020 format, with a second argument to specify flags (example)
re.case_insensitive Make any regular expression case insensitive (example)

Handling of capture groups

OSTRICH can also process regular expressions that include capture groups, lazy quantifiers, and anchors, although this is more experimental. For this functionality, OSTRICH understands a number of additional regular expression operators:

Name Explanation
re.*? Non-greedy star: similar to re.* but matching as few characters as possible
re.+? Non-greedy plus
re.opt? Non-greedy option
(_ re.loop? a b) Non-greedy loop
(_ re.capture n) Capture group with index n
(_ re.reference n) Reference to the contents of capture group n
re.begin-anchor The anchor ^
re.end-anchor The anchor $

Such augmented regular expressions can be used in combination with several new string functions. Those functions support in particular capture groups and references in the replacement strings:

Name Explanation
(_ str.extract n) Extract the contents of the n'th capture group (example)
str.replace_cg Replace the first match of a regular expression (example)
str.replace_cg_all Replace all matches of a regular expression (example)
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].