An open API service indexing awesome lists of open source software.

https://github.com/inferara/inference-language-spec

๐ŸŒ€ Inference programming language specification
https://github.com/inferara/inference-language-spec

formal-specification formal-verification programming-language

Last synced: 17 days ago
JSON representation

๐ŸŒ€ Inference programming language specification

Awesome Lists containing this project

README

          

![alt text](./assets/inference-logo-oulined-shaped-font.svg)

# ๐ŸŒ€ Inference programming language specification

> [!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](https://inferara.com) 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.

## Table of contents

- [Foreword](./foreword.md)
- [ยง1](./introduction.md) Introduction
- [ยง2](./terms-and-definitions.md) Terms and definitions
- [ยง2.1](./terms-and-definitions.md#21-dapp) DApp
- [ยง2.2](./terms-and-definitions.md#22-infc) `infc`
- [ยง2.3](./terms-and-definitions.md#23-module) Module
- [ยง2.4](./terms-and-definitions.md#24-theory) Theory
- [ยง2.5](./terms-and-definitions.md#25-proof-unit) Proof-Unit
- [ยง3](./general-description.md) General description
- [ยง3.1](./general-description.md#31-non-deterministic-computations) Non-Deterministic Computations
- [ยง3.1.1](./general-description.md#311-uzumaki) Uzumaki
- [ยง3.1.2](./general-description.md#312-forall) Forall
- [ยง3.1.3](./general-description.md#313-assume) Assume
- [ยง3.1.4](./general-description.md#314-exists) Exists
- [ยง3.1.5](./general-description.md#315-unique) Unique
- [ยง3.1.6](./general-description.md#316-semantics) Semantics
- [ยง3.1.7](./general-description.md#317-examples) Examples
- [ยง3.2](./general-description.md#32-compiler-design) Compiler Design
- [ยง3.3](./general-description.md#33-automated-theorem-proving) Automated Theorem Proving
- [ยง3.4](./general-description.md#34-restrictions) Restrictions
- [ยง4](./lexical-structure.md) Lexical structure
- [ยง4.1](./lexical-structure.md#41-comments) Comments
- [ยง4.1.](./lexical-structure.md#411-description) Description
- [ยง4.1.2](./lexical-structure.md#412-examples) Examples
- [ยง4.2](./lexical-structure.md#42-keywords) Keywords
- [ยง4.3](./lexical-structure.md#43-identifiers) Identifiers
- [ยง4.3.1](./lexical-structure.md#431-description) Description
- [ยง4.3.2](./lexical-structure.md#432-examples) Examples
- [ยง4.4](./lexical-structure.md#44-reserved-identifiers) Reserved Identifiers
- [ยง4.5](./lexical-structure.md#45-qualified-identifiers) Qualified Identifiers
- [ยง4.5.1](./lexical-structure.md#451-description) Description
- [ยง4.5.2](./lexical-structure.md#452-examples) Examples
- [ยง4.6](./lexical-structure.md#46-member-access) Member Access
- [ยง4.6.1](./lexical-structure.md#461-description) Description
- [ยง4.6.2](./lexical-structure.md#462-examples) Examples
- [ยง4.7](./lexical-structure.md#47-literals) Literals
- [ยง4.7.1](./lexical-structure.md#471-bool) Bool
- [ยง4.7.1.1](./lexical-structure.md#4711-description) Description
- [ยง4.7.1.2](./lexical-structure.md#4712-examples) Examples
- [ยง4.7.2](./lexical-structure.md#472-unit) Unit
- [ยง4.7.2.1](./lexical-structure.md#4721-description) Description
- [ยง4.7.2.2](./lexical-structure.md#4722-examples) Examples
- [ยง4.8](./lexical-structure.md#48-right-arrow) Right Arrow
- [ยง4.8.1](./lexical-structure.md#481-description) Description
- [ยง4.8.2](./lexical-structure.md#482-examples) Examples
- [ยง4.9](./lexical-structure.md#49-terminator) Terminator
- [ยง4.9.1](./lexical-structure.md#491-description) Description
- [ยง4.9.2](./lexical-structure.md#492-examples) Examples
- [ยง4.10](./lexical-structure.md#410-braces) Braces
- [ยง4.10.1](./lexical-structure.md#4101-curly-braces) Curly Braces
- [ยง4.10.1.1](./lexical-structure.md#41011-description) Description
- [ยง4.10.1.2](./lexical-structure.md#41012-examples) Examples
- [ยง4.10.2](./lexical-structure.md#4102-parentheses) Parentheses
- [ยง4.10.2.1](./lexical-structure.md#41021-description) Description
- [ยง4.10.2.2](./lexical-structure.md#41022-examples) Examples
- [ยง4.10.3](./lexical-structure.md#4103-square-brackets) Square Brackets
- [ยง4.10.3.1](./lexical-structure.md#41031-description) Description
- [ยง4.10.3.2](./lexical-structure.md#41032-examples) Examples
- [ยง4.10.4](./lexical-structure.md#4104-prime-symbol) Prime Symbol
- [ยง4.10.4.1](./lexical-structure.md#41041-description) Description
- [ยง4.10.4.2](./lexical-structure.md#41042-examples) Examples
- [ยง5](./basic-concepts.md) Basic concepts
- [ยง5.1](./basic-concepts.md#51-specification-definition) Specification Definition
- [ยง5.2](./basic-concepts.md#52-specification-is-not-a-program) Specification Is Not a Program
- [ยง5.3](./basic-concepts.md#53-execution-model) Execution Model
- [ยง5.4](./basic-concepts.md#54-non-deterministic-execution) Non-deterministic Execution
- [ยง5.5](./basic-concepts.md#55-platform-specific-execution) Platform-specific Execution
- [ยง5.6](./basic-concepts.md#56-platform-agnostic-design) Platform Agnostic Design
- [ยง5.7](./basic-concepts.md#57-automated-reasoning) Automated Reasoning
- [ยง5.8](./basic-concepts.md#58-correctness-certificate) Correctness Certificate
- [ยง6](./types.md) Types
- [ยง6.1](./types.md#61-unit) Unit
- [ยง6.1.1](./types.md#611-description) Description
- [ยง6.1.2](./types.md#612-examples) Examples
- [ยง6.2](./types.md#62-elementary-types) Elementary Types
- [ยง6.2.1](./types.md#621-boolean) Boolean
- [ยง6.2.1.1](./types.md#6211-description) Description
- [ยง6.2.1.2](./types.md#6212-examples) Examples
- [ยง6.2.2](./types.md#622-integers) Integers
- [ยง6.2.2.1](./types.md#6221-description) Description
- [ยง6.2.2.2](./types.md#6222-examples) Examples
- [ยง6.2.3](./types.md#623-unsigned-integers) Unsigned Integers
- [ยง6.2.3.1](./types.md#6231-description) Description
- [ยง6.2.3.2](./types.md#6232-examples) Examples
- [ยง6.3](./types.md#63-array) Array
- [ยง6.3.1](./types.md#631-description) Description
- [ยง6.3.2](./types.md#632-examples) Examples
- [ยง6.4](./types.md#64-function-type) Function type
- [ยง6.4.1](./types.md#641-description) Description
- [ยง6.4.2](./types.md#642-examples) Examples
- [ยง6.5](./types.md#65-user-defined-types) User-defined Types
- [ยง6.5.1](./types.md#651-description) Description
- [ยง7](./variables.md) Variables
- [ยง7.1](./variables.md#71-general-description) General Description
- [ยง7.2](./variables.md#72-variable-categories) Variable Categories
- [ยง7.2.1](./variables.md#721-local-variables) Local Variables
- [ยง7.2.1.1](./variables.md#7211-description) Description
- [ยง7.2.1.2](./variables.md#7212-examples) Examples
- [ยง7.2.2](./variables.md#722-array-elements) Array Elements
- [ยง7.2.2.1](./variables.md#7221-description) Description
- [ยง7.2.2.2](./variables.md#7222-examples) Examples
- [ยง7.3](./variables.md#73-default-values) Default Values
- [ยง7.3.1](./variables.md#731-description) Description
- [ยง7.3.2](./variables.md#732-examples) Examples
- [ยง7.4](./variables.md#74-variable-definition-and-assignment) Variable Definition and Assignment
- [ยง7.4.1](./variables.md#741-description) Description
- [ยง7.4.2](./variables.md#742-block-statement) Block Statement
- [ยง7.4.2.1](./variables.md#7421-description) Description
- [ยง7.4.2.2](./variables.md#7422-examples) Examples
- [ยง7.4.3](./variables.md#743-loop-statement) Loop Statement
- [ยง7.4.3.1](./variables.md#7431-description) Description
- [ยง7.4.3.2](./variables.md#7432-examples) Examples
- [ยง8](./expressions.md) Expressions
- [ยง8.1](./expressions.md#81-member-access) Member Access
- [ยง8.1.1](./expressions.md#811-description) Description
- [ยง8.1.2](./expressions.md#812-examples) Examples
- [ยง8.2](./expressions.md#82-array-index-access) Array Index Access
- [ยง8.2.1](./expressions.md#821-description) Description
- [ยง8.2.2](./expressions.md#822-examples) Examples
- [ยง8.3](./expressions.md#83-function-call) Function Call
- [ยง8.3.1](./expressions.md#831-description) Description
- [ยง8.3.2](./expressions.md#832-examples) Examples
- [ยง8.4](./expressions.md#84-parenthesized) Parenthesized
- [ยง8.4.1](./expressions.md#841-description) Description
- [ยง8.4.2](./expressions.md#842-examples) Examples
- [ยง8.5](./expressions.md#85-unary-operators) Unary Operators
- [ยง8.5.1](./expressions.md#851-description) Description
- [ยง8.5.2](./expressions.md#852-examples) Examples
- [ยง8.6](./expressions.md#86-binary-operators) Binary Operators
- [ยง8.6.1](./expressions.md#861-description) Description
- [ยง8.6.2](./expressions.md#862-examples) Examples
- [ยง9](./statements.md#9-statements) Statements
- [ยง9.1](./statements.md#91-assign) Assign
- [ยง9.1.1](./statements.md#911-description) Description
- [ยง9.1.2](./statements.md#912-examples) Examples
- [ยง9.2](./statements.md#92-block) Block
- [ยง9.2.1](./statements.md#921-description) Description
- [ยง9.2.2](./statements.md#922-examples) Examples
- [ยง9.3](./statements.md#93-return) Return
- [ยง9.3.1](./statements.md#931-description) Description
- [ยง9.3.2](./statements.md#932-examples) Examples
- [ยง9.4](./statements.md#94-forall) Forall
- [ยง9.5](./statements.md#95-exists) Exists
- [ยง9.6](./statements.md#96-assume) Assume
- [ยง9.6.1](./statements.md#961-description) Description
- [ยง9.6.2](./statements.md#962-examples) Examples
- [ยง9.7](./statements.md#97-unique) Unique
- [ยง9.7.1](./statements.md#971-description) Description
- [ยง9.7.2](./statements.md#972-examples) Examples
- [ยง9.8](./statements.md#98-loop) Loop
- [ยง9.8.1](./statements.md#981-description) Description
- [ยง9.8.2](./statements.md#982-examples) Examples
- [ยง9.9](./statements.md#99-if) If
- [ยง9.9.1](./statements.md#991-description) Description
- [ยง9.9.2](./statements.md#992-examples) Examples
- [ยง9.10](./statements.md#910-variable-definition) Variable Definition
- [ยง9.10.1](./statements.md#9101-description) Description
- [ยง9.10.2](./statements.md#9102-value-modifiers) Value Modifiers
- [ยง9.10.2.1](./statements.md#91021-uzumaki) Uzumaki
- [ยง9.10.3](./statements.md#9103-examples) Examples
- [ยง9.11](./statements.md#911-type-definition) Type Definition
- [ยง9.11.1](./statements.md#9111-description) Description
- [ยง9.11.2](./statements.md#9112-examples) Examples
- [ยง9.12](./statements.md#912-assert) Assert
- [ยง9.12.1](./statements.md#9121-description) Description
- [ยง9.12.2](./statements.md#9122-examples) Examples
- [ยง10](./definitions.md) Definitions
- [ยง10.1](./definitions.md#101-constant) Constant
- [ยง10.1.1](./definitions.md#1011-description) Description
- [ยง10.1.2](./definitions.md#1012-examples) Examples
- [ยง10.2](./definitions.md#102-function) Function
- [ยง10.2.1](./definitions.md#1021-description) Description
- [ยง10.2.2](./definitions.md#1022-examples) Examples
- [ยง10.3](./definitions.md#103-external-function) External Function
- [ยง10.3.1](./definitions.md#1031-description) Description
- [ยง10.3.2](./definitions.md#1032-examples) Examples
- [ยง10.4](./definitions.md#104-type) Type
- [ยง10.4.1](./definitions.md#1041-description) Description
- [ยง10.4.2](./definitions.md#1042-examples) Examples
- [ยง10.5](./definitions.md#105-spec) Spec
- [ยง10.5.1](./definitions.md#1051-description) Description
- [ยง10.5.2](./definitions.md#1052-examples) Examples
- [ยง10.6](./definitions.md#106-enum) Enum
- [ยง10.6.1](./definitions.md#1061-description) Description
- [ยง10.6.2](./definitions.md#1062-examples) Examples
- [ยง10.7](./definitions.md#107-struct) Struct
- [ยง10.7.1](./definitions.md#1071-description) Description
- [ยง10.7.2](./definitions.md#1072-examples) Examples
- [ยง11](./functions.md) Functions
- [ยง11.1](./functions.md#111-function-definition) Function Definition
- [ยง11.1.1](./functions.md#1111-description) Description
- [ยง11.1.2](./functions.md#1112-declaring-a-function) Declaring a function
- [ยง11.1.3](./functions.md#1113-modifiers) Modifiers
- [ยง11.1.3.1](./functions.md#11131-forall) `forall`
- [ยง11.1.4](./functions.md#1114-examples) Examples
- [ยง11.2](./functions.md#112-external-function) External Function
- [ยง11.2.1](./functions.md#1121-description) Description
- [ยง11.2.2](./functions.md#1122-examples) Examples
- [ยง11.3](./functions.md#113-high-order-functions) High-order Functions
- [ยง11.3.1](./functions.md#1131-description) Description
- [ยง11.3.2](./functions.md#1132-examples) Examples
- [ยง12](./constants.md) Constants
- [ยง12.1](./constants.md#121-description) Description
- [ยง12.2](./constants.md#122-examples) Examples
- [ยง13](./directives.md) Directives
- [ยง13.1](./directives.md#131-use-directive) Use Directive
- [ยง13.1.1](./directives.md#1311-description) Description
- [ยง13.1.2](./directives.md#1312-examples) Examples
- [ยงA](./grammar.md) Grammar
- [ยงB](./standard-library.md) Standard Library
- [ยงC](./comments.md) Comments
- [C001](./comments.md#c001)
- [C002](./comments.md#c002)
- [ยงD](./examples.md) Examples
- [ยงE](./bibliography.md) Bibliography
- [ยงE.1](./bibliography.md#e1-inferara-papers) Inferara Papers
- [ยงE.2](./bibliography.md#e2-books) Books
- [ยงE.3](./bibliography.md#e3-articles) Articles
- [ยงE.4](./bibliography.md#e4-links) Links