{"id":16904057,"url":"https://github.com/dwrensha/tryateachstep","last_synced_at":"2025-09-13T01:43:51.186Z","repository":{"id":225223221,"uuid":"765398141","full_name":"dwrensha/tryAtEachStep","owner":"dwrensha","description":"Try a tactic at each step in a Lean proof.","archived":false,"fork":false,"pushed_at":"2025-03-04T22:28:28.000Z","size":141,"stargazers_count":25,"open_issues_count":5,"forks_count":3,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-03-04T23:20:19.183Z","etag":null,"topics":["lean4"],"latest_commit_sha":null,"homepage":"","language":"Lean","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/dwrensha.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-02-29T20:56:52.000Z","updated_at":"2025-03-04T22:28:32.000Z","dependencies_parsed_at":"2024-05-10T16:39:19.166Z","dependency_job_id":"7982c527-527f-4316-b753-58a56aaf670c","html_url":"https://github.com/dwrensha/tryAtEachStep","commit_stats":null,"previous_names":["dwrensha/tryateachstep"],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dwrensha%2FtryAtEachStep","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dwrensha%2FtryAtEachStep/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dwrensha%2FtryAtEachStep/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dwrensha%2FtryAtEachStep/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dwrensha","download_url":"https://codeload.github.com/dwrensha/tryAtEachStep/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244639182,"owners_count":20485838,"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":["lean4"],"created_at":"2024-10-13T18:31:19.964Z","updated_at":"2025-09-13T01:43:51.171Z","avatar_url":"https://github.com/dwrensha.png","language":"Lean","funding_links":[],"categories":[],"sub_categories":[],"readme":"# tryAtEachStep\n\n`tryAtEachStep` is a tool that runs a tactic at every proof step in\na given Lean 4 file, reporting cases where the tactic closes the goal.\n\nWith a tactic like `exact?`, this can help to\nfind ways in which your existing proofs can be improved.\n\n## video intro\n\nFrom Lean Together 2025:\n\n[\u003cimg src=\"http://img.youtube.com/vi/67Ea9WbeAPI/maxresdefault.jpg\" height=\"120px\"\u003e](https://youtu.be/67Ea9WbeAPI)\n\n## howto\n\nAdd this to your `lakefile.toml`:\n\n```toml\n[[require]]\nname = \"tryAtEachStep\"\ngit = \"https://github.com/dwrensha/tryAtEachStep\"\nrev = \"main\"\n```\n\nThen do this:\n\n```shell\n$ lake exe tryAtEachStep \"exact?\" Foo/Bar.lean --outfile /tmp/out.json\n```\n\nProgress will be displayed via stderr as it happens.\nUpon completion, `/tmp/out.json` will contain JSON describing the results.\n\n### running on all files in a directory\n\nThe `tryAtEachStepInDirectory` tool runs `tryAtEachStep` on all `.lean` files\nunder a given directory. For example:\n\n```shell\n$ lake exe tryAtEachStepInDirectory \"with_reducible exact?\" YourLibrary -j 31\n```\n\nThe `-j 31` argument specifies that 31 jobs should be run in parallel.\n\nResults are written as JSON in a directory with name `tryAtEachStep-out-XXXXXXXX`,\nwhere the X's get filled in randomly.\nYou can specify a different output directory via `--outdir`.\n\n\n## Example findings:\n\n* [mathlib#13335](https://github.com/leanprover-community/mathlib4/pull/13335)\n* [mathlib#13334](https://github.com/leanprover-community/mathlib4/pull/13334)\n* [mathlib#12715](https://github.com/leanprover-community/mathlib4/pull/12715)\n* [mathlib#12678](https://github.com/leanprover-community/mathlib4/pull/12678)\n* [mathlib#11093](https://github.com/leanprover-community/mathlib4/pull/11093)\n* [mathlib@4900a2c5](https://github.com/leanprover-community/mathlib4/commit/4900a2c5b000492d1d0c6730f26d77a570b1a66c)\n* [mathlib@866dfe56](https://github.com/leanprover-community/mathlib4/commit/866dfe56cc0541fbe0331ecacd1687bb99172f39)\n* [mathlib@a6f77074](https://github.com/leanprover-community/mathlib4/commit/a6f770740f4c07b236c336115f4de99c28cd8910)\n* [compfiles@cd250e72](https://github.com/dwrensha/compfiles/commit/cd250e726614a3c9ff60256da02db2c954d1dd8a)\n* [compfiles@9a9eb697](https://github.com/dwrensha/compfiles/commit/9a9eb697ebf1bacd34ea4d4345686903d0dd0c22)\n* [compfiles@0a02194e](https://github.com/dwrensha/compfiles/commit/0a02194eb3ce29f0d38e45a53e3f9943922c1398)\n* [compfiles@22eaf558](https://github.com/dwrensha/compfiles/commit/22eaf558bd438ee11146c402ec4db9533404df58)\n* [compfiles@8ee4ce58](https://github.com/dwrensha/compfiles/commit/8ee4ce58c3309ba73a466bd5db7817d68844ca9d)\n* [compfiles@8fd2ff0a](https://github.com/dwrensha/compfiles/commit/8fd2ff0a3ca8f5d6b9fcc2650a0c3f4220ec0f5f)\n* [compfiles@fdf0f9a0](https://github.com/dwrensha/compfiles/commit/fdf0f9a03db591897e91b17a9772b916bfd2cd67)\n* [compfiles@b8068381](https://github.com/dwrensha/compfiles/commit/b80683817ccd3f7d52d877b9cff5c687ac0f940a)\n* [compfiles@f76ad21b](https://github.com/dwrensha/compfiles/commit/f76ad21bf9888f290dbbdc748939c4c8427f34a9)\n* [compfiles@8650fb4a](https://github.com/dwrensha/compfiles/commit/8650fb4ad67533e269aecb73c3d36fe5226f6dee)\n* [compfiles@fe99e1e9](https://github.com/dwrensha/compfiles/commit/fe99e1e9c1f991d338a7d97b25e2ab1002bac30f)\n* [compfiles@6c3272cb](https://github.com/dwrensha/compfiles/commit/6c3272cbbed145ed5a9451ada5b14139e898177a)\n\n## TODO\n\n* Tests\n* Support tactics that aren't imported by the input file.\n* Better handling of situations where there are multiple active goals.\n* Report performance statistics of existing and new tactic.\n* Operate on terms. (Currently only operates on the tactic steps of the given file.)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdwrensha%2Ftryateachstep","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdwrensha%2Ftryateachstep","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdwrensha%2Ftryateachstep/lists"}