Warning
This document is a work in progress. The content is subject to change. Some sections may be incomplete or missing. Please stay tuned for updates.
Inference is a programming language that defines a high-assurance, deterministic computing model with non-deterministic extensions designed by Inferara for developing verifiable programs. It enables developers to write both executable code and formal specifications in a unified language, using a familiar syntax similar to imperative programming languages.
Inference allows formal proof of the correctness of the specified properties to be expressed as a theorem-prover theory and verified in an automated way. The compiler (infc) targets multiple backends: generating executable binaries (currently WASM via LLVM IR) for deployment and proof units (Rocq) for formal verification.
Important
Inference is designed for both high-assurance application development and formal specification. While Web3 applications are a primary use case, the language's safety guarantees (determinism, no floating-point, static typing) make it suitable for any critical system requiring formal verification.
This repository contains the specification of the Inference programming language. The specification is divided into several sections, each describing a specific aspect of the language. The language is designed to be simple and easy to learn, and its syntax is concise and similar to Rust.
- Foreword
- §1 Introduction
- §2 Terms and definitions
- §3 General description
- §4 Lexical structure
- §4.1 Comments
- §4.2 Keywords
- §4.3 Identifiers
- §4.4 Reserved Identifiers
- §4.5 Qualified Identifiers
- §4.6 Member Access
- §4.7 Literals
- §4.8 Right Arrow
- §4.9 Terminator
- §4.10 Braces
- §4.10.1 Curly Braces
- §4.10.1.1 Description
- §4.10.1.2 Examples
- §4.10.2 Parentheses
- §4.10.2.1 Description
- §4.10.2.2 Examples
- §4.10.3 Square Brackets
- §4.10.3.1 Description
- §4.10.3.2 Examples
- §4.10.4 Prime Symbol
- §4.10.4.1 Description
- §4.10.4.2 Examples
- §4.10.1 Curly Braces
- §5 Basic concepts
- §6 Types
- §7 Variables
- §8 Expressions
- §9 Statements
- §10 Definitions
- §11 Functions
- §12 Constants
- §13 Directives
- §A Grammar
- §B Standard Library
- §C Comments
- §D Examples
- §E Bibliography