Viewing Results for "verification" (5 of 16 Pages)

Digital engineering -CPS Behavior Modeling and Beyond

Digital engineering (DE) is gaining momentum as the system engineering community matures practices and tooling. In its present avatar, DE workflows and tools rely on MBSE (Model-Based Systems Engineering) for developing and maintaining digital system artifacts and keeping these artifacts in sync during all phases of the system. This is presently achieved via descriptive models […]

Read More

Digitally Engineering Infinite Patient Trials

In prior posts, we’ve discussed techniques and benefits of digital engineering (DE) applied to system design, in particular hardware and software for cyber-physical systems (computer systems that interact with the real world). In this post we’ll simultaneously go big and small to present a case study in how formal methods + models can enable us […]

Read More

Securing Software Supply Chains with Zero Knowledge Proofs

Software supply chain attacks are on the rise, increasing a staggering 742% per year on average since 2019. Sometimes called “third party attacks,” these cyberattacks infiltrate third party or open source software libraries with malicious code, infecting vendors and components along the software supply chain.  These days, any given software artifact may depend on hundreds […]

Read More

Digital Engineering: From point solutions to trusted processes

In the world of cyber physical systems, the aim of Digital Engineering (DE) is to speed up the development process while simultaneously improving security, reliability, safety and performance. The core mechanism enabling this outcome is a refinement based design and implementation process whereby high-level requirements and reference architectures are refined into low-level requirements and system […]

Read More

Flux: Liquid Types for Rust

Abstract: Low-level, pointer-manipulating programs are tricky to write and devilishly hard to verify, requiring complex spatial program logics to reason about heap updates. Recent systems like Prusti and Creusot take advantage of Rust ownership mechanisms to shield the programmer from some spatial assertions, allowing them to only write pure, first-order logic specifications which can be […]

Read More

Formal methods + AI: Where does Galois fit in?

Thus far in our ongoing series on artificial intelligence we’ve spoken in depth on questions of trust, human perception, and limitations of generative models. We have focused specifically on large language models (LLMs), due in part to their recent successes and media attention. We’ve explored questions of data, testing, and broad model implications. However, LLMs […]

Read More

Proof Assistance and Repair in Crux

Overview We have added support for semi-automated proof assistance and repair to Crux, Galois’s symbolic testing tool for C/C++ and Rust. These new capabilities build on support for logical abduction provided by the cvc5 SMT solver that suggests possible facts for failed proof goals, that, when assumed, make the proof goals provable. This feature can […]

Read More

2022: Year in Review

2022 wasn’t a return to pre-pandemic times, but we’ll call it a “return to almost-normal.” At Galois, we continued a hybrid model of in-person and virtual collaboration. We also added several members to our team, including the acquisition of Adventium Labs! (More on that below.) Throughout the year, we made considerable progress applying our efforts […]

Read More

cclyzer++: Scalable and Precise Pointer Analysis for LLVM

We are pleased to announce that Galois is open-sourcing cclyzer++, a new pointer analysis for languages that compile to LLVM, including C and C++.  Pointer analysis is a foundational static analysis with applications to the problems of program optimization, verification, bug finding, and many others. At Galois, we designed cclyzer++ with two main use cases […]

Read More