{"id":22898962,"url":"https://github.com/dwarfmaster/absint","last_synced_at":"2025-09-24T15:34:38.071Z","repository":{"id":148099766,"uuid":"93515270","full_name":"dwarfmaster/absint","owner":"dwarfmaster","description":"Abstract interpretation for a small subset of C","archived":false,"fork":false,"pushed_at":"2017-06-14T22:01:23.000Z","size":190,"stargazers_count":3,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-01T01:54:02.390Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Haskell","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/dwarfmaster.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-06-06T12:21:56.000Z","updated_at":"2022-06-01T11:16:49.000Z","dependencies_parsed_at":"2023-05-19T04:00:24.216Z","dependency_job_id":null,"html_url":"https://github.com/dwarfmaster/absint","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dwarfmaster/absint","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dwarfmaster%2Fabsint","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dwarfmaster%2Fabsint/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dwarfmaster%2Fabsint/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dwarfmaster%2Fabsint/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dwarfmaster","download_url":"https://codeload.github.com/dwarfmaster/absint/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dwarfmaster%2Fabsint/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":276775410,"owners_count":25702822,"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-09-24T02:00:09.776Z","response_time":97,"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":[],"created_at":"2024-12-14T00:35:32.033Z","updated_at":"2025-09-24T15:34:38.046Z","avatar_url":"https://github.com/dwarfmaster.png","language":"Haskell","funding_links":[],"categories":[],"sub_categories":[],"readme":"Introduction\n============\n\nThis program is a abstract interpreter for a small subset of c. It supports\nconditions, functions, arbitrary gotos, while and for loops, and int and bool\ntypes (please be aware of bug #1). Also, while functions are supported, they\ncannot be recursive : those will cause the interpret not to end. Furthermore,\nby lack of time, there is no typecheck, thus the program entered should be\nsemantically correct. If they aren't, the program may not fail but produce\ninconsistent output.\n\nSupported abstractions\n======================\n\nThree abstractions are supported : constants, segments and finite sets (called\nconcrete by abuse of language). In all of these, integer are considered to\nbe in Z : it doesn't take into account modular arithmetic.\n\nFinite sets store finite sets of values, and approximate any infinite set by\nZ. That makes it really precise for specific computations, but as soon as\nwidening happens, all precision is lost : since it cannot represent half of\nZ, guard over comparison brings no precision.\n\nConstant domain is the same, except that the set are supposed to be of cardinal\n1 or 0.\n\nSegment bound the values taken by variables by a lower an upper bound, possibly\ninfinite. This is by far the most powerful abstraction when handling guards,\nsince it manages comparison very easily.\n\nBuilding and using\n==================\n\nIt can be built with the command `cabal build` if you have cabal. If it fails,\nthere is a nix file under which it works, ie the command\n`nix-shell --command \"cabal build\"` should work. The produced binary is\nunder `dist/build/absint/absint`.\n\nTo use, pipe the C program you want analysed into the program. It will create\nfour files : `graph.pdf`, a drawing of the graph (/!\\ it needs graphviz to be\ninstalled and accessible under `$PATH` for this to work), `out.concrete`,\n`out.constant` and `out.segment`. The `out.*` file starts with a binding from\nvariables ids to their name and position in the program, followed by the abstract\nenvironment for each node. If a variable is not present in an environment, it\nmeans its interpretation is bottom. To know to which part of the program each\nnode correspond, refer to the graph.\n\nMissing features\n================\n\nThere is a support for asserts and rand in the iterator and abstract domain,\nbut no syntactic way to introduce in the source code. Please note that rand\ncan be simulated by a loop (forcing a widening) followed by two conditions, but\nonly with the segment abstraction.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdwarfmaster%2Fabsint","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdwarfmaster%2Fabsint","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdwarfmaster%2Fabsint/lists"}