{"id":16310920,"url":"https://github.com/palmskog/chip","last_synced_at":"2025-10-28T17:13:39.574Z","repository":{"id":138352961,"uuid":"164888176","full_name":"palmskog/chip","owner":"palmskog","description":"Change impact analysis in Coq and OCaml","archived":false,"fork":false,"pushed_at":"2021-11-01T10:16:15.000Z","size":361,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-16T10:14:01.573Z","etag":null,"topics":["coq","impact-analysis","mathcomp","ocaml","proof","ssreflect"],"latest_commit_sha":null,"homepage":"https://setoid.com/chip/","language":"Coq","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/palmskog.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-01-09T15:26:52.000Z","updated_at":"2021-10-23T02:52:42.000Z","dependencies_parsed_at":null,"dependency_job_id":"e7e31d40-e1f7-46c9-ace3-0393b1e7dd9f","html_url":"https://github.com/palmskog/chip","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/palmskog%2Fchip","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/palmskog%2Fchip/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/palmskog%2Fchip/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/palmskog%2Fchip/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/palmskog","download_url":"https://codeload.github.com/palmskog/chip/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248843980,"owners_count":21170486,"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":["coq","impact-analysis","mathcomp","ocaml","proof","ssreflect"],"created_at":"2024-10-10T21:43:15.920Z","updated_at":"2025-10-28T17:13:39.463Z","avatar_url":"https://github.com/palmskog.png","language":"Coq","readme":"\u003c!---\nThis file was generated from `meta.yml`, please do not edit manually.\nFollow the instructions on https://github.com/coq-community/templates to regenerate.\n---\u003e\n# Chip\n\n[![Docker CI][docker-action-shield]][docker-action-link]\n\n[docker-action-shield]: https://github.com/palmskog/chip/workflows/Docker%20CI/badge.svg?branch=master\n[docker-action-link]: https://github.com/palmskog/chip/actions?query=workflow:\"Docker%20CI\"\n\n\n\n\nCoq specification and executable functions\nfor change impact analysis, as used in build systems\nand tools for regression test selection.\n\n## Meta\n\n- Author(s):\n  - Cyril Cohen\n  - Aleksandar Nanevski\n  - Karl Palmskog\n  - Laurent Théry\n- License: [MIT license](LICENSE)\n- Compatible Coq versions: 8.13 or later\n- Additional dependencies:\n  - [MathComp ssreflect 1.12 or later](https://math-comp.github.io)\n  - [MathComp fingroup](https://math-comp.github.io)\n- Coq namespace: `chip`\n- Related publication(s):\n  - [Practical Machine-Checked Formalization of Change Impact Analysis](http://users.ece.utexas.edu/~gligoric/papers/PalmskogETAL20Chip.pdf) doi:[10.1007/978-3-030-45237-7_9](https://doi.org/10.1007/978-3-030-45237-7_9)\n\n## Building the Coq formalization\n\nMake sure the Coq requirements are installed, then run:\n\n``` shell\ngit clone https://github.com/palmskog/chip.git\ncd chip\nmake   # or make -j \u003cnumber-of-cores-on-your-machine\u003e\n```\n\n## Building and running the executable tools\n\nThe executable tools have the following additional OCaml requirements:\n\n- [OCaml 4.05.0 or later](https://ocaml.org)\n- [Ocamlbuild](https://github.com/ocaml/ocamlbuild)\n- [yojson](https://github.com/ocaml-community/yojson)\n- [extlib](https://github.com/ygrek/ocaml-extlib)\n\nAfter installing the Coq requirements, install the OCaml requirements:\n```\nopam install ocamlbuild yojson extlib\n```\nTo build the regular tool, run:\n```\nmake impacted\n```\nTo try plain change impact analysis, go to `extraction/impacted` and run:\n```\n./filtering.native test/new.json test/old.json\n```\nTo try hierarchical change impact analysis, run:\n```\n./hierarchical.native test/new-hierarchical.json test/old-hierarchical.json\n```\nTo try topological sorting, run:\n```\n./topfiltering.native test/new-topsort.json test/old-topsort.json\n```\nTo build the optimized tool:\n```\nmake impacted-rbt\n```\nand look in `extraction/impacted-rbt`. The programs and command-line\noptions are the same as above.\n\n## Files\n\nCoq files adapted and extended from work by [Cohen and Théry](https://github.com/CohenCyril/tarjan):\n\n- `core/extra.v`: auxiliary sequence lemmas\n- `core/connect.v`: auxiliary connect and topological sort definitions and lemmas\n- `core/kosaraju.v`: implementation and correctness proof of Kosaraju's strongly connected components algorithm\n- `core/tarjan.v`: implementation and correctness proof of Tarjan's strongly connected components algorithm\n\nCoq file adapted from work by [Nanevski](https://github.com/imdea-software/fcsl-pcm):\n\n- `core/ordtype.v`: ordered type definition for the Mathematical Components library\n\nCoq core definitions and lemmas:\n\n- `core/closure.v`: basic definition of transitive closures of sets\n- `core/check.v`: set-based definitions of dependency graphs, impactedness, and freshness\n- `core/change.v`: correctness argument for basic change impact analysis definitions\n- `core/hierarchical.v`: overapproximation strategy for change impact analysis in hierarchical systems\n- `core/hierarchical_correct.v`: correctness proofs for overapproximation strategy\n- `core/hierarchical_sub.v`: compositional strategy for change impact analysis in hierarchical systems\n- `core/hierarchical_sub_correct.v`: correctness proofs for compositional strategy\n- `core/hierarchical_sub_pt.v`: improved hierarchical compositional strategy using partition of new vertices\n- `core/hierarchical_sub_pt_correct.v`: correctness proofs for improved compositional strategy\n- `core/acyclic.v`: definition of and basic lemmas for acyclicity, parameterized acyclicity checker\n- `core/kosaraju_acyclic.v`: acyclicity checking based on Kosaraju's algorithm\n- `core/tarjan_acyclic.v`: acyclicity checking based on Tarjan's algorithm\n- `core/topos.v`: definitions and lemmas on topological sorting of acyclic graphs\n\nCoq implementation-related definitions and lemmas:\n\n- `core/close_dfs.v`: refined sequence-based transitive closure computation\n- `core/dfs_set.v`: refined transitive closure computation using MSet functor (to enable red-black trees)\n- `core/check_seq.v`: sequence-based change impact analysis definitions, optimized topological sorting using impact analysis\n- `core/check_seq_hierarchical.v`: sequence-based hierarchical change impact analysis definitions\n- `core/finn.v`: regular instantiation of sequence-based definitions for the ordinal finite type\n- `core/finn_set.v`: red-black tree instantiation of sequence-based definitions for the ordinal finite type\n\nKey OCaml files for regular tool:\n\n- `extraction/impacted/ocaml/change_impact.mli`: interface to extracted code\n- `extraction/impacted/ocaml/change_impact.ml`: mapping to extracted functions\n- `extraction/impacted/ocaml/filtering.ml`: program for plain change impact analysis\n- `extraction/impacted/ocaml/topfiltering.ml`: program for topological sorting\n- `extraction/impacted/ocaml/hierarchical.ml`: program for two-level hierarchical change impact analysis\n- `extraction/impacted/ocaml/util.ml`: utility functions\n\nKey OCaml files for optimized tool:\n\n- `extraction/impacted-rbt/ocaml/change_impact.mli`: interface to extracted code\n- `extraction/impacted-rbt/ocaml/change_impact.ml`: mapping to extracted functions\n- `extraction/impacted-rbt/ocaml/filtering.ml`: program for plain change impact analysis\n- `extraction/impacted-rbt/ocaml/topfiltering.ml`: program for topological sorting\n- `extraction/impacted-rbt/ocaml/hierarchical.ml`: program for two-level hierarchical change impact analysis\n- `extraction/impacted-rbt/ocaml/util.ml`: utility functions\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpalmskog%2Fchip","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpalmskog%2Fchip","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpalmskog%2Fchip/lists"}