{"id":32722006,"url":"https://github.com/chasenorman/canonicallean","last_synced_at":"2026-04-02T11:46:55.668Z","repository":{"id":287133089,"uuid":"963715057","full_name":"chasenorman/CanonicalLean","owner":"chasenorman","description":"A Lean tactic for Canonical, a search procedure for terms in dependent type theory.","archived":false,"fork":false,"pushed_at":"2025-10-31T17:37:31.000Z","size":8555,"stargazers_count":89,"open_issues_count":10,"forks_count":8,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-10-31T19:21:59.264Z","etag":null,"topics":["automated-reasoning","dependent-type-theory","dependent-types","formal-methods","lean4","program-synthesis","theorem-prover","theorem-proving"],"latest_commit_sha":null,"homepage":"https://chasenorman.com","language":"Lean","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/chasenorman.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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-04-10T05:24:53.000Z","updated_at":"2025-10-31T17:36:31.000Z","dependencies_parsed_at":"2025-04-10T06:26:45.673Z","dependency_job_id":"2f411105-7244-42bf-8f2a-4ccefbd6e09f","html_url":"https://github.com/chasenorman/CanonicalLean","commit_stats":null,"previous_names":["chasenorman/canonicallean"],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/chasenorman/CanonicalLean","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chasenorman%2FCanonicalLean","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chasenorman%2FCanonicalLean/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chasenorman%2FCanonicalLean/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chasenorman%2FCanonicalLean/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chasenorman","download_url":"https://codeload.github.com/chasenorman/CanonicalLean/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chasenorman%2FCanonicalLean/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":282357609,"owners_count":26656057,"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","status":"online","status_checked_at":"2025-11-02T02:00:06.609Z","response_time":64,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["automated-reasoning","dependent-type-theory","dependent-types","formal-methods","lean4","program-synthesis","theorem-prover","theorem-proving"],"created_at":"2025-11-02T21:01:26.377Z","updated_at":"2025-11-02T21:02:47.681Z","avatar_url":"https://github.com/chasenorman.png","language":"Lean","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Canonical\n\n[Canonical](https://github.com/chasenorman/Canonical) exhaustively searches for terms in dependent type theory. The `canonical` tactic proves theorems, synthesizes programs, and constructs objects in Lean.\n\nhttps://github.com/user-attachments/assets/ec13ad85-7d09-4a32-9c73-3b5b501722a4\n\n## Installation\n\nAdd the following dependency to your `lakefile.toml`:\n```\n[[require]]\nname = \"Canonical\"\nscope = \"chasenorman\"\n```\nOr, if you are using a `lakefile.lean`:\n```\nrequire \"chasenorman\" / \"Canonical\"\n```\n\nYou should then be prompted to run `lake update Canonical`.\n\n## Usage\n\nBasic examples:\n\n```lean\nimport Canonical\n\n-- prove properties by induction\ndef add_assoc (a b c : Nat) : (a + b) + c = a + (b + c) := \n  by canonical\n\n-- enumerate over elements of a type\nexample : List Nat := by canonical (count := 10)\n\n-- supply premises\ndef Set (X : Type) := X → Prop\naxiom P_ne_not_P : P ≠ ¬ P\ntheorem Cantor (f : X → Set X) : ¬ ∀ y, ∃ x, f x = y :=\n  by canonical [P_ne_not_P, congrFun]\n```\n\nMore examples can be found [in the Canonical repository](https://github.com/chasenorman/Canonical/tree/main/lean/Results).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchasenorman%2Fcanonicallean","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchasenorman%2Fcanonicallean","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchasenorman%2Fcanonicallean/lists"}