All Projects → ftsrg → theta

ftsrg / theta

Licence: Apache-2.0 license
Generic, modular and configurable formal verification framework supporting various formalisms and algorithms

Programming Languages

java
68154 projects - #9 most used programming language
ANTLR
299 projects
c
50402 projects - #5 most used programming language
SWIG
194 projects
kotlin
9241 projects
Dockerfile
14818 projects

Projects that are alternatives of or similar to theta

Wreeto official
Wreeto is an open source note-taking, knowledge management and wiki system.
Stars: ✭ 241 (+608.82%)
Mutual labels:  research
yoda
A system for reliable, long-term storing and archiving large amounts of research data during all stages of a study.
Stars: ✭ 29 (-14.71%)
Mutual labels:  research
awesome-mobile-robotics
Useful links of different content related to AI, Computer Vision, and Robotics.
Stars: ✭ 243 (+614.71%)
Mutual labels:  research
Smpybandits
🔬 Research Framework for Single and Multi-Players 🎰 Multi-Arms Bandits (MAB) Algorithms, implementing all the state-of-the-art algorithms for single-player (UCB, KL-UCB, Thompson...) and multi-player (MusicalChair, MEGA, rhoRand, MCTop/RandTopM etc).. Available on PyPI: https://pypi.org/project/SMPyBandits/ and documentation on
Stars: ✭ 244 (+617.65%)
Mutual labels:  research
gmseg
Spinal cord gray matter segmentation using deep dilated convolutions.
Stars: ✭ 43 (+26.47%)
Mutual labels:  research
nightcore
Nightcore: Efficient and Scalable Serverless Computing for Latency-Sensitive, Interactive Microservices [ASPLOS '21]
Stars: ✭ 70 (+105.88%)
Mutual labels:  research
Flambe
An ML framework to accelerate research and its path to production.
Stars: ✭ 236 (+594.12%)
Mutual labels:  research
patzilla
PatZilla is a modular patent information research platform and data integration toolkit with a modern user interface and access to multiple data sources.
Stars: ✭ 71 (+108.82%)
Mutual labels:  research
projects
A website that showcases interesting projects, using Angular JS.
Stars: ✭ 106 (+211.76%)
Mutual labels:  research
plutus-experimental-smart-contracts
Experimental Smart Contracts In Plutus.
Stars: ✭ 34 (+0%)
Mutual labels:  model-checking
Browser Sec Whitepaper
Cure53 Browser Security White Paper
Stars: ✭ 251 (+638.24%)
Mutual labels:  research
itc.lua
A Lua implementation of Interval Tree Clocks
Stars: ✭ 21 (-38.24%)
Mutual labels:  research
Blockchain-Alpha
Alpha from various sectors in the blockchain space.
Stars: ✭ 102 (+200%)
Mutual labels:  research
Timelinestoryteller
An expressive visual storytelling environment for presenting timelines on the web and in Power BI. Developed at Microsoft Research.
Stars: ✭ 244 (+617.65%)
Mutual labels:  research
deepcourse
Learn the Deep Learning for Computer Vision in three steps: theory from base to SotA, code in PyTorch, and space-repetition with Anki
Stars: ✭ 117 (+244.12%)
Mutual labels:  research
Data Mining Conferences
Ranking, acceptance rate, deadline, and publication tips
Stars: ✭ 236 (+594.12%)
Mutual labels:  research
haddocking.github.io
Webpage of the Bonvinlab @ Utrecht University and HADDOCK software
Stars: ✭ 14 (-58.82%)
Mutual labels:  research
degitx
Distributed git repository manager
Stars: ✭ 28 (-17.65%)
Mutual labels:  research
ultimate-defi-research-base
Here we collect and discuss the best DeFI & Blockchain researches and tools. Feel free to DM me on Twitter or open pool request.
Stars: ✭ 1,074 (+3058.82%)
Mutual labels:  research
gscholar-citations-crawler
Crawl all your citations from Google Scholar
Stars: ✭ 43 (+26.47%)
Mutual labels:  research

Theta

Windows build Linux build Build dockerfiles Codacy Badge Codacy Badge Apache 2.0 License

Theta logo

About

Theta is a generic, modular and configurable model checking framework developed at the Critical Systems Research Group of Budapest University of Technology and Economics, aiming to support the design and evaluation of abstraction refinement-based algorithms for the reachability analysis of various formalisms. The main distinguishing characteristic of Theta is its architecture that allows the definition of input formalisms with higher level language front-ends, and the combination of various abstract domains, interpreters, and strategies for abstraction and refinement. Theta can both serve as a model checking backend, and also includes ready-to-use, stand-alone tools.

Use Theta

Tools are concrete instantiations of the framework to solve a certain problem using the built-in algorithms. Currently, the following tools are available (follow the links for more information).

  • theta-cfa-cli: Reachability checking of error locations in Control Flow Automata (CFA) using CEGAR-based algorithms.
    • Gazer is an LLVM-based frontend to verify C programs using theta-cfa-cli, also giving support towards SV-COMP. See our tool paper at TACAS for more information.
    • PLCverif is a tool developed at CERN for the formal specification and verification of PLC (Programmable Logic Controller) programs, supporting theta-cfa-cli as one of its verification backends.
  • theta-sts-cli: Verification of safety properties in Symbolic Transition Systems (STS) using CEGAR-based algorithms.
  • theta-xta-cli: Verification of Uppaal timed automata (XTA).
  • theta-xsts-cli: Verification of safety properties in eXtended Symbolic Transition Systems (XSTS) using CEGAR-based algorithms.
    • Gamma is a statechart composition framework, that supports theta-xsts-cli as a backend to verify collaborating state machines.
    • theta-xsts-cli natively supports Petri net models in the PNML format (experimental).
  • theta-xcfa-cli: Reachability checking of error locations in eXtended Control Flow Automata (XCFA) using CEGAR-based algorithms. The CFA formalism is extended with procedures and processes, able to support multithreaded analysis and also several optimization passes. Right now it is mainly used to check both single and multithreaded C programs.
    • the c-frontend module of Theta is capable of parsing C programs and transforming them into a formalism independent, in-memory representation. The xcfa-cli is able to convert this representation into an XCFA.

Overview of the architecture

Theta can be divided into the following four layers.

  • Formalisms: The core elements of Theta are the formalisms, which represent models of real life systems (e.g., software, hardware, protocols). Formalisms are usually low level, mathematical representations based on first order logic expressions and graph like structures. Formalisms can also support higher level languages that can be mapped to that particular formalism by a language front-end (consisting of a specific parser and possibly reductions for simplification of the model). The common features of the different formalisms reside in the core project (e.g., expressions and statements) and each formalism has its own project. Currently, the following formalisms are supported: (extended) symbolic transition systems (sts / xsts), control-flow automata (cfa) and timed automata (xta).
  • Analysis back-end: The analysis back-end provides the verification algorithms that can formally prove whether a model meets certain requirements. There is an interpreter for each formalism, providing a common interface towards the algorithms (e.g., calculating initial states and successors). This ensures that most components of the algorithms work for all formalisms (as long as they provide the interpreter). The verification algorithms are mostly based on abstraction. The analysis back-end defines various abstract domains (e.g., predicates, explicit values, zones), strategies for performing abstraction and refinement (e.g., interpolation), and algorithms built from these components. The common components reside in the analysis project (e.g., CEGAR loop) and the formalism-specific modules (e.g., the interpreters) are implemented in separate analysis projects (with suffix -analysis) for each formalism.
  • SMT solver interface and SMT solvers: Many components of the algorithms rely on satisfiability modulo theories (SMT) solvers. The framework provides a general SMT solver interface in the project solver that supports incremental solving, unsat cores, and the generation of binary and sequence interpolants. Currently, the interface is implemented by the Z3 SMT solver in the project solver-z3, but it can easily be extended with new solvers.
  • Tools: Tools are command line applications that can be compiled into a runnable jar file. Tools usually read some input and then instantiate and run the algorithms. Tools are implemented in separate projects, currently with the -cli suffix.

The table below shows the architecture and the projects. Each project contains a README.md in its root directory describing its purpose in more detail.

Common CFA STS XTA XSTS XCFA
Tools solver-smtlib-cli cfa-cli sts-cli xta-cli xsts-cli xcfa-cli
Analyses analysis cfa-analysis sts-analysis xta-analysis xsts-analysis xcfa-analysis
Formalisms core, common cfa sts xta xsts xcfa
SMT solvers solver, solver-z3, solver-smtlib

Extend Theta

If you want to extend Theta and build your own algorithms and tools, then take look at doc/Development.md.

Read more

If you want to read more, take a look at our list of publications. A good starting point is our tool paper and slides/talk presented at FMCAD 2017. Furthermore, our paper in the Journal of Automated Reasoning is a good overview of the algorithms in Theta.

To cite Theta as a tool, please use the following paper.

@inproceedings{theta-fmcad2017,
    author     = {T\'oth, Tam\'as and Hajdu, \'{A}kos and V\"or\"os, Andr\'as and Micskei, Zolt\'an and Majzik, Istv\'an},
    year       = {2017},
    title      = {Theta: a Framework for Abstraction Refinement-Based Model Checking},
    booktitle  = {Proceedings of the 17th Conference on Formal Methods in Computer-Aided Design},
    isbn       = {978-0-9835678-7-5},
    editor     = {Stewart, Daryl and Weissenbacher, Georg},
    pages      = {176--179},
    doi        = {10.23919/FMCAD.2017.8102257},
}

Acknowledgements

Supporters of the Theta project are listed below.

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].