{"id":20910093,"url":"https://github.com/viperproject/viper-roots","last_synced_at":"2025-10-17T17:09:39.054Z","repository":{"id":266268096,"uuid":"888002211","full_name":"viperproject/viper-roots","owner":"viperproject","description":null,"archived":false,"fork":false,"pushed_at":"2025-01-29T21:20:39.000Z","size":2260,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":10,"default_branch":"main","last_synced_at":"2025-01-29T21:32:03.194Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Isabelle","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/viperproject.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":"2024-11-13T16:39:13.000Z","updated_at":"2025-01-29T21:20:43.000Z","dependencies_parsed_at":"2025-01-29T21:36:58.459Z","dependency_job_id":null,"html_url":"https://github.com/viperproject/viper-roots","commit_stats":null,"previous_names":["viperproject/viper-roots"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/viperproject%2Fviper-roots","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/viperproject%2Fviper-roots/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/viperproject%2Fviper-roots/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/viperproject%2Fviper-roots/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/viperproject","download_url":"https://codeload.github.com/viperproject/viper-roots/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243302389,"owners_count":20269499,"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":[],"created_at":"2024-11-18T14:13:52.893Z","updated_at":"2025-10-17T17:09:38.965Z","avatar_url":"https://github.com/viperproject.png","language":"Isabelle","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Viper Roots\n\nThis repository contains the Viper Roots formalization for the [Viper intermediate\nverification language](https://www.pm.inf.ethz.ch/research/viper.html).\nThe formalization is done using the [Isabelle theorem prover](https://isabelle.in.tum.de/).\n\n## Installation\n\nTo check and explore the formalization, you need to download the Isabelle theorem prover.\nThe formalization has been tested on Isabelle 2024, \nwhich you can download from [here](https://isabelle.in.tum.de/website-Isabelle2024/dist/)\n(there are executables for Linux, Mac, Windows).\n\nThis repository is split into separate subpackages linked via Isabelle sessions. To setup the development, you have to register these sessions with Isabelle \n\n```\nisabelle components -u foundational-boogie/BoogieLang\nisabelle components -u vipersemcommon\nisabelle components -u viper-total-heaps\nisabelle components -u vipersemabstract\nisabelle components -u viper-abstract-refines-total\nisabelle components -u simple-frontend\n```\nwhere `isabelle` is the Isabelle executable. On Windows, the commands need to be\nrun in the Isabelle cygwin instance (TODO: show commands for Windows).\nAlternatively, you can add the path to these sessions to the Isabelle `ROOTS` file\n(the `ROOTS` file is located at the root of the folder that contains Isabelle).\n\n## Folder Structure\n\nThe repository contains 6 folders:\n\nfoundational-boogie:\n- This is the formalization of the Boogie intermediate verification language, which is maintained in a separate repository. This formalization is a dependency of viper-total-heaps.\n\nvipersemcommon:\n- Formalizes common parts of Viper (mainly syntactic aspects).\n\nviper-total-heaps:\n- A Viper semantics that at a high level reflects the verification condition generation (VCG) back-end of Viper.\n- Also contains the metatheory for [validating the existing Viper-to-Boogie implementation](https://github.com/viperproject/carbon-proofgen).\n\nvipersemabstract:\n- Formalization of a generic intermediate verification language, which we call *CoreIVL*.\n  Different instantiations of CoreIVL yield different IVLs.\n  This formalization includes an operational and an axiomatic semantics for CoreIVL,\n  key results (such as soundness and completeness).\n- Additionally contains an instantiation of CoreIVL that yields Viper; we call this \n  instantiation *ViperCore*.\n- Also contains the formalization of the symbolic execution described in 4.1,\n  and a proof showing its soundness w.r.t. ViperCore.\n\nviper-abstract-refines-total:\n- Soundness of the VCG semantics w.r.t. ViperCore.\n\nsimple-frontend:\n- Formalizes a front-end translation from a concurrent language ParImp into Viper and \n  proves this translation sound w.r.t. ViperCore.\n  This proof is done by connecting the ViperCore axiomatic semantics with a concurrent\n  separation logic (CSL) for ParImp (note that this CSL is based on implicit dynamic frames).\n\n## Selected Key Files\n\nIn vipersemcommon:\n- SepAlgebraDef.thy: Definition of our IDF algebra from section 3.1.\n\nIn simple-frontend:\n- ParImp.thy: Defines the ParImp language\n- CSL_IDF.thy: Contains our IDF-based CSL, and its soundness proof\n- FrontEndTranslation.thy: Soundness proof of our front-end translation\n\nIn viper-abstract-refines-total:\n- AbstractRefinesTotal.thy: Soundness proof of VCGSem w.r.t. ViperCore\n\nIn vipersemabstract:\n- AbstractSemantics.thy: Defines CoreIVL, and its operational and axiomatic semantics\n- AbstractSemanticsProperties.thy: Proves the operational-to-axiomatic soundness\n- EquiViper.thy: Instantiation of Viper state model as an IDF algebra.\n- Instantiation.thy: Instantiation of ViperCore\n- SymbolicExecDef.thy: Definition of the symbolic execution\n- SymbolicExecSound.thy: Soundness proof of the symbolic execution w.r.t. ViperCore\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fviperproject%2Fviper-roots","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fviperproject%2Fviper-roots","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fviperproject%2Fviper-roots/lists"}