{"id":13748742,"url":"https://github.com/hopv/hoice","last_synced_at":"2025-05-09T11:31:19.511Z","repository":{"id":23144823,"uuid":"98270532","full_name":"hopv/hoice","owner":"hopv","description":"An ICE-based predicate synthesizer for Horn clauses.","archived":false,"fork":false,"pushed_at":"2024-04-20T09:21:43.000Z","size":3163,"stargazers_count":49,"open_issues_count":9,"forks_count":11,"subscribers_count":5,"default_branch":"master","last_synced_at":"2024-11-15T23:31:08.091Z","etag":null,"topics":["horn-clauses","ice","inference","verify"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/hopv.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":"2017-07-25T06:09:40.000Z","updated_at":"2024-10-28T20:35:37.000Z","dependencies_parsed_at":"2023-01-13T22:49:36.753Z","dependency_job_id":"5f53dd7f-af63-4f86-a759-7918d9c5ef0e","html_url":"https://github.com/hopv/hoice","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hopv%2Fhoice","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hopv%2Fhoice/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hopv%2Fhoice/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hopv%2Fhoice/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hopv","download_url":"https://codeload.github.com/hopv/hoice/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253240350,"owners_count":21876593,"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":["horn-clauses","ice","inference","verify"],"created_at":"2024-08-03T07:00:48.529Z","updated_at":"2025-05-09T11:31:18.868Z","avatar_url":"https://github.com/hopv.png","language":"Rust","funding_links":[],"categories":["Projects"],"sub_categories":["Provers and Solvers"],"readme":"![CI](https://github.com/hopv/hoice/workflows/ci/badge.svg)\n\n`hoice` is an ICE-based Constrained Horn Clause (CHC) solver.\n\nGiven some CHCs mentioning some undefined predicates, hoice infers definitions for these predicate\nthat respect all CHCs or prove none exist. Hoice supports the `Bool`, `Int` and `Real` sorts. It\nalso supports user-defined ADTs, although it is still in an experimental stage.\n\n# Install\n\nIf you haven't already, install [Rust](https://www.rust-lang.org) on your system. The recommended way to do this is to use [`rustup`](https://www.rustup.rs/).\n\nHoice generally uses the latest rust features available. Make sure the rust ecosystem is up to date by running the following command before building hoice.\n\n```bash\nrustup update stable\n```\n\nInstalling hoice with `cargo`:\n\n```bash\ncargo install --git https://github.com/hopv/hoice\n```\n\nTo build hoice manually, clone this repository, `cd` in the directory and run\n\n```bash\ncargo build --release\n```\nThe binary file will be in `target/release/hoice`.\n\nTo get the fastest version, compile hoice with\n\n```bash\ncargo build --release --features \"bench\"\n```\n\nNote that this disables some features such as verbose output, profiling...\n\n\n## z3\n\n`hoice` relies on the [z3](https://github.com/Z3Prover/z3) SMT-solver. Make sure you have a relatively recent version of the z3 binary in your path.\n\n\n# Language\n\n[Consult the wiki](https://github.com/hopv/hoice/wiki/Language) for a description of `hoice`'s language.\n\n\n# Features\n\n- [x] `define-fun`s\n- [x] `Bool`\n- [x] `Int`\n- [x] `Real`\n- [x] `Array` (naive)\n- [x] `List`\n- [x] (mutually recursive) ADTs\n\nFuture features:\n\n- [ ] user-specified qualifiers through `define-fun`s\n\n\n# Checking the result\n\n`hoice` can check its own results. The code performing this feature is completely separated from the code doing the actual inference so that the check is meaningful.\n\nIn fact, the code for this is almost implemented as some string substitutions followed by an SMT query for each clause of the problem.\n\nFor now, this feature is completely off-line. Put `hoice`'s result in a file, for instance with\n\n```bash\nhoice \u003chorn_clause_file\u003e | tee \u003coutput_file\u003e\n```\n\nand use the `--check` option to verify that the predicates inferred verify all the horn clauses:\n\n```bash\nhoice --check \u003coutput_file\u003e \u003chorn_clause_file\u003e\n```\n\n\n# Latest version\n\nThis repository hosts the latest stable version of hoice. See the [main\ndeveloper's fork][main dev fork] for a cutting edge, although unstable,\nversion.\n\n\n# Contributing\n\nWe welcome any help, please the [contribution guidelines](https://github.com/hopv/hoice/wiki/Contributing) if you are not familiar with the github pull request workflow to get started.\n\n\n# License\n\n`hoice` is released under the [Apache 2 license](./LICENSE.md). Please note in particular that the [`NOTICE.md`](./NOTICE.md) file from this repository must be available if you redistribute `hoice` in a source or binary format.\n\n[benchs]: https://github.com/hopv/benchmarks/tree/master/clauses (hopv benchmarks)\n[main dev fork]: https://github.com/AdrienChampion/hoice (AdrienChampion's fork of hoice on github)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhopv%2Fhoice","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhopv%2Fhoice","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhopv%2Fhoice/lists"}