{"id":13836552,"url":"https://github.com/tchajed/iris-simp-lang","last_synced_at":"2025-05-02T22:31:02.895Z","repository":{"id":45696952,"uuid":"331433523","full_name":"tchajed/iris-simp-lang","owner":"tchajed","description":"We define a simple programming language, simp_lang, then instantiate Iris to verify simple simp_lang programs with concurrent separation logic.","archived":false,"fork":false,"pushed_at":"2024-05-22T15:31:06.000Z","size":1366,"stargazers_count":47,"open_issues_count":0,"forks_count":4,"subscribers_count":4,"default_branch":"main","last_synced_at":"2024-10-30T01:43:35.344Z","etag":null,"topics":["coq","iris","tutorial"],"latest_commit_sha":null,"homepage":"","language":"Coq","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tchajed.png","metadata":{"files":{"readme":"README.md","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,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-01-20T21:12:09.000Z","updated_at":"2024-07-28T04:47:32.000Z","dependencies_parsed_at":"2024-01-13T17:02:19.113Z","dependency_job_id":"a7949d4d-2799-49a7-83f5-9b23c181a99d","html_url":"https://github.com/tchajed/iris-simp-lang","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/tchajed%2Firis-simp-lang","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tchajed%2Firis-simp-lang/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tchajed%2Firis-simp-lang/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tchajed%2Firis-simp-lang/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tchajed","download_url":"https://codeload.github.com/tchajed/iris-simp-lang/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252116082,"owners_count":21697304,"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":["coq","iris","tutorial"],"created_at":"2024-08-04T15:00:49.673Z","updated_at":"2025-05-02T22:30:58.063Z","avatar_url":"https://github.com/tchajed.png","language":"Coq","readme":"# simp_lang\n\n[![CI](https://github.com/tchajed/iris-simp-lang/actions/workflows/build.yml/badge.svg)](https://github.com/tchajed/iris-simp-lang/actions/workflows/build.yml)\n\nsimp_lang is a very simple programming language that we instantiate Iris with.\nOn top of that Iris gives a program logic based on weakest preconditions. It is\nheavily inspired by heap_lang (and mostly copied from it) but aims to simplify\nthings down as much as possible while still supporting verifying concurrent\nprograms.\n\nYou might want to start with a [high-level conceptual\noverview](https://youtu.be/HndwyM04KEU) (links to a YouTube video; if you'd\nprefer there's a [static version](tutorial/)):\n\n[![](tutorial/slides/simp_lang.019.png)](https://youtu.be/HndwyM04KEU)\n\nThis overview might be useful before diving into this code, which works out all\nthe details and goes a step beyond by also doing some program verification in our\nnew language.\n\nThe recommended reading order for this tutorial is the following:\n\n1. [lang.v](src/lang.v) defines the syntax and semantics of simp_lang (instantiating `ectxi_language`)\n2. [primitive_laws.v](src/primitive_laws.v) defines a _state interpretation_\n   for simp_lang (instantiating\n   `irisG simp_lang`). This is the connection between the state of simp_lang (a\n   heap from locations to values) and the Iris logic.\n3. [heap_ra.v](src/heap_ra.v) and [heap_lib.v](src/heap_lib.v) are the mechanism for the state interpretation,\n   which will make more sense after seeing them used.\n4. [adequacy.v](src/adequacy.v) sets up the generic language adequacy theorem\n   with an initialization of the state interpretation for simp_lang.\n\nNext, you can check out some examples from the [Iris POPL 2021 tutorial](https://gitlab.mpi-sws.org/iris/tutorial-popl21/) that are\nre-implemented and verified in simp_lang:\n\n1. [examples/swap.v](src/examples/swap.v) verifies a version of swap.\n2. [examples/parallel_add.v](src/examples/parallel_add.v) verifies the parallel\n   increment example. It also demonstrates applying the adequacy theorem to\n   derive a theorem about `parallel_add` whose statement is independent of Iris.\n\nThere are a few files that are optional reading which make the tutorial work:\n\n- [tactics.v](src/tactics.v) and\n  [class_instances.v](src/class_instances.v) are necessary parts of the\n  implementation but aren't directly related to instantiating Iris.\n- [notation.v](src/notation.v) makes it possible to write programs in simp_lang\n- [proofmode.v](src/proofmode.v) gives enough proofmode support to actually\n  verify programs written in simp_lang.\n- [examples/spawn.v](src/examples/spawn.v) and\n  [examples/par.v](src/examples/par.v) implement and verify the par combinator\n  (`e1 ||| e2`) used in the tutorial example.\n\n## Compiling\n\nThis development relies on a development version of Iris and Coq 8.18 or later.\nWe test 8.18, 8.19, and master with Iris dev in CI, as well as the released\nversion of Iris.\n\nYou'll need to install Iris, which is easiest done through opam. There are\ninstallation instructions at https://gitlab.mpi-sws.org/iris/iris.\n","funding_links":[],"categories":["Coq"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftchajed%2Firis-simp-lang","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftchajed%2Firis-simp-lang","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftchajed%2Firis-simp-lang/lists"}