{"id":28463700,"url":"https://github.com/septract/starling-tool","last_synced_at":"2025-10-11T05:09:41.106Z","repository":{"id":72943952,"uuid":"43949917","full_name":"septract/starling-tool","owner":"septract","description":"An automatic verifier for concurrent algorithms.","archived":false,"fork":false,"pushed_at":"2023-02-02T00:08:27.000Z","size":2399,"stargazers_count":8,"open_issues_count":64,"forks_count":4,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-07-01T07:46:38.905Z","etag":null,"topics":["concurrency","formal-methods","logic","proof","verification"],"latest_commit_sha":null,"homepage":"","language":"F#","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/septract.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,"zenodo":null}},"created_at":"2015-10-09T10:51:44.000Z","updated_at":"2024-12-24T10:39:12.000Z","dependencies_parsed_at":null,"dependency_job_id":"1a30a699-6d93-4084-b318-b95e93e5bbe1","html_url":"https://github.com/septract/starling-tool","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/septract/starling-tool","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/septract%2Fstarling-tool","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/septract%2Fstarling-tool/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/septract%2Fstarling-tool/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/septract%2Fstarling-tool/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/septract","download_url":"https://codeload.github.com/septract/starling-tool/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/septract%2Fstarling-tool/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264585320,"owners_count":23632648,"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":["concurrency","formal-methods","logic","proof","verification"],"created_at":"2025-06-07T04:38:45.574Z","updated_at":"2025-10-11T05:09:35.746Z","avatar_url":"https://github.com/septract.png","language":"F#","readme":"# Starling \n[![Build Status](https://travis-ci.org/septract/starling-tool.svg?branch=master)](https://travis-ci.org/septract/starling-tool)\n\n_Starling_ is an automated verification tool for concurrent programs.\nIt accepts programs written in a C-like language and annotated with\n_Concurrent Views Framework_-style assertions, as well as a series\nof constraints binding those assertions to concrete facts about the\nprogram's shared state, and tries to prove soundness.\n\nFor a quick example of the flavour of Starling scripts, see\n`Examples/Pass/ticketLock.cvf`.\n\n## Current work\n\nStarling is a work in progress, but currently it can check\ncorrectness of fully-specified programs written in a limited command\nlanguage (integer and Boolean variables; arrays; basic statements; atomic\nassignment and compare-and-swap; parameter-less methods with no\ncalling).\n\nStarling can be used on its own to check complete proofs of programs\nusing the `Z3` SMT solver, or combined with other tools:\n\n* With the `HSF` Horn clause solver, Starling can perform limited definition\n  inference for proofs, helping to complete partial proofs;\n* (Experimental.)  With the `GRASShopper` separation logic solver, Starling can\n  prove properties of programs using linked heap-based data structures.\n\n## Future work\n\n* Methods with call/return syntax;\n* Structs;\n* Proof of soundness of the tool itself;\n* Clean-up and general user interface polish.\n\n## Requirements\n\nA F# 4.0 development environment (tested with mono on Linux),\nNuGet, and the native Z3 library for your platform.\n\nNuGet should be able to restore the rest of the prerequisites.\n\nThe helper scripts mentioned below require a POSIX environment:\ncygwin or MSYS should work on Windows.\n\nTo use HSF, you will need a copy of `qarmc`.  An [outdated but\nuseable version of `qarmc`](https://www7.in.tum.de/~popeea/research/synthesis/)\nis available.  Install it in your `PATH` to be able to use\n`starling-hsf.sh`.\n\nTo use GRASShopper, you will need a copy of `grasshopper.native`.\nThis can be compiled from source available at\n[this GitHub repository](https://github.com/wies/grasshopper).  Install it\nin your `PATH` to be able to use `starling-gh.sh`.\n\n## Usage\n\n* To check a Starling file using Z3, use `./starling.sh -ssmt-failures /path/to/file`.\n  Examples using Z3 can be found in `Examples/Pass` and `Examples/Fail`.\n* To check a Starling file using HSF/qarmc, use `./starling-hsf.sh /path/to/file`.\n  Examples using HSF can be found in `Examples/PassHSF`.\n* To check a Starling file using `GRASShopper`, use `./starling-gh.sh /path/to/file`.\n  Examples using GRASShopper can be found in `Examples/PassGH`.\n* To run the regression tests, use `./regress.sh`.\n\n## Editor support\n\nA very basic major mode (highlighting only) for GNU Emacs, based on `cc-mode`,\nis available in `syntax/starling-mode.el`.  This is fairly outdated.\n\n## People\n\n* [Matthew Windsor](https://www-users.cs.york.ac.uk/~mbw500/)\n* [Mike Dodds](https://www-users.cs.york.ac.uk/~miked/)\n* [Matthew Parkinson](http://research.microsoft.com/en-us/people/mattpark/) \n* Ben Simner\n\n## Licence\n\nMIT; see `LICENSE`.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseptract%2Fstarling-tool","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fseptract%2Fstarling-tool","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fseptract%2Fstarling-tool/lists"}