{"id":15923095,"url":"https://github.com/zoep/safe-for-space","last_synced_at":"2025-07-20T14:32:21.533Z","repository":{"id":145570569,"uuid":"187232930","full_name":"zoep/safe-for-space","owner":"zoep","description":"Formal proof that closure conversion with flat environments is safe for space.","archived":false,"fork":false,"pushed_at":"2019-06-01T10:53:43.000Z","size":292,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-03T12:52:40.993Z","etag":null,"topics":["closure-conversion","coq","proof"],"latest_commit_sha":null,"homepage":"","language":"Coq","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/zoep.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-05-17T14:42:22.000Z","updated_at":"2020-11-17T17:12:12.000Z","dependencies_parsed_at":"2023-05-13T09:15:49.493Z","dependency_job_id":null,"html_url":"https://github.com/zoep/safe-for-space","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/zoep/safe-for-space","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zoep%2Fsafe-for-space","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zoep%2Fsafe-for-space/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zoep%2Fsafe-for-space/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zoep%2Fsafe-for-space/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zoep","download_url":"https://codeload.github.com/zoep/safe-for-space/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zoep%2Fsafe-for-space/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":266139853,"owners_count":23882554,"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":["closure-conversion","coq","proof"],"created_at":"2024-10-06T20:41:37.373Z","updated_at":"2025-07-20T14:32:21.513Z","avatar_url":"https://github.com/zoep.png","language":"Coq","funding_links":[],"categories":[],"sub_categories":[],"readme":"Closure Conversion is Safe for Space, Supplemental material\n-----------------------------------------------------------\n\nThis a standalone artifact that contains the Coq formalization of the proof that\nclosure conversion is correct and safe for space. The code includes the\ndefinitions of the language and logical relation framework presented in the\npaper. The transformation and its proof are parts of the CertiCoq certified\ncompiler for Coq. Here we include only the relevant dependencies.\n\n1. **Compilation Instructions** \n\n\tDependencies: \n\n\t\tCoq 8.8.2 \n\n    Specific commits of coq-ext-lib and coq-template-coq that are installed as follows:\n\n    template-coq: \n\n    download the zip from https://github.com/gmalecha/template-coq/tree/a290e03\n    and then make \u0026\u0026 make install \n\n    coq-ext-lib:\n\n    download the zip from https://github.com/coq-ext-lib/coq-ext-lib/tree/5dd9cfa \n    and then make \u0026\u0026 make install \n\n\t\t\n\tTo compile: \n\n    \t\u003e make -j N  # where N is the number of processors \n\n\tIf you are trying to compile with a different version of Coq you may need to\n\tregenerate the makefile:\n\n    \t\u003e coq_makefile -f _CoqProject -o Makefile\n\n2. **Development Description**\n\n\tWe briefly describe here the contents of all the files in the source code.\n\tFurthermore, we provide a separate file, called THEOREMS.md, that lists the\n\tcorrespondence between the formal definitions and theorems and those\n\tpresented in the paper.\n\n    - cps.v       : definition of the CPS language\n    - space_sem.v : Profiling semantics for CPS\n    - Ensembles_util.v, map_util.v, functions.v\n      set_util.v, List_util.v, tactics.v, hoare.v : General purpose librarIes \n    - ctx.v, identifiers.v, cps_util.v            : CPS-related libraries\n    \n    - closure_conversion.v      : The definition of the closure conversion as an inductive relation and as a functional program\n    - closure_conversion_util.v : Syntactic properties of closure conversion\n    \n    - heap.v       : Abstract interface (module type) for the heaps used in the semantics\n    - heap_defs.v  : Heap-related definitions (well-formedness, reachability, size, etc.)\n    - heap_equiv.v : Heap isomorphism definitions and lemmas\n    - heap_impl.v  : Concrete heap implementation\n    - GC.v         : GC definitions and lemmas \n    - cc_log_rel.v : The definitions of the logical relation and lemmas\n    - compat.v     : Compatibility lemmas for the logical relation\n    - bounds.v     : Pre- and postcondition definitions and compatibility lemmas\n    - invariants.v : Additional environment invariants (for nonlocal variables and function names)\n    - closure_conversion_correct.v : Fundamental theorem of the logical relation\n    - closure_conversion_corresp.v : Soundness proof of the closure conversion program w.r.t. the inductive definition \n    - toplevel.v   : The top-level theorem for terminating and diverging programs \n    \n    - Maps.v, Coqlib.v : part of CompCert's general purpose libraries.\n\n\n3. **Compiler**\n\n\tThe sources of the compiler are publicly available [here](https://github.com/PrincetonUniversity/certicoq).\n\tThe safe for space development is in the directory [theories/L6_PCPS/Heap](https://github.com/PrincetonUniversity/certicoq/tree/zoe_safe-for-space-trunk/theories/L6_PCPS/Heap).\n   \n \n    \n    \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzoep%2Fsafe-for-space","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzoep%2Fsafe-for-space","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzoep%2Fsafe-for-space/lists"}