{"id":39858876,"url":"https://github.com/jcpaik/sofa-designer","last_synced_at":"2026-01-18T13:55:42.845Z","repository":{"id":39921305,"uuid":"434749736","full_name":"jcpaik/sofa-designer","owner":"jcpaik","description":"A software that assists a previous version of the proof of Gerver's conjecture, using a custom geometric branch-and-bound algorithm, and the exact rational QP solver powered by CGAL","archived":false,"fork":false,"pushed_at":"2024-04-03T21:22:04.000Z","size":472,"stargazers_count":30,"open_issues_count":3,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-01-14T14:42:28.937Z","etag":null,"topics":["branch-and-bound","computer-assisted-proof","computer-assisted-proofs","discrete-geometry","geometric-algorithms","optimization","quadratic-programming"],"latest_commit_sha":null,"homepage":"","language":"C++","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/jcpaik.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}},"created_at":"2021-12-03T22:26:31.000Z","updated_at":"2026-01-10T00:10:27.000Z","dependencies_parsed_at":"2024-04-01T18:49:39.637Z","dependency_job_id":null,"html_url":"https://github.com/jcpaik/sofa-designer","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jcpaik/sofa-designer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jcpaik%2Fsofa-designer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jcpaik%2Fsofa-designer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jcpaik%2Fsofa-designer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jcpaik%2Fsofa-designer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jcpaik","download_url":"https://codeload.github.com/jcpaik/sofa-designer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jcpaik%2Fsofa-designer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28537411,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-18T13:04:05.990Z","status":"ssl_error","status_checked_at":"2026-01-18T13:01:44.092Z","response_time":98,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["branch-and-bound","computer-assisted-proof","computer-assisted-proofs","discrete-geometry","geometric-algorithms","optimization","quadratic-programming"],"created_at":"2026-01-18T13:55:42.273Z","updated_at":"2026-01-18T13:55:42.838Z","avatar_url":"https://github.com/jcpaik.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# sofa-designer\n\nThe program is the computer-assited part of a prospected proof on the moving sofa problem in progress.\nIt is developed by [Jineon Baek](https://jcpaik.github.io/).\n\nAn essential idea of Gerver is to see the movement in perspective of the moving sofa, \nso that the sofa is fixed and the hallway rotates and translates around it.\nThen the sofa is essentially the intersection of the hallways being rotated counterclockwise from 0 to 90 degrees and translated.\nThe problem can be approximated by intersecting only a finite number of hallways in finite angles,\nand Gerver proved that the optimum to this approximation converges to the optimal sofa.\n\n`SofaDesigner` does the followings.\n\n1. It computes every possibility of the intersection of hallways rotated by a given finite list of angles.\n2. It proves lower and upper bound on any linear functional on the locations of hallways by examining each possibility.\n\n## Usage\n\n**The software is still in development and the details are subject to change.**\n\nThe angles are represented as a single JSON list.\n```json\n[\n    {\"cos\": \"12/13\", \"sin\": \"5/13\", \"branch_order\": 3},\n    {\"cos\": \"4/5\", \"sin\": \"3/5\", \"branch_order\": 1},\n    {\"cos\": \"3/5\"  , \"sin\": \"4/5\"  , \"branch_order\": 0},\n    {\"cos\": \"5/13\"  , \"sin\": \"12/13\"  , \"branch_order\": 2}\n]\n```\nThe angles should be strictly in between 0 and 90 degrees and have rational `cos` and `sin` values.\nThe field `branch_order` determines the order in which the hallway is included in the main branch-and-bound algorithm.\n\nOnce the program is built, do \n```bash\n./sbranch --angles angles.json --out angles.crl\n```\nto store every possibilities of the intersection of hallways rotated by angles in `angles.json` in a file `angles.crl`.\nThe `--show-max-area` flag also computes the maximum possible area of such intersection, \ngiving an upper bound of the area of any sofa rotating by 90 degrees.\n\nThen, use the `angles.crl` file to prove lower/upper bound of any linear functional as the following.\n```bash\n./sprove angles.crl \"dot(A(0)-A(5),u(0))\" --lb 0 --ub 1\n```\n\nSee `runs/` directory for more examples.\n\n## Structure\n\n`lib` contains main, common libraries developed for the project. \nCurrently the only library is `sofa`.\n\n`bin` contains source code for the final binaries `sbranch` and `sprove`.\n\n`test` contains test codes based on `catch2` library.\nA single executable `run_tests` runs all tests (except hidden tests).\n\n`extern` contains external libraries the project depends on.\n\n## How to build\n\nInstall `cmake` and libraries `gmp` and `cgal`. This is\n\n    brew install cmake gmp cgal catch2\n\non MacOS. Check respective repository for other OS.\nI found successful compilation under the following versions.\n\n- CGAL 5.5.2\n- GMP 6.2.1\\_1\n- CMake 3.26.3\n- Catch2 3.4.0\n\nTo build, make and `cd` to the `build` directory and run `cmake ..; make`.\n\n    mkdir build\n    cd build\n    cmake ..\n    make\n\nThe binaries will appear in `build/bin`.\n\n## Acknowledgements\n\n[@jwvg0425](https://github.com/jwvg0425) has helped in shaping the program architecture\nand making the code to follow better design patterns.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjcpaik%2Fsofa-designer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjcpaik%2Fsofa-designer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjcpaik%2Fsofa-designer/lists"}