{"id":13837965,"url":"https://github.com/RedPRL/algaett","last_synced_at":"2025-07-10T19:31:34.338Z","repository":{"id":40565942,"uuid":"484640670","full_name":"RedPRL/algaett","owner":"RedPRL","description":"🦠 An experimental elaborator for dependent type theory using effects and handlers","archived":false,"fork":false,"pushed_at":"2023-10-03T01:13:18.000Z","size":635,"stargazers_count":36,"open_issues_count":9,"forks_count":0,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-06-03T07:27:21.193Z","etag":null,"topics":["algebraic-effects","normalization-by-evaluation","ocaml","ocaml-program","proof-assistant","type-theory"],"latest_commit_sha":null,"homepage":"","language":"OCaml","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RedPRL.png","metadata":{"files":{"readme":"README.markdown","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2022-04-23T03:58:14.000Z","updated_at":"2025-05-01T13:28:59.000Z","dependencies_parsed_at":"2024-01-13T17:11:59.008Z","dependency_job_id":"c236df08-c7d8-45d4-a9c4-0e4319392b16","html_url":"https://github.com/RedPRL/algaett","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/RedPRL/algaett","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RedPRL%2Falgaett","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RedPRL%2Falgaett/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RedPRL%2Falgaett/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RedPRL%2Falgaett/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RedPRL","download_url":"https://codeload.github.com/RedPRL/algaett/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RedPRL%2Falgaett/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264639844,"owners_count":23642313,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["algebraic-effects","normalization-by-evaluation","ocaml","ocaml-program","proof-assistant","type-theory"],"created_at":"2024-08-04T15:01:31.961Z","updated_at":"2025-07-10T19:31:34.073Z","avatar_url":"https://github.com/RedPRL.png","language":"OCaml","readme":"# 🦠 algaett’s not algaeff\n\nThis development is an experiment with the following goals:\n\n1. Adopt smalltt and related techniques into the cubical world.\n2. Show how various OCaml packages of ours fit together.\n3. Write natural grammars without neccesarily conforming to LR(k).\n4. Use lots of Unicode emojis.\n\n## Try It Out!\n\n```bash\nopam pin git+https://github.com/RedPRL/bantorra\nopam pin git+https://github.com/RedPRL/algaett\ncat tests/example.ag\nalgaett tests/example.ag\n```\n\nThe last line should not have an output, which means it type checks!\n\n## Important Ideas\n\n### Ideas from Smalltt\n\nThe core NbE algorithm closely follows [András Kovács’s smalltt.](https://github.com/AndrasKovacs/smalltt)\nHere are some notable differences:\n\n1. We intentionally do not implement unification.\n2. The universe itself (as a term) is not inferable, which means that the checking might have to be redone with the type unfolded.\n   ```\n   📌 😄 : 🌌 🆙 2️⃣ 👉 🌌 🆙 1️⃣\n   📌 _ 👉 🌌 : 😄\n   ```\n   The type inference from the universe 🌌 will fail, and then the type checking will be redone with 😄 unfolded to 🌌 🆙 1️⃣.\n3. The conversion checker is generalized to handle subtyping generated by cumulativity.\n\n### Modular Development\n\n- [algaeff](https://redprl.org/algaeff/algaeff/Algaeff): reusable effects-based components\n- [asai](https://redprl.org/asai/asai/Asai): error messages _(not actively used yet)_\n- [bantorra](https://redprl.org/bantorra/bantorra): unit resolution _(not actively used yet)_\n- [bwd](https://redprl.org/bwd/bwd/Bwd): backward lists\n- [mugen](https://redprl.org/mugen/mugen/Mugen): universe levels\n- [yuujinchou](https://redprl.org/yuujinchou/yuujinchou): namespaces and name modifier\n\n### Parser beyond LR\n\nWe are using the Earley’s parsing algorithm which can handle all context-free grammars.\n\n## Documentation\n\n[Here is the API documentation.](https://redprl.org/algaett/algaett/)\n","funding_links":[],"categories":["OCaml"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FRedPRL%2Falgaett","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FRedPRL%2Falgaett","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FRedPRL%2Falgaett/lists"}