{"id":52121650,"url":"https://github.com/suraj-phanindra/connected-still-lifes","last_synced_at":"2026-08-05T07:30:37.493Z","repository":{"id":361678973,"uuid":"1255373042","full_name":"suraj-phanindra/connected-still-lifes","owner":"suraj-phanindra","description":"Maximizing live cells in connected still lifes inside an n×n box (Conway's Game of Life). Verified per-n results for n ∈ {8…32}: proven-optimal for n=8–11 (CP-SAT with two independent connectivity encodings, ASP cross-check), best-found for n=13–21. Submission artifact for CAISc 2026 (Verifiable Track).","archived":false,"fork":false,"pushed_at":"2026-05-31T18:51:29.000Z","size":250,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-31T20:22:55.787Z","etag":null,"topics":["asp","cellular-automata","clingo","combinatorial-optimization","connected-still-lifes","constraint-programming","conways-game-of-life-python","cp-sat","or-tools"],"latest_commit_sha":null,"homepage":"","language":"TeX","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/suraj-phanindra.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-31T18:46:36.000Z","updated_at":"2026-05-31T18:51:33.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/suraj-phanindra/connected-still-lifes","commit_stats":null,"previous_names":["suraj-phanindra/connected-still-lifes"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/suraj-phanindra/connected-still-lifes","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/suraj-phanindra%2Fconnected-still-lifes","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/suraj-phanindra%2Fconnected-still-lifes/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/suraj-phanindra%2Fconnected-still-lifes/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/suraj-phanindra%2Fconnected-still-lifes/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/suraj-phanindra","download_url":"https://codeload.github.com/suraj-phanindra/connected-still-lifes/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/suraj-phanindra%2Fconnected-still-lifes/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":36304102,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-07-20T02:08:10.276Z","status":"online","status_checked_at":"2026-08-05T02:00:06.619Z","response_time":104,"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":["asp","cellular-automata","clingo","combinatorial-optimization","connected-still-lifes","constraint-programming","conways-game-of-life-python","cp-sat","or-tools"],"created_at":"2026-08-05T07:30:36.872Z","updated_at":"2026-08-05T07:30:37.486Z","avatar_url":"https://github.com/suraj-phanindra.png","language":"TeX","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Connected Still Lifes\n\nSolving the **Connected Maximum-Density Still Life** problem in Conway's Game of Life\nwith a deterministic verifier and a hybrid CP-SAT + ASP solver stack. Verified\nper-n results for n ∈ {8, 9, 10, 11, 13, 15, 16, 17, 19, 20, 21, 31, 32}.\n\nThis repository accompanies the paper *Connected Maximum-Density Still Lifes:\nAn Agentic Verifier + Proposer Loop* (CAISc 2026, Verifiable Track). PDF:\n[`connected_still_life_CAISc2026.pdf`](connected_still_life_CAISc2026.pdf).\n\n## Headline results\n\n| n  | best verified | proven? | density | Chu–Stuckey ceiling | gap |\n|---:|--------------:|:-------:|--------:|--------------------:|----:|\n|  8 | **32** | yes (clingo exhaust + CP-SAT SCF + CP-SAT ST) | 50.00 % |  36 |  4 |\n|  9 | **43** | yes (ceiling-matching + CP-SAT SCF) | 53.09 % |  43 |  0 |\n| 10 | **53** | yes (CP-SAT SCF + CP-SAT ST both `OPTIMAL`) | 53.00 % |  54 |  1 |\n| 11 | **63** | yes (CP-SAT SCF + CP-SAT ST both `OPTIMAL`) | 52.07 % |  64 |  1 |\n| 13 | 88 | no (CP-SAT bound 89 ⇒ optimum ∈ {88, 89}) | 52.07 % |  90 | ≥ 1 |\n| 15 | 116 | no (Chu–Stuckey ⇒ optimum ∈ [116, 119]) | 51.56 % | 119 | ≥ 3 |\n| 16 | 131 | no (CP-SAT-as-heuristic, block-lattice hint) | 51.17 % | 136 | ≥ 5 |\n| 17 | 147 | no (same; P3 improvement over 138) | 50.87 % | 152 | ≥ 5 |\n| 19 | 179 | no (same) | 49.58 % | 190 | ≥ 11 |\n| 20 | 201 | no (same; P3 improvement over 195) | 50.25 % | 210 | ≥ 9 |\n| 21 | 221 | no (same) | 50.11 % | 232 | ≥ 11 |\n| 31 | 116 | placeholder (embed-only baseline) | 12.07 % | 497 | ≥ 381 |\n| 32 | 116 | placeholder (embed-only baseline) | 11.33 % | 531 | ≥ 415 |\n\nFor n ∈ {8, 9, 10, 11} the connected optimum is proven. For n ∈ {13, 15} we\ngive best-found witnesses and bounds. For n ∈ {16…21} we give best-found\nwitnesses from CP-SAT used as a budgeted heuristic. For n ∈ {31, 32} the\nartifacts are explicit placeholders; closing those gaps is future work.\n\n## What's in the box\n\n```\nverifier.py                \u003c- official-grader-faithful verifier (single source of truth)\ncpsat_solver.py            \u003c- CP-SAT exact engine, single-commodity-flow connectivity\ncpsat_solver_st.py         \u003c- CP-SAT exact engine, spanning-tree connectivity (independent)\nrun_solve.py               \u003c- ASP / clingo solver (ASP-2013 encoding + the two fixes)\nfeasibility.py             \u003c- ASP ceiling-feasibility cross-check\nenum_at_ceiling.py         \u003c- ASP stability-only ceiling enumeration\nsa_solver.py               \u003c- simulated-annealing proposer (documents the naive-SA failure)\np2_close_n13.py            \u003c- multi-strategy n=13 closing driver\np3_improve_large.py        \u003c- n=16-21 best-found improvement driver\nprint_table.py             \u003c- walks the JSONs, re-verifies, prints the per-n table\nstill_life-encoding.txt    \u003c- third-party ASP-2013 connected-still-life encoding\nstill_life-sample/         \u003c- ASP-2013 sample size facts (size(N) per instance)\nconnected_stilllife_n*_*.json   \u003c- every verifier-valid pattern we produced, all box sizes\nLOG.md                     \u003c- run-by-run experiment record (seeds, budgets, wall-clock)\nconnected_still_life_CAISc2026.pdf  \u003c- the paper\nconnected_still_life_CAISc2026.tex  \u003c- paper source (uses caisc_2026.sty)\ncaisc_2026.sty             \u003c- conference style file\n```\n\nJSON naming convention: `connected_stilllife_n{N}_{LABEL}_{CELLS}.json`, where\n`LABEL` is `PROVEN_OPT` (proven-optimal), `BEST_FOUND` (verifier-valid but not\nproven optimal), or `embed_only` (placeholder lower bound). The submission\nformat is `{ \"n\", \"claimed_cells\", \"grid\" }`.\n\n## Quick start\n\n```bash\npython3 -m venv .venv \u0026\u0026 source .venv/bin/activate\npip install ortools clingo numpy\n\n# 1) Verifier golden tests\npython3 verifier.py\n\n# 2) Re-verify every artifact in the repo\npython3 print_table.py\n\n# 3) Reproduce a proven-optimal result (two independent connectivity encodings)\npython3 cpsat_solver.py    8 9 10 11 -t 600\npython3 cpsat_solver_st.py 8 10 11   -t 600\n\n# 4) Reproduce the ASP cross-checks\npython3 run_solve.py 8 9\npython3 enum_at_ceiling.py --cases 8:36 10:54 11:64\n\n# 5) Phase 2 / Phase 3 heuristic runs (long)\npython3 p2_close_n13.py --n 13 --hours 3\npython3 p3_improve_large.py --ns 16 17 19 20 21 --hours 1.5\n```\n\nLong solver runs are sequenced rather than run concurrently, to avoid thermal\nthrottling on passively-cooled laptops.\n\n## Method, in one paragraph\n\n`verifier.py` is the single source of truth: it mirrors the official grader\nexactly, including the easy-to-miss exterior-ring no-birth check, and every\nclaim in this repo round-trips through it. For the small-n proofs (n=8–11) we\nrun CP-SAT with two structurally different connectivity encodings — a\nsingle-commodity flow (`cpsat_solver.py`) and a spanning-tree / parent-pointer\nformulation (`cpsat_solver_st.py`) — and both return `OPTIMAL` with `bound =\nobjective` and *different* witness patterns, which rules out a shared\nconnectivity-encoding bug. We additionally cross-check with the ASP-2013\nencoding via clingo (`run_solve.py`), and we use the published Chu–Stuckey\nunconstrained ceiling whenever the verified connected witness matches it\n(n=9). For n ≥ 13, CP-SAT runs in a budgeted, hint-seeded heuristic mode and\nwe report best-found honestly. See `LOG.md` for the full per-run record.\n\n## Citation\n\nIf you use this work, please cite the CAISc 2026 paper (BibTeX entry will be\nadded once camera-ready DOIs are issued):\n\n```\n@inproceedings{phanindra2026connectedstilllife,\n  title  = {Connected Maximum-Density Still Lifes: An Agentic Verifier + Proposer Loop},\n  author = {Phanindra, Suraj},\n  booktitle = {Proceedings of the Conference For AI Scientists (CAISc) 2026},\n  year   = {2026}\n}\n```\n\n## License\n\n[MIT](LICENSE). The ASP-2013 encoding in `still_life-encoding.txt` and the\nsample instances in `still_life-sample/` are credited to the ASP Competition\n2013 Official Problem Suite; they are reproduced here unmodified for\ncross-checking.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsuraj-phanindra%2Fconnected-still-lifes","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsuraj-phanindra%2Fconnected-still-lifes","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsuraj-phanindra%2Fconnected-still-lifes/lists"}