{"id":25867196,"url":"https://github.com/inferara/inference-language-spec","last_synced_at":"2026-03-03T22:30:55.303Z","repository":{"id":259203066,"uuid":"822092489","full_name":"Inferara/inference-language-spec","owner":"Inferara","description":"🌀 Inference programming language specification","archived":false,"fork":false,"pushed_at":"2025-12-14T04:58:40.000Z","size":680,"stargazers_count":13,"open_issues_count":1,"forks_count":1,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-12-16T06:22:15.422Z","etag":null,"topics":["formal-specification","formal-verification","programming-language"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Inferara.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["inferara"]}},"created_at":"2024-06-30T09:42:01.000Z","updated_at":"2025-12-14T04:58:42.000Z","dependencies_parsed_at":"2025-09-02T03:28:12.097Z","dependency_job_id":"8e212c21-7020-4989-b26c-fe91b627fa7c","html_url":"https://github.com/Inferara/inference-language-spec","commit_stats":null,"previous_names":["inferara/inference-language-spec"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Inferara/inference-language-spec","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Inferara%2Finference-language-spec","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Inferara%2Finference-language-spec/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Inferara%2Finference-language-spec/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Inferara%2Finference-language-spec/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Inferara","download_url":"https://codeload.github.com/Inferara/inference-language-spec/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Inferara%2Finference-language-spec/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30064268,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-03T18:21:05.932Z","status":"ssl_error","status_checked_at":"2026-03-03T18:20:59.341Z","response_time":61,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["formal-specification","formal-verification","programming-language"],"created_at":"2025-03-02T03:34:23.572Z","updated_at":"2026-03-03T22:30:55.274Z","avatar_url":"https://github.com/Inferara.png","language":null,"funding_links":["https://github.com/sponsors/inferara"],"categories":[],"sub_categories":[],"readme":"![alt text](./assets/inference-logo-oulined-shaped-font.svg)\n\n# 🌀 Inference programming language specification\n\n\u003e [!WARNING]\n\u003e 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.\n\nInference 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.\n\nInference 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.\n\n\u003e [!IMPORTANT]\n\u003e 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.\n\nThis 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.\n\n## Table of contents\n\n- [Foreword](./foreword.md)\n- [§1](./introduction.md) Introduction\n- [§2](./terms-and-definitions.md) Terms and definitions\n  - [§2.1](./terms-and-definitions.md#21-dapp) DApp\n  - [§2.2](./terms-and-definitions.md#22-infc) `infc`\n  - [§2.3](./terms-and-definitions.md#23-module) Module\n  - [§2.4](./terms-and-definitions.md#24-theory) Theory\n  - [§2.5](./terms-and-definitions.md#25-proof-unit) Proof-Unit\n- [§3](./general-description.md) General description\n  - [§3.1](./general-description.md#31-non-deterministic-computations) Non-Deterministic Computations\n    - [§3.1.1](./general-description.md#311-uzumaki) Uzumaki\n    - [§3.1.2](./general-description.md#312-forall) Forall\n    - [§3.1.3](./general-description.md#313-assume) Assume\n    - [§3.1.4](./general-description.md#314-exists) Exists\n    - [§3.1.5](./general-description.md#315-unique) Unique\n    - [§3.1.6](./general-description.md#316-semantics) Semantics\n    - [§3.1.7](./general-description.md#317-examples) Examples\n  - [§3.2](./general-description.md#32-compiler-design) Compiler Design\n  - [§3.3](./general-description.md#33-automated-theorem-proving) Automated Theorem Proving\n  - [§3.4](./general-description.md#34-restrictions) Restrictions\n- [§4](./lexical-structure.md) Lexical structure\n  - [§4.1](./lexical-structure.md#41-comments) Comments\n    - [§4.1.](./lexical-structure.md#411-description) Description\n    - [§4.1.2](./lexical-structure.md#412-examples) Examples\n  - [§4.2](./lexical-structure.md#42-keywords) Keywords\n  - [§4.3](./lexical-structure.md#43-identifiers) Identifiers\n    - [§4.3.1](./lexical-structure.md#431-description) Description\n    - [§4.3.2](./lexical-structure.md#432-examples) Examples\n  - [§4.4](./lexical-structure.md#44-reserved-identifiers) Reserved Identifiers\n  - [§4.5](./lexical-structure.md#45-qualified-identifiers) Qualified Identifiers\n    - [§4.5.1](./lexical-structure.md#451-description) Description\n    - [§4.5.2](./lexical-structure.md#452-examples) Examples\n  - [§4.6](./lexical-structure.md#46-member-access) Member Access\n    - [§4.6.1](./lexical-structure.md#461-description) Description\n    - [§4.6.2](./lexical-structure.md#462-examples) Examples\n  - [§4.7](./lexical-structure.md#47-literals) Literals\n    - [§4.7.1](./lexical-structure.md#471-bool) Bool\n      - [§4.7.1.1](./lexical-structure.md#4711-description) Description\n      - [§4.7.1.2](./lexical-structure.md#4712-examples) Examples\n    - [§4.7.2](./lexical-structure.md#472-unit) Unit\n      - [§4.7.2.1](./lexical-structure.md#4721-description) Description\n      - [§4.7.2.2](./lexical-structure.md#4722-examples) Examples\n  - [§4.8](./lexical-structure.md#48-right-arrow) Right Arrow\n    - [§4.8.1](./lexical-structure.md#481-description) Description\n    - [§4.8.2](./lexical-structure.md#482-examples) Examples\n  - [§4.9](./lexical-structure.md#49-terminator) Terminator\n    - [§4.9.1](./lexical-structure.md#491-description) Description\n    - [§4.9.2](./lexical-structure.md#492-examples) Examples\n  - [§4.10](./lexical-structure.md#410-braces) Braces\n    - [§4.10.1](./lexical-structure.md#4101-curly-braces) Curly Braces\n      - [§4.10.1.1](./lexical-structure.md#41011-description) Description\n      - [§4.10.1.2](./lexical-structure.md#41012-examples) Examples\n    - [§4.10.2](./lexical-structure.md#4102-parentheses) Parentheses\n      - [§4.10.2.1](./lexical-structure.md#41021-description) Description\n      - [§4.10.2.2](./lexical-structure.md#41022-examples) Examples\n    - [§4.10.3](./lexical-structure.md#4103-square-brackets) Square Brackets\n      - [§4.10.3.1](./lexical-structure.md#41031-description) Description\n      - [§4.10.3.2](./lexical-structure.md#41032-examples) Examples\n    - [§4.10.4](./lexical-structure.md#4104-prime-symbol) Prime Symbol\n      - [§4.10.4.1](./lexical-structure.md#41041-description) Description\n      - [§4.10.4.2](./lexical-structure.md#41042-examples) Examples\n- [§5](./basic-concepts.md) Basic concepts\n  - [§5.1](./basic-concepts.md#51-specification-definition) Specification Definition\n  - [§5.2](./basic-concepts.md#52-specification-is-not-a-program) Specification Is Not a Program\n  - [§5.3](./basic-concepts.md#53-execution-model) Execution Model\n  - [§5.4](./basic-concepts.md#54-non-deterministic-execution) Non-deterministic Execution\n  - [§5.5](./basic-concepts.md#55-platform-specific-execution) Platform-specific Execution\n  - [§5.6](./basic-concepts.md#56-platform-agnostic-design) Platform Agnostic Design\n  - [§5.7](./basic-concepts.md#57-automated-reasoning) Automated Reasoning\n  - [§5.8](./basic-concepts.md#58-correctness-certificate) Correctness Certificate\n- [§6](./types.md) Types\n  - [§6.1](./types.md#61-unit) Unit\n    - [§6.1.1](./types.md#611-description) Description\n    - [§6.1.2](./types.md#612-examples) Examples\n  - [§6.2](./types.md#62-elementary-types) Elementary Types\n    - [§6.2.1](./types.md#621-boolean) Boolean\n      - [§6.2.1.1](./types.md#6211-description) Description\n      - [§6.2.1.2](./types.md#6212-examples) Examples\n    - [§6.2.2](./types.md#622-integers) Integers\n      - [§6.2.2.1](./types.md#6221-description) Description\n      - [§6.2.2.2](./types.md#6222-examples) Examples\n    - [§6.2.3](./types.md#623-unsigned-integers) Unsigned Integers\n      - [§6.2.3.1](./types.md#6231-description) Description\n      - [§6.2.3.2](./types.md#6232-examples) Examples\n    - [§6.3](./types.md#63-array) Array\n      - [§6.3.1](./types.md#631-description) Description\n      - [§6.3.2](./types.md#632-examples) Examples\n    - [§6.4](./types.md#64-function-type) Function type\n      - [§6.4.1](./types.md#641-description) Description\n      - [§6.4.2](./types.md#642-examples) Examples\n    - [§6.5](./types.md#65-user-defined-types) User-defined Types\n      - [§6.5.1](./types.md#651-description) Description\n- [§7](./variables.md) Variables\n  - [§7.1](./variables.md#71-general-description) General Description\n  - [§7.2](./variables.md#72-variable-categories) Variable Categories\n    - [§7.2.1](./variables.md#721-local-variables) Local Variables\n      - [§7.2.1.1](./variables.md#7211-description) Description\n      - [§7.2.1.2](./variables.md#7212-examples) Examples\n    - [§7.2.2](./variables.md#722-array-elements) Array Elements\n      - [§7.2.2.1](./variables.md#7221-description) Description\n      - [§7.2.2.2](./variables.md#7222-examples) Examples\n  - [§7.3](./variables.md#73-default-values) Default Values\n    - [§7.3.1](./variables.md#731-description) Description\n    - [§7.3.2](./variables.md#732-examples) Examples\n  - [§7.4](./variables.md#74-variable-definition-and-assignment) Variable Definition and Assignment\n    - [§7.4.1](./variables.md#741-description) Description\n    - [§7.4.2](./variables.md#742-block-statement) Block Statement\n      - [§7.4.2.1](./variables.md#7421-description) Description\n      - [§7.4.2.2](./variables.md#7422-examples) Examples\n    - [§7.4.3](./variables.md#743-loop-statement) Loop Statement\n      - [§7.4.3.1](./variables.md#7431-description) Description\n      - [§7.4.3.2](./variables.md#7432-examples) Examples\n- [§8](./expressions.md) Expressions\n  - [§8.1](./expressions.md#81-member-access) Member Access\n    - [§8.1.1](./expressions.md#811-description) Description\n    - [§8.1.2](./expressions.md#812-examples) Examples\n  - [§8.2](./expressions.md#82-array-index-access) Array Index Access\n    - [§8.2.1](./expressions.md#821-description) Description\n    - [§8.2.2](./expressions.md#822-examples) Examples\n  - [§8.3](./expressions.md#83-function-call) Function Call\n    - [§8.3.1](./expressions.md#831-description) Description\n    - [§8.3.2](./expressions.md#832-examples) Examples\n  - [§8.4](./expressions.md#84-parenthesized) Parenthesized\n    - [§8.4.1](./expressions.md#841-description) Description\n    - [§8.4.2](./expressions.md#842-examples) Examples\n  - [§8.5](./expressions.md#85-unary-operators) Unary Operators\n    - [§8.5.1](./expressions.md#851-description) Description\n    - [§8.5.2](./expressions.md#852-examples) Examples\n  - [§8.6](./expressions.md#86-binary-operators) Binary Operators\n    - [§8.6.1](./expressions.md#861-description) Description\n    - [§8.6.2](./expressions.md#862-examples) Examples\n- [§9](./statements.md#9-statements) Statements\n  - [§9.1](./statements.md#91-assign) Assign\n    - [§9.1.1](./statements.md#911-description) Description\n    - [§9.1.2](./statements.md#912-examples) Examples\n  - [§9.2](./statements.md#92-block) Block\n    - [§9.2.1](./statements.md#921-description) Description\n    - [§9.2.2](./statements.md#922-examples) Examples\n  - [§9.3](./statements.md#93-return) Return\n    - [§9.3.1](./statements.md#931-description) Description\n    - [§9.3.2](./statements.md#932-examples) Examples\n  - [§9.4](./statements.md#94-forall) Forall\n  - [§9.5](./statements.md#95-exists) Exists\n  - [§9.6](./statements.md#96-assume) Assume\n    - [§9.6.1](./statements.md#961-description) Description\n    - [§9.6.2](./statements.md#962-examples) Examples\n  - [§9.7](./statements.md#97-unique) Unique\n    - [§9.7.1](./statements.md#971-description) Description\n    - [§9.7.2](./statements.md#972-examples) Examples\n  - [§9.8](./statements.md#98-loop) Loop\n    - [§9.8.1](./statements.md#981-description) Description\n    - [§9.8.2](./statements.md#982-examples) Examples\n  - [§9.9](./statements.md#99-if) If\n    - [§9.9.1](./statements.md#991-description) Description\n    - [§9.9.2](./statements.md#992-examples) Examples\n  - [§9.10](./statements.md#910-variable-definition) Variable Definition\n    - [§9.10.1](./statements.md#9101-description) Description\n    - [§9.10.2](./statements.md#9102-value-modifiers) Value Modifiers\n      - [§9.10.2.1](./statements.md#91021-uzumaki) Uzumaki\n    - [§9.10.3](./statements.md#9103-examples) Examples\n  - [§9.11](./statements.md#911-type-definition) Type Definition\n    - [§9.11.1](./statements.md#9111-description) Description\n    - [§9.11.2](./statements.md#9112-examples) Examples\n  - [§9.12](./statements.md#912-assert) Assert\n    - [§9.12.1](./statements.md#9121-description) Description\n    - [§9.12.2](./statements.md#9122-examples) Examples\n- [§10](./definitions.md) Definitions\n  - [§10.1](./definitions.md#101-constant) Constant\n    - [§10.1.1](./definitions.md#1011-description) Description\n    - [§10.1.2](./definitions.md#1012-examples) Examples\n  - [§10.2](./definitions.md#102-function) Function\n    - [§10.2.1](./definitions.md#1021-description) Description\n    - [§10.2.2](./definitions.md#1022-examples) Examples\n  - [§10.3](./definitions.md#103-external-function) External Function\n    - [§10.3.1](./definitions.md#1031-description) Description\n    - [§10.3.2](./definitions.md#1032-examples) Examples\n  - [§10.4](./definitions.md#104-type) Type\n    - [§10.4.1](./definitions.md#1041-description) Description\n    - [§10.4.2](./definitions.md#1042-examples) Examples\n  - [§10.5](./definitions.md#105-spec) Spec\n    - [§10.5.1](./definitions.md#1051-description) Description\n    - [§10.5.2](./definitions.md#1052-examples) Examples\n  - [§10.6](./definitions.md#106-enum) Enum\n    - [§10.6.1](./definitions.md#1061-description) Description\n    - [§10.6.2](./definitions.md#1062-examples) Examples\n  - [§10.7](./definitions.md#107-struct) Struct\n    - [§10.7.1](./definitions.md#1071-description) Description\n    - [§10.7.2](./definitions.md#1072-examples) Examples\n- [§11](./functions.md) Functions\n  - [§11.1](./functions.md#111-function-definition) Function Definition\n    - [§11.1.1](./functions.md#1111-description) Description\n    - [§11.1.2](./functions.md#1112-declaring-a-function) Declaring a function\n      - [§11.1.3](./functions.md#1113-modifiers) Modifiers\n        - [§11.1.3.1](./functions.md#11131-forall) `forall`\n    - [§11.1.4](./functions.md#1114-examples) Examples\n  - [§11.2](./functions.md#112-external-function) External Function\n    - [§11.2.1](./functions.md#1121-description) Description\n    - [§11.2.2](./functions.md#1122-examples) Examples\n  - [§11.3](./functions.md#113-high-order-functions) High-order Functions\n    - [§11.3.1](./functions.md#1131-description) Description\n    - [§11.3.2](./functions.md#1132-examples) Examples\n- [§12](./constants.md) Constants\n  - [§12.1](./constants.md#121-description) Description\n  - [§12.2](./constants.md#122-examples) Examples\n- [§13](./directives.md) Directives\n  - [§13.1](./directives.md#131-use-directive) Use Directive\n    - [§13.1.1](./directives.md#1311-description) Description\n    - [§13.1.2](./directives.md#1312-examples) Examples\n- [§A](./grammar.md) Grammar\n- [§B](./standard-library.md) Standard Library\n- [§C](./comments.md) Comments\n  - [C001](./comments.md#c001)\n  - [C002](./comments.md#c002)\n- [§D](./examples.md) Examples\n- [§E](./bibliography.md) Bibliography\n  - [§E.1](./bibliography.md#e1-inferara-papers) Inferara Papers\n  - [§E.2](./bibliography.md#e2-books) Books\n  - [§E.3](./bibliography.md#e3-articles) Articles\n  - [§E.4](./bibliography.md#e4-links) Links\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finferara%2Finference-language-spec","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finferara%2Finference-language-spec","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finferara%2Finference-language-spec/lists"}