{"id":16313343,"url":"https://github.com/mikkelmilo/rooster-spec","last_synced_at":"2026-03-10T16:18:31.947Z","repository":{"id":75150986,"uuid":"207279861","full_name":"mikkelmilo/rooster-spec","owner":"mikkelmilo","description":"Automated Theory Exploration in Coq using Haskell's QuickSpec","archived":false,"fork":false,"pushed_at":"2021-05-18T11:17:53.000Z","size":164,"stargazers_count":5,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-15T14:12:12.506Z","etag":null,"topics":["conjectures","coq","lemma-discovery","property-based-testing","property-testing","quickspec","theory-exploration"],"latest_commit_sha":null,"homepage":"","language":"Coq","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/mikkelmilo.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":"2019-09-09T10:03:59.000Z","updated_at":"2025-01-13T11:37:28.000Z","dependencies_parsed_at":"2023-06-05T14:00:43.549Z","dependency_job_id":null,"html_url":"https://github.com/mikkelmilo/rooster-spec","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/mikkelmilo/rooster-spec","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mikkelmilo%2Frooster-spec","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mikkelmilo%2Frooster-spec/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mikkelmilo%2Frooster-spec/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mikkelmilo%2Frooster-spec/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mikkelmilo","download_url":"https://codeload.github.com/mikkelmilo/rooster-spec/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mikkelmilo%2Frooster-spec/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30342165,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-10T15:55:29.454Z","status":"ssl_error","status_checked_at":"2026-03-10T15:54:58.440Z","response_time":106,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5: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":["conjectures","coq","lemma-discovery","property-based-testing","property-testing","quickspec","theory-exploration"],"created_at":"2024-10-10T21:50:45.465Z","updated_at":"2026-03-10T16:18:31.927Z","avatar_url":"https://github.com/mikkelmilo.png","language":"Coq","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Rooster-Spec\nDiscover potential laws about your coq code!\n\nRooster-Spec is a Coq plug-in for automated theory exploration, based on Quick*Spec*. You give Rooster-Spec a set of (computable) functions, and it returns a list of (unproven but tested) equational conjectures about these functions.\n\nNote that this plug-in is still in beta. I encourage people to try it out and report any bugs.\n\n## Installation (linux/unix only currently)\n\nPrerequisites:\n\n- opam \u003e= 2.0.5\n- dune \u003e= 1.11\n- coq 8.9.* (only tested on 8.9.1)\n- stack \u003e= 2.1.3\n- Z3\n- CoqHammer\n- clone [this](https://github.com/mikkelmilo/tip-tools) fork of tip-tools, and follow the installation instructions\n\nAfter installing all the prerequisites, in the entry folder of rooster-spec run `make install`. If you need to reinstall the plug-in, make sure to first run `make clean`.\n\n## Usage\n\nIn a Coq file, first import the plug-in and the Extraction plug-in\n`Declare ML Module \"coq_spec\".`\n\n`From Coq Require Import Extraction.`\n\nThen simply execute the command\n\n`DiscoverLemmas \"extractionFileName\" func1 func2 ... funcn.`\n\nThe `extractionFileName` doesn't really matter, but can be useful for debugging if you wish to inspect the extracted Haskell code. The supplied functions can be of any arity. The only potential restriction is that they cannot in general involve the `Prop` type (although it may work if the property implements the Decidable typeclass). This is a fundamental limitation of the testing-based approach, since it requires decidable equality on all the given types.  \n\nIf it runs too slow, or you want larger, more complex conjectures, you can change the maximal term size (default is 5) with `MaxTermSize \u003csize\u003e`. I recommend not using sizes larger than 7 other than for testing purposes.\n\nsee the .v files in the theories folder for examples.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmikkelmilo%2Frooster-spec","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmikkelmilo%2Frooster-spec","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmikkelmilo%2Frooster-spec/lists"}