{"id":16241704,"url":"https://github.com/5ht/dependentlinearpi","last_synced_at":"2026-01-21T03:08:18.831Z","repository":{"id":145085989,"uuid":"334390098","full_name":"5HT/DependentLinearPi","owner":"5HT","description":"A Dependently Typed Linear π-Calculus in Agda","archived":false,"fork":false,"pushed_at":"2021-10-22T11:50:46.000Z","size":153,"stargazers_count":15,"open_issues_count":0,"forks_count":2,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-08T09:59:26.145Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Agda","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/5HT.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-30T10:53:27.000Z","updated_at":"2024-12-11T20:13:44.000Z","dependencies_parsed_at":null,"dependency_job_id":"1db6673a-568d-4553-8b3e-78b13b66e0bc","html_url":"https://github.com/5HT/DependentLinearPi","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/5HT/DependentLinearPi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/5HT%2FDependentLinearPi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/5HT%2FDependentLinearPi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/5HT%2FDependentLinearPi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/5HT%2FDependentLinearPi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/5HT","download_url":"https://codeload.github.com/5HT/DependentLinearPi/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/5HT%2FDependentLinearPi/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28624344,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-21T02:47:06.670Z","status":"ssl_error","status_checked_at":"2026-01-21T02:45:44.886Z","response_time":86,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":[],"created_at":"2024-10-10T14:08:22.972Z","updated_at":"2026-01-21T03:08:18.816Z","avatar_url":"https://github.com/5HT.png","language":"Agda","readme":"# A Dependently Typed Linear π-Calculus in Agda\n\nDLπ is an Agda formalization of the **linear π-calculus** with\n**dependent pairs**. It allows for the modeling of structured\nconversations in which processes and types depend on the content of\nexchanged messages.\n\n## DLPi\n\nThis folder contains the full formalization of DLπ. Below is an\noutline of the files and of their purpose. While looking at the\ncode, use of [Fira Code](https://github.com/tonsky/FiraCode) is\nrecommended as it contains several ligatures that make the Agda code\nmuch more pleasant to read.\n\n### Primary modules\n\n* [Language.agda](DLPi/Language.agda) Data types for representing\n  **terms** and **processes**. Search no further if you're looking\n  for `Name`, `Term` and `Process`. This module also includes the\n  definition of `Multiplicity`, `Type` and `Context`, as well as the\n  `Null` predicate and the `Scale` and `Split` relations for\n  multiplicities, types and contexts.\n* [Congruence.agda](DLPi/Congruence.agda) Definition of **structural\n  pre-congruence** and related type preservation result.\n* [Reduction.agda](DLPi/Reduction.agda) Definition of **labelled\n  reduction** and corresponding typing preservation result.\n\n### Auxiliary modules\n\n* [Common.agda](DLPi/Common.agda) Some general purpose functions,\n  properties and axioms (extensionality).\n* [Split.agda](DLPi/Split.agda) Properties of splitting for\n  multiplicities, types and contexts.\n* [Scale.agda](DLPi/Scale.agda) Properties of scaling for\n  multiplicities, types and contexts.\n* [Swap.agda](DLPi/Swap.agda) Some auxiliary properties about\n  swapping names in a context.\n* [Weaken.agda](DLPi/Weaken.agda) Definition of `Weaken`,\n  **weakening** and **strengthening** properties for terms and\n  processes.\n* [Substitution.agda](DLPi/Substitution.agda) Type-preserving\n  **substitution** of terms for variables in processes.\n* [Lookup.agda](DLPi/Lookup.agda) Proof that a name not occurring in\n  a well-typed process has an unrestricted type.\n* [PrefixNormalForm.agda](DLPi/PrefixNormalForm.agda) Proof that\n  every process can be rewritten in prefix-normal-form using\n  structural pre-congruence.\n* [PrefixedBy.agda](DLPi/PrefixedBy.agda) Predicate that holds when\n  a process has an unguarded input/output prefix for a given channel.\n* [ReducibleNormalForm.agda](DLPi/ReducibleNormalForm.agda) Proof\n  that every process with both an input and an output prefix for a\n  given channel can be rewritten in reducible normal form using\n  structural pre-congruence. In this normal form, the two prefixes\n  sit next to each other, so the process is ready to reduce.\n* [Results.agda](DLPi/Results.agda) This module collects all the\n  **properties** stated in Section 4 of the paper. Compared to their\n  formulation in the paper, the statements are slightly differnt\n  and/or simpler to account for the fact that terms and processes\n  are intrinsically typed.\n* [Main.agda](DLPi/Main.agda) Container for a few **examples**, but\n  mostly useful as root file that triggers the type checking of\n  everything.\n\n## SessionTypes\n\nThis folder contains **encoding** functions from (dependent) session\ntype languages to DLπ types. The folder is organized as follows:\n\n* [Common.agda](SessionTypes/Common.agda) imports the extensionality\n  principle and defines the `Type` data type for representing\n  **finite DLπ types**.\n* [FinLabels](SessionTypes/FinLabels) contains the encoding of\n  non-dependent, labeled session types with n-ary branches and\n  choices. Labels are elements of the `Fin n` data type.\n* [LinearLogic](SessionTypes/LinearLogic) contains the encoding of\n  dependent session types *à la* [Toninho, Caires \u0026 Pfenning\n  2011](https://doi.org/10.1145/2003476.2003499). These session\n  types subsume the original non-dependent ones by\n  [Honda](https://doi.org/10.1007/3-540-57208-2_35).\n* [LabelDependent](SessionTypes/LabelDependent) contains the\n  encoding of label-dependent session types defined by [Thiemann \u0026\n  Vasconcelos 2020](https://doi.org/10.1145/3371135).\n\nEach subfolder is organized as follows:\n\n* `Types.agda` defines **session types** and auxiliary data types,\n  including the notion of bisimilarity used for proving that\n  decoding is the inverse of encoding.\n* `Encoding.agda` defines a predicate on `Type` that characterizes\n  the image of the encoding.\n* `Encode.agda` defines the **encoding** function and proves that it\n  satisfies the `Encoding` predicate.\n* `Decode.agda` defines the **decoding** function.\n* `Proofs.agda` contains the proofs that encoding and decoding are\n  one the **inverse** of the other modulo bisimilarity.\n* `Equalities.agda`, if present, contains examples illustrating\n  the fact that the encoding function is **not injective**.\n\n## References\n\nThe formalization of DLπ is described in the paper **A Dependently\nTyped Linear π-Calculus in Agda**, which appears in the proceedings\nof [PPDP 2020](http://www.cse.chalmers.se/~abela/ppdp20/). A\npreprint version of the paper can be found\n[here](http://hdl.handle.net/2318/1739403).\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F5ht%2Fdependentlinearpi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F5ht%2Fdependentlinearpi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F5ht%2Fdependentlinearpi/lists"}