{"id":13831895,"url":"https://github.com/rzk-lang/rzk","last_synced_at":"2026-04-01T23:34:51.787Z","repository":{"id":46221760,"uuid":"316195970","full_name":"rzk-lang/rzk","owner":"rzk-lang","description":"An experimental proof assistant based on a type theory for synthetic ∞-categories.","archived":false,"fork":false,"pushed_at":"2026-02-08T21:27:02.000Z","size":60786,"stargazers_count":272,"open_issues_count":50,"forks_count":14,"subscribers_count":13,"default_branch":"develop","last_synced_at":"2026-03-22T06:31:30.998Z","etag":null,"topics":["category-theory","haskell","homotopy-type-theory","proof-assistant"],"latest_commit_sha":null,"homepage":"https://rzk-lang.github.io/rzk/","language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rzk-lang.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":"CITATION.cff","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}},"created_at":"2020-11-26T10:28:20.000Z","updated_at":"2026-03-17T06:01:07.000Z","dependencies_parsed_at":"2023-09-23T18:39:42.418Z","dependency_job_id":"cbb99218-bb99-4218-997a-9db19fe2e61b","html_url":"https://github.com/rzk-lang/rzk","commit_stats":null,"previous_names":["rzk-lang/rzk","fizruk/rzk"],"tags_count":30,"template":false,"template_full_name":null,"purl":"pkg:github/rzk-lang/rzk","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rzk-lang%2Frzk","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rzk-lang%2Frzk/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rzk-lang%2Frzk/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rzk-lang%2Frzk/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rzk-lang","download_url":"https://codeload.github.com/rzk-lang/rzk/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rzk-lang%2Frzk/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31292971,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T21:15:39.731Z","status":"ssl_error","status_checked_at":"2026-04-01T21:15:34.046Z","response_time":53,"last_error":"SSL_read: 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":["category-theory","haskell","homotopy-type-theory","proof-assistant"],"created_at":"2024-08-04T10:01:43.928Z","updated_at":"2026-04-01T23:34:51.774Z","avatar_url":"https://github.com/rzk-lang.png","language":"Haskell","funding_links":[],"categories":["Haskell"],"sub_categories":[],"readme":"# Rzk proof assistant\n\n[![Release](https://img.shields.io/github/v/release/rzk-lang/rzk.svg)](https://github.com/rzk-lang/rzk/releases/latest)\n[![`rzk` on Hackage](https://img.shields.io/hackage/v/rzk)](http://hackage.haskell.org/package/rzk)\n[![`rzk` on Stackage Nightly](https://stackage.org/package/rzk/badge/nightly)](http://stackage.org/package/rzk)\n[![`rzk` on Stackage LTS](https://stackage.org/package/rzk/badge/lts)](http://stackage.org/package/rzk)\n\n[![Rzk documentation](https://shields.io/badge/MkDocs-Rzk%20documentation-informational)](https://rzk-lang.github.io/rzk/)\n[![Rzk Playground](\u003chttps://shields.io/badge/Rzk%20Playground%20(latest)-online-success\u003e)](https://rzk-lang.github.io/rzk/latest/playground/)\n[![Rzk Zulip chat](https://img.shields.io/badge/zulip-join_chat-brightgreen.svg)](https://rzk-lang.zulipchat.com)\n\n[![Haddock](\u003chttps://shields.io/badge/Haddock%20(develop)-Code%20documentation-informational\u003e)](https://rzk-lang.github.io/rzk/haddock/index.html)\n[![Rzk Playground](\u003chttps://shields.io/badge/Rzk%20Playground%20(develop)-online-success\u003e)](https://rzk-lang.github.io/rzk/develop/playground/)\n\nAn experimental proof assistant for synthetic ∞-categories.\n\n\u003chttps://rzk-lang.github.io\u003e\n\n[![Early prototype demo.](images/split-demo-render.png)](https://rzk-lang.github.io/rzk/)\n\n## About this project\n\nThis project has started with the idea of bringing Riehl and Shulman's 2017 paper [1] to \"life\" by implementing a proof assistant based on their type theory with shapes. Currently an early prototype with an [online playground](https://rzk-lang.github.io/rzk/develop/playground/) is available. The current implementation is capable of checking various formalisations. Perhaps, the largest formalisations are available in two related projects: \u003chttps://rzk-lang.github.io/sHoTT\u003e and \u003chttps://github.com/emilyriehl/yoneda\u003e. `sHoTT` project (originally a fork of the yoneda project) aims to cover more formalisations in simplicial HoTT and ∞-categories, while `yoneda` project aims to compare different formalisations of the Yoneda lemma.\n\nInternally, `rzk` uses a version of second-order abstract syntax allowing relatively straightforward handling of binders (such as lambda abstraction). In the future, `rzk` aims to support dependent type inference relying on E-unification for second-order abstract syntax [2].\nUsing such representation is motivated by automatic handling of binders and easily automated boilerplate code. The idea is that this should keep the implementation of `rzk` relatively small and less error-prone than some of the existing approaches to implementation of dependent type checkers.\n\nAn important part of `rzk` is a tope layer solver, which is essentially a theorem prover for a part of the type theory. A related project, dedicated just to that part is available at \u003chttps://github.com/fizruk/simple-topes\u003e. `simple-topes` supports used-defined cubes, topes, and tope layer axioms. Once stable, `simple-topes` will be merged into `rzk`, expanding the proof assistant to the type theory with shapes, allowing formalisations for (variants of) cubical, globular, and other geometric versions of HoTT.\n\nSee the list of contributors at [docs/docs/CONTRIBUTORS.md](docs/docs/CONTRIBUTORS.md).\n\n## Discussing Rzk and getting help\n\nA Zulip chat is available for all to join and chat about Rzk, including formalization projects, development of Rzk, and related projects:\n\u003chttps://rzk-lang.zulipchat.com/register/\u003e\n\n## How to use `rzk`\n\nFor relatively small single-file formalisations, you can use the online playground at \u003chttps://rzk-lang.github.io/rzk/develop/playground\u003e\n\nHowever, for larger and multi-file formalisations you should install a version of `rzk` locally:\n\n- You can install the latest \"stable\" version of `rzk` from Hackage:\n\n  ```sh\n  cabal update\n  cabal install rzk\n  ```\n\n- You can install the latest \"development\" version of `rzk` from the [`develop` branch](https://github.com/rzk-lang/rzk/tree/develop) of this repository:\n\n  ```sh\n  git clone https://github.com/rzk-lang/rzk.git\n  cd rzk\n  git checkout develop\n  stack build \u0026\u0026 stack install\n  ```\n\n### VS Code\n\nThere exists a [VS Code extension for `rzk`](https://marketplace.visualstudio.com/items?itemName=NikolaiKudasovfizruk.rzk-1-experimental-highlighting) available on the Marketplace. The extension supports basic syntax highlighting, but more features may come in the future.\n\n### Checking\n\nTo check a multi-file project, you need to call `rzk typecheck` specifying the files _in correct order_, e.g.:\n\n```sh\nrzk typecheck first.rzk second.rzk third.rzk\n```\n\nA proper support for inter-file dependencies will be implemented in the future. Until then, it is recommended to start names of files with a number, ensuring correct order when using a wildcard (`*`). For example:\n\n```console\n.\n├── 0-common.md\n├── 1-paths.md\n├── 2-contractible.md\n├── 3-homotopies.md\n├── 4-equivalences.md\n├── 5-sigma.md\n└── 6-trivial-fibrations.md\n\n1 directory, 7 files\n```\n\nInside of such directory, you can run `rzk typecheck` on all files using wildcards:\n\n```sh\nrzk typecheck *-*.md\n```\n\n### Formatting\n\nFormatting can be done by calling `rzk format` and specifying the files to be formatted, e.g.:\n\n```sh\nrzk format file1.rzk file2.rzk\n```\n\nThis prints the formatted version of the file to `stdout`.\n\nTo overwrite the file content, you must use the `--write` flag as such:\n\n```sh\nrzk format --write examples/*.rzk related/*.rzk.md\n```\n\nNote that if no files are specified, `rzk format` will format all files listed in `rzk.yaml`.\n\nThe CLI also supports the `--check` flag, which will exit with a non-zero exit code if any of the files are not formatted correctly. This is useful in CI pipelines to ensure that all files are formatted correctly.\n\n## How to contribute to `rzk`\n\n### Building the Documentation Locally\n\nFirst, you need to install [MkDocs](https://www.mkdocs.org/getting-started/) and `mdx_math` Markdown extension (to enable LaTeX):\n\n```sh\npip install python-markdown-math\n```\n\nNow, you can build and serve the documentation locally by running\n\n```sh\nmkdocs serve --config-file docs/mkdocs.yml\n```\n\nThe (locally built) documentation should be available at \u003chttp://127.0.0.1:8000\u003e\n\nThe pages of the documentation are the `*.md` files in [docs/docs](docs/docs) directory and its subdirectories.\nTo add a new page, you can create a new `*.md` file and add it to the navigation by modifying [docs/mkdocs.yml](docs/mkdocs.yml).\n\n## Development\n\nThe project is developed with both [stack](https://docs.haskellstack.org/en/stable/README/) and [nix](https://nixos.org/manual/nix/unstable/introduction).\n\n## Develop `rzk` with stack\n\nFor quick local development and testing it is recommended to work with a GHC version, using the `stack` tool. Clone this project and run `stack build`:\n\n```sh\ngit clone https://github.com/rzk-lang/rzk.git\ncd rzk\nstack build\n```\n\nThe build provides an executable `rzk` which can be used to typecheck files:\n\n```haskell\nstack exec -- rzk typecheck FILE\n```\n\n## Develop with `nix`\n\n1. Install `nix`:\n\n   ```console\n   sh \u003c(curl -L https://nixos.org/nix/install) --no-daemon\n   ```\n\n2. (Optionally) Permanently [enable nix flakes](https://nixos.wiki/wiki/Flakes#Permanent) to use faster and more convenient experimental (but quite stable) commands.\n3. Use `cachix` to avoid building multiple dependencies:\n   1. Without flakes: `nix-shell -p cachix --command 'cachix use miso-haskell'`\n   2. With flakes: `nix shell nixpkgs#cachix -c cachix use miso-haskell`\n4. (Optionally) Install [direnv](https://direnv.net/#basic-installation) to start the `devShell` when you enter the repository directory.\n   1. The `nix-direnv` repo shows [installation options](https://github.com/nix-community/nix-direnv#installation).\n5. (Optionally) If you use VS Code, you can install `mkhl.direnv` extension that loads `direnv` environments.\n\n6. Clone this repository and enter it\n\n   ```console\n   git clone git@github.com:rzk-lang/rzk.git\n   cd rzk\n   ```\n\n7. Run `direnv allow` in the repository root.\n8. Use `cabal` for development.\n   - `cabal` performs incremental builds meaning it will build only the parts that are changed. This is quite fast.\n   - `nix` will rebuild the package `A` when its dependency `B` changes. Moreover, `nix` will rebuild all packages that are dependencies of `A` and that depend on `B`. This is much slower than incremental builds.\n   - So, use `nix` for setting up the environment with necessary tools that don't need rebuilds.\n9. The following sections provide commands to build and run packages. They should be executed from the root directory of this repository.\n10. The commands `nix-shell`, `nix shell`, and `nix develop` start shells with necessary tools.\n    Run subsequent commands from code blocks in these shells.\n\n## Permanently install `rzk`\n\n### without flakes\n\n```console\nnix-env -iA default -f default.nix\nrzk version\n```\n\n### with flakes\n\n```console\nnix profile install\nrzk version\n```\n\nAlso see [nix profile remove](https://nixos.org/manual/nix/unstable/command-ref/new-cli/nix3-profile-remove).\n\n## Develop `rzk`\n\n`nix-shell` and `nix develop` start shells with `cabal`, `ghc` with packages, `hpack`, `haskell-language-server`.\n\n### without flakes\n\n#### `cabal`\n\n```console\nnix-shell -A default\n# (Optionally) build\ncabal build rzk\ncabal run rzk -- version\n```\n\n#### `nix-build`\n\n```console\nnix-build -A default\n./result/bin/rzk version\n```\n\n### with flakes\n\n#### `cabal`\n\n```console\nnix develop\n# (Optionally) build\ncabal build rzk\ncabal run rzk -- version\n```\n\n#### `nix build`\n\n```console\nnix build\n./result/bin/rzk version\n```\n\n#### `nix run`\n\n```console\nnix run .# -- version\n```\n\n#### `nix shell`\n\n```console\nnix shell\nrzk version\n```\n\n## Build `rzk-js`\n\n[rzk-js](./rzk-js/) is a wrapper around `rzk`.\nBuilding `rzk-js` via `GHCJS` produces a `JavaScript` script used in `rzk-playground`.\n\n### without flakes\n\n#### `cabal`\n\n```console\nnix-shell -A ghcjs\nbuild-rzk-js\n```\n\n#### `nix-build`\n\n```console\nrm -rf rzk-playground/public/rzk.js\nnix-build -A rzk-js -o rzk-playground/public/rzk.js\n```\n\n### with flakes\n\n#### `cabal`\n\n```console\nnix develop .#ghcjs\nbuild-rzk-js\n```\n\n#### `nix build`\n\n```console\nrm -rf rzk-playground/public/rzk.js\nnix build .#rzk-js -o rzk-playground/public/rzk.js\n```\n\n## `rzk-playground`\n\n[rzk-playground](./rzk-playground/) is a `JavaScript` application that combines an editor and basic `rzk` functionality.\n\n### Develop\n\n1. Load `nodejs`\n   - without flakes: `nix-shell`\n   - with flakes: `nix develop`\n\n1. Start a development server and open in a browser a link given by the server.\n\n   ```console\n   cd rzk-playground\n   npm run dev\n   ```\n\n### Release\n\nBuild a static site to be hosted, e.g., on `GitHub Pages`.\nThe `release-rzk-playground` script will write files to the `rzk-playground-release` directory.\n\n#### without flakes\n\n```console\nnix-shell -A release\nrelease-rzk-playground\n```\n\n#### with flakes\n\n##### `nix develop`\n\n```console\nnix develop .#release\nrelease-rzk-playground\n```\n\n##### `nix run`\n\n```console\nnix run .#release-rzk-playground\n```\n\n## References\n\n1. Emily Riehl \u0026 Michael Shulman. A type theory for synthetic ∞-categories. Higher Structures 1(1), 147-224. 2017. \u003chttps://arxiv.org/abs/1705.07442\u003e\n2. Nikolai Kudasov. E-unification for Second-Order Abstract Syntax. 2023. \u003chttps://arxiv.org/abs/2302.05815\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frzk-lang%2Frzk","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frzk-lang%2Frzk","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frzk-lang%2Frzk/lists"}