{"id":20827365,"url":"https://github.com/gokulp01/verse-nnenum-int","last_synced_at":"2025-08-31T14:03:52.495Z","repository":{"id":273103037,"uuid":"716630757","full_name":"gokulp01/verse-nnenum-int","owner":"gokulp01","description":null,"archived":false,"fork":false,"pushed_at":"2024-03-07T19:06:13.000Z","size":71095,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-04-01T05:31:59.706Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gokulp01.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2023-11-09T14:40:04.000Z","updated_at":"2024-12-22T16:19:43.000Z","dependencies_parsed_at":"2025-01-18T18:05:40.079Z","dependency_job_id":null,"html_url":"https://github.com/gokulp01/verse-nnenum-int","commit_stats":null,"previous_names":["gokulp01/verse-nnenum-int"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/gokulp01/verse-nnenum-int","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gokulp01%2Fverse-nnenum-int","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gokulp01%2Fverse-nnenum-int/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gokulp01%2Fverse-nnenum-int/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gokulp01%2Fverse-nnenum-int/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gokulp01","download_url":"https://codeload.github.com/gokulp01/verse-nnenum-int/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gokulp01%2Fverse-nnenum-int/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272988919,"owners_count":25026961,"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-08-31T02:00:09.071Z","response_time":79,"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-11-17T23:11:55.019Z","updated_at":"2025-08-31T14:03:52.474Z","avatar_url":"https://github.com/gokulp01.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# verse-nnenum-int\n# Assured Collision Avoidance for Learned Controllers\n\nThis repository is built based on top of Verse's [offical repository]([https://github.com/googleinterns/IBRNet](https://github.com/AutoVerse-ai/Verse-library))\n\n\n## Introduction\n\nThis paper introduces a novel approach to verification of neural network controlled systems, combining the capabilities of the nnenum framework with the Verse toolkit. Addressing a critical gap in the traditional verification process which often does not include the system dynamics analysis while computing the neural network outputs, our integrated methodology enhances the precision and safety of decision-making in complex dynamical systems. By iteratively verifying neural network decisions and propagating system states, we maintain an accurate representation of the system’s behavior over time, a vital aspect in ensuring operational safety.\nOur approach is exemplified through the verification of the neural network controlled Airborne Collision Avoidance System for Unmanned Aircraft (ACAS Xu). We demonstrate that the integration of nnenum and Verse not only accurately computes reachable sets for the UAS but also effectively handles the inherent complexity and nonlinearity of the system. The resulting analysis provides a nuanced understanding of the system’s behavior under varying operational conditions and interactions with other agents, such as intruder aircraft. The comprehensive simulations conducted as part of this study reveal the robustness of our approach, validating its effectiveness in verifying the safety and reliability of learned controllers. Furthermore, the scalability and adaptability of our methodology suggest its broader applicability in various autonomous systems requiring rigorous safety verification.\n\n## Installation\n\nClone this repository:\n\n```bash\nhttps://github.com/gokulp01/verse-nnenum-int\nverse-nnenum-int\n```\n\nThe code is tested with python 3.9, cuda == 11.1, pytorch == 1.10.1. Additionally dependencies include: \n\n```bash\nray~=2.4.0\nastunparse~=1.6.3\nbeautifulsoup4~=4.11.1\nintervaltree~=3.1.0\nlxml~=4.9.1\nmatplotlib~=3.4.3\nnumpy~=1.24\nplotly~=5.8.2\npolytope~=0.2.3\nPympler~=1.0.1\npyvista~=0.35.2\nscipy~=1.9\nsix~=1.14.0\nsympy~=1.6.2\ntorch~=1.13.1\ntqdm~=4.64.1\nz3-solver~=4.8.17.0\ntreelib~=1.6.1\nportion~=2.3.1\ngraphviz~=0.20\nnetworkx~=2.8.3\n```\n\n## Datasets\n\nWe reuse the ACAS Xu dataset from Stanley Bak's [ACASXu Falsification Benchmark(https://github.com/stanleybak/acasxu_closed_loop_sim/tree/main). Additionally, we also use the vnnlib and onnx files that can be found [here](https://github.com/stanleybak/nnenum/blob/master/examples/acasxu/data/ACASXU_run2a_3_2_batch_2000.onnx). \n\nFor ease, we consolidate the instructions below:\n```bash\nmkdir data\ncd data/\ngit clone https://github.com/stanleybak/nnenum.git\ncp-r nnenum/examples/acasxu .\n```\n\u003cdiv align=\"center\"\u003e\n\u003cimg width=\"423\" alt=\"image\" src=\"https://github.com/gokulp01/verse-nnenum-int/assets/43350089/53625011-1346-4a6c-8851-efeb541b3e9c\"\u003e\n\u003c/div\u003e\n\n\n## Usage\nUse the nnenum scripts provided within this repository to generate verified trajectories of the agent (decision generation -- Section V-A). \n```bash\npython3 -m nnenum.nnenum examples/acasxu/data/ACASXU_run2a_3_3_batch_2000.onnx examples/acasxu/data/prop_9.vnnlib\n```\nThis should generate two `.npy` files. \n\n\u003cdiv align=\"center\"\u003e\n\u003cimg width=\"382\" alt=\"image\" src=\"https://github.com/gokulp01/verse-nnenum-int/assets/43350089/14d786fb-af33-4b19-853e-04dd454f8297\"\u003e\n\u003c/div\u003e\n\nNow run the integration file: \n```bash\npython3 acas_nnenum_integration.py\n```\nThis integrates with Verse and generates the reachtubes. \n\n\u003cdiv align=\"center\"\u003e\n\u003cimg width=\"376\" alt=\"image\" src=\"https://github.com/gokulp01/verse-nnenum-int/assets/43350089/59cd9581-013c-4f50-9996-ba007f71fad8\"\u003e\n\u003c/div\u003e\n\n## Cite this work\n\nIf you find our work / code implementation useful for your own research, please cite our paper.\n\n```\n@inproceedings{puthumanaillam2024assured,\n  title={Assured Collision Avoidance for Learned Controllers: A Case Study of ACAS Xu},\n  author={Puthumanaillam, Gokul and Vora, Manav Ketan and Shafa, Taha and Li, Yangge and Ornik, Melkior and Mitra, Sayan},\n  booktitle={AIAA SCITECH 2024 Forum},\n  pages={1168},\n  year={2024}\n}\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgokulp01%2Fverse-nnenum-int","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgokulp01%2Fverse-nnenum-int","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgokulp01%2Fverse-nnenum-int/lists"}