{"id":16311086,"url":"https://github.com/ef55/stainless-stlc","last_synced_at":"2025-10-25T16:31:02.821Z","repository":{"id":62046498,"uuid":"431902300","full_name":"Ef55/stainless-stlc","owner":"Ef55","description":"System F in Stainless","archived":false,"fork":false,"pushed_at":"2022-12-25T13:18:38.000Z","size":7207,"stargazers_count":9,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"system-f","last_synced_at":"2025-01-31T08:51:16.918Z","etag":null,"topics":["lambda-calculus","stainless","system-f","verified"],"latest_commit_sha":null,"homepage":"","language":"Scala","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/Ef55.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-11-25T15:59:50.000Z","updated_at":"2024-07-19T15:26:28.000Z","dependencies_parsed_at":"2023-01-30T22:01:11.895Z","dependency_job_id":null,"html_url":"https://github.com/Ef55/stainless-stlc","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ef55%2Fstainless-stlc","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ef55%2Fstainless-stlc/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ef55%2Fstainless-stlc/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Ef55%2Fstainless-stlc/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Ef55","download_url":"https://codeload.github.com/Ef55/stainless-stlc/tar.gz/refs/heads/system-f","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":238174171,"owners_count":19428637,"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":["lambda-calculus","stainless","system-f","verified"],"created_at":"2024-10-10T21:43:34.568Z","updated_at":"2025-10-25T16:31:02.445Z","avatar_url":"https://github.com/Ef55.png","language":"Scala","readme":"# Verified ~~STLC~~ System F in Stainless\n\nImplementation of System F in [Scala](http://scala-lang.org/), formally verified using [Stainless](https://github.com/epfl-lara/stainless).\n\nA few of the proved properties:\n- Type judgment uniqueness;\n- Preservation;\n- Progress for Call-by-Value reduction strategy.\n\n## Verification\nThe implementation can be verified using stainless:\n```\n$ cd src/main/scala/verified\n$ stainless\n```\n\nWe strongly recommend using the `--compact` flag as well as a timeout of at least 2 seconds. A Stainless configuration file is [provided](src/main/scala/verified/stainless.conf) with those settings (the timeout is set to 5 seconds for good measure).\n\n## Evaluator\nA command-line lambda evaluator can be run using:\n```\n$ sbt run\n```\n\nThe evaluator uses [De Bruijn notation](https://en.wikipedia.org/wiki/De_Bruijn_notation) and uses the following symbols:\n\n| Symbol name            | Symbol | ASCII alternative   |\n|------------------------|:------:|:-------------------:|\n| lambda                 | λ      | `\\`                 |\n| Lambda                 | Λ      | `/\\`                |\n| Type arrow             | ⇒      | `=\u003e`                |\n| Universal quantifier   | ∀      | `\\/`                |\n| Fixpoint combinator    | \"Fix\"  | `§`                 |\n\n\nThe syntax for types is:\n| Construct name      | Syntax           |\n|---------------------|------------------|\n| Type variable       | A number         |\n| Ground type         | A string         |\n| Function type       | `type ⇒ type`    |\n| Universal type      | `∀. type`        |\n\n\nThe syntax for terms is:\n| Construct name      | Syntax           |\n|---------------------|------------------|\n| Var                 | A number         |\n| Abs                 | `λtype. term`    |\n| App                 | `term term`      |\n| Fix                 | `Fix term`       |\n| TAbs                | `Λ. term`        |\n| TApp                | `term [type]`    |\n\nExample:\n```\n$ sbt run\n\nPlease enter a lambda-term to evaluate:\n\n$ (/\\.\\0=\u003e0.0)[T]\\T.0\n\n⊢ ((Λ.λ0⇒0. 0) [T]) λT. 0 : T⇒T\nReduction: \n((Λ.λ0⇒0. 0) [T]) λT. 0 --\u003e\n(λT⇒T. 0) λT. 0 --\u003e\nλT. 0 --\u003e/\n```\n\n## Examples\nA few examples/test cases can be run using:\n```\n$ sbt test\n```","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fef55%2Fstainless-stlc","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fef55%2Fstainless-stlc","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fef55%2Fstainless-stlc/lists"}