geometric-function-atlas 0.1.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- geometric_function_atlas-0.1.1/.github/workflows/ci.yml +60 -0
- geometric_function_atlas-0.1.1/CHANGELOG.md +36 -0
- geometric_function_atlas-0.1.1/CITATION.cff +25 -0
- geometric_function_atlas-0.1.1/LICENSE +21 -0
- geometric_function_atlas-0.1.1/MANIFEST.in +11 -0
- geometric_function_atlas-0.1.1/PKG-INFO +149 -0
- geometric_function_atlas-0.1.1/README.md +119 -0
- geometric_function_atlas-0.1.1/docs/INSTALL.md +68 -0
- geometric_function_atlas-0.1.1/docs/PROVENANCE.md +61 -0
- geometric_function_atlas-0.1.1/docs/RELEASING.md +70 -0
- geometric_function_atlas-0.1.1/docs/RESULT_CONTRACT.md +110 -0
- geometric_function_atlas-0.1.1/docs/ROADMAP.md +83 -0
- geometric_function_atlas-0.1.1/docs/WEB_PARITY.md +51 -0
- geometric_function_atlas-0.1.1/pyproject.toml +64 -0
- geometric_function_atlas-0.1.1/scripts/check_clean_install.py +161 -0
- geometric_function_atlas-0.1.1/scripts/check_distribution.py +91 -0
- geometric_function_atlas-0.1.1/scripts/check_uv_tool_install.py +93 -0
- geometric_function_atlas-0.1.1/scripts/install.ps1 +30 -0
- geometric_function_atlas-0.1.1/scripts/install.sh +32 -0
- geometric_function_atlas-0.1.1/setup.cfg +4 -0
- geometric_function_atlas-0.1.1/src/geometric_function_atlas/__init__.py +46 -0
- geometric_function_atlas-0.1.1/src/geometric_function_atlas/__main__.py +5 -0
- geometric_function_atlas-0.1.1/src/geometric_function_atlas/catalog.py +98 -0
- geometric_function_atlas-0.1.1/src/geometric_function_atlas/cli.py +282 -0
- geometric_function_atlas-0.1.1/src/geometric_function_atlas/coefficients.py +206 -0
- geometric_function_atlas-0.1.1/src/geometric_function_atlas/contracts.py +1334 -0
- geometric_function_atlas-0.1.1/src/geometric_function_atlas/counterexamples.py +308 -0
- geometric_function_atlas-0.1.1/src/geometric_function_atlas/fekete_szego.py +325 -0
- geometric_function_atlas-0.1.1/src/geometric_function_atlas/implementation_registry.py +37 -0
- geometric_function_atlas-0.1.1/src/geometric_function_atlas/models.py +261 -0
- geometric_function_atlas-0.1.1/src/geometric_function_atlas/py.typed +0 -0
- geometric_function_atlas-0.1.1/src/geometric_function_atlas/schema/error.schema.json +17 -0
- geometric_function_atlas-0.1.1/src/geometric_function_atlas/schema/result.schema.json +272 -0
- geometric_function_atlas-0.1.1/src/geometric_function_atlas/version.py +8 -0
- geometric_function_atlas-0.1.1/src/geometric_function_atlas.egg-info/PKG-INFO +149 -0
- geometric_function_atlas-0.1.1/src/geometric_function_atlas.egg-info/SOURCES.txt +49 -0
- geometric_function_atlas-0.1.1/src/geometric_function_atlas.egg-info/dependency_links.txt +1 -0
- geometric_function_atlas-0.1.1/src/geometric_function_atlas.egg-info/entry_points.txt +3 -0
- geometric_function_atlas-0.1.1/src/geometric_function_atlas.egg-info/requires.txt +12 -0
- geometric_function_atlas-0.1.1/src/geometric_function_atlas.egg-info/top_level.txt +1 -0
- geometric_function_atlas-0.1.1/tests/fixtures/counterexample_web_parity.json +59 -0
- geometric_function_atlas-0.1.1/tests/fixtures/fekete_szego_research_artifact.json +357 -0
- geometric_function_atlas-0.1.1/tests/test_catalog.py +88 -0
- geometric_function_atlas-0.1.1/tests/test_cli.py +168 -0
- geometric_function_atlas-0.1.1/tests/test_coefficients.py +88 -0
- geometric_function_atlas-0.1.1/tests/test_contracts.py +651 -0
- geometric_function_atlas-0.1.1/tests/test_counterexample_web_parity.py +34 -0
- geometric_function_atlas-0.1.1/tests/test_counterexamples.py +173 -0
- geometric_function_atlas-0.1.1/tests/test_fekete_szego.py +173 -0
- geometric_function_atlas-0.1.1/tests/test_installers.py +91 -0
- geometric_function_atlas-0.1.1/tests/test_migration_crosscheck.py +23 -0
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
workflow_dispatch:
|
|
8
|
+
|
|
9
|
+
permissions:
|
|
10
|
+
contents: read
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
test:
|
|
14
|
+
name: Python ${{ matrix.python-version }}
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
strategy:
|
|
17
|
+
fail-fast: false
|
|
18
|
+
matrix:
|
|
19
|
+
python-version: ["3.10", "3.11", "3.12", "3.13"]
|
|
20
|
+
steps:
|
|
21
|
+
- uses: actions/checkout@v7
|
|
22
|
+
- uses: actions/setup-python@v7
|
|
23
|
+
with:
|
|
24
|
+
python-version: ${{ matrix.python-version }}
|
|
25
|
+
- uses: astral-sh/setup-uv@v9.0.0
|
|
26
|
+
- run: uv sync --extra test --locked
|
|
27
|
+
- run: uv run --extra test python -W error -m pytest -q
|
|
28
|
+
- run: uv run --extra test python -m ruff check src tests scripts
|
|
29
|
+
- run: uv run --extra test python -m mypy src --ignore-missing-imports
|
|
30
|
+
|
|
31
|
+
distribution:
|
|
32
|
+
name: Distribution and managed-Python install
|
|
33
|
+
needs: test
|
|
34
|
+
runs-on: ubuntu-latest
|
|
35
|
+
steps:
|
|
36
|
+
- uses: actions/checkout@v7
|
|
37
|
+
- uses: actions/setup-python@v7
|
|
38
|
+
with:
|
|
39
|
+
python-version: "3.12"
|
|
40
|
+
- uses: astral-sh/setup-uv@v9.0.0
|
|
41
|
+
- run: uv sync --extra test --extra build --locked
|
|
42
|
+
- run: uv run --extra build python -m build
|
|
43
|
+
- run: uv run --extra build python -m twine check dist/*
|
|
44
|
+
- run: uv run python scripts/check_distribution.py dist
|
|
45
|
+
- run: uv run python scripts/check_clean_install.py dist/geometric_function_atlas-0.1.1-py3-none-any.whl
|
|
46
|
+
- run: uv run python scripts/check_uv_tool_install.py dist/geometric_function_atlas-0.1.1-py3-none-any.whl --python 3.12
|
|
47
|
+
|
|
48
|
+
windows-installer:
|
|
49
|
+
name: Windows PowerShell installer smoke
|
|
50
|
+
runs-on: windows-latest
|
|
51
|
+
steps:
|
|
52
|
+
- uses: actions/checkout@v7
|
|
53
|
+
- uses: astral-sh/setup-uv@v9.0.0
|
|
54
|
+
- name: Install local source as an isolated managed-Python tool
|
|
55
|
+
shell: pwsh
|
|
56
|
+
run: |
|
|
57
|
+
$env:GFA_PACKAGE_SPEC = (Get-Location).Path
|
|
58
|
+
$env:GFA_PYTHON_VERSION = "3.12"
|
|
59
|
+
./scripts/install.ps1
|
|
60
|
+
gfa --version
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to Geometric Function Atlas are recorded here.
|
|
4
|
+
|
|
5
|
+
## 0.1.1 — 2026-08-10
|
|
6
|
+
|
|
7
|
+
Contract-integrity repair release.
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- The shipped Draft 2020-12 result schema now couples exact-result evidence,
|
|
12
|
+
computational, verification, and failure states as strictly as the Python
|
|
13
|
+
validator.
|
|
14
|
+
- The public counterexample API rejects strings, bytes, mappings, sets, and
|
|
15
|
+
other non-sequence coefficient containers instead of coercing them.
|
|
16
|
+
|
|
17
|
+
## 0.1.0 — 2026-08-10
|
|
18
|
+
|
|
19
|
+
First software release.
|
|
20
|
+
|
|
21
|
+
### Included
|
|
22
|
+
|
|
23
|
+
- Exact Taylor coefficients for the built-in Ma–Minda generator catalog.
|
|
24
|
+
- Exact Ma–Minda Fekete–Szegő constants under declared assumptions.
|
|
25
|
+
- Certified interval re-evaluation of supplied starlikeness, Becker, and Nehari
|
|
26
|
+
witnesses without claiming global counterexample discovery.
|
|
27
|
+
- Human-readable `gfa` commands with optional versioned JSON output.
|
|
28
|
+
- Closed result, verification, provenance, and failure contracts.
|
|
29
|
+
- Python-free installation through `uv` on macOS, Linux, and Windows.
|
|
30
|
+
- Distribution, clean-install, managed-Python, Linux, and Windows release gates.
|
|
31
|
+
|
|
32
|
+
### Scope
|
|
33
|
+
|
|
34
|
+
This release does not include registry search, radius-certificate replay, plots,
|
|
35
|
+
image or cryptography labs, mutable registry data, literature novelty decisions,
|
|
36
|
+
or PyPI publication. Those remain separate future phases.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
cff-version: 1.2.0
|
|
2
|
+
title: geometric-function-atlas
|
|
3
|
+
message: "If you use this software, please cite the software release and the associated paper."
|
|
4
|
+
type: software
|
|
5
|
+
version: 0.1.1
|
|
6
|
+
date-released: 2026-08-10
|
|
7
|
+
authors:
|
|
8
|
+
- family-names: Devadiga
|
|
9
|
+
given-names: Prasanna
|
|
10
|
+
- family-names: Suneesh
|
|
11
|
+
given-names: Arya
|
|
12
|
+
- family-names: Gurumurthy
|
|
13
|
+
given-names: Kishan
|
|
14
|
+
- family-names: Devadiga
|
|
15
|
+
given-names: Pushparaj
|
|
16
|
+
- family-names: Sebastian
|
|
17
|
+
given-names: Asha
|
|
18
|
+
license: MIT
|
|
19
|
+
repository-code: https://github.com/Prasanna28Devadiga/geometric-function-atlas
|
|
20
|
+
url: https://github.com/Prasanna28Devadiga/geometric-function-atlas
|
|
21
|
+
keywords:
|
|
22
|
+
- geometric function theory
|
|
23
|
+
- Ma-Minda functions
|
|
24
|
+
- reproducible research
|
|
25
|
+
- certified computation
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Geometric Function Atlas contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
include CITATION.cff
|
|
2
|
+
include CHANGELOG.md
|
|
3
|
+
include .github/workflows/ci.yml
|
|
4
|
+
include scripts/install.sh
|
|
5
|
+
include scripts/install.ps1
|
|
6
|
+
include scripts/check_distribution.py
|
|
7
|
+
include scripts/check_clean_install.py
|
|
8
|
+
include scripts/check_uv_tool_install.py
|
|
9
|
+
recursive-include docs *.md
|
|
10
|
+
recursive-include tests *.py *.json
|
|
11
|
+
recursive-include src/geometric_function_atlas/schema *.json
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: geometric-function-atlas
|
|
3
|
+
Version: 0.1.1
|
|
4
|
+
Summary: Reproducible computations for a geometric function theory atlas
|
|
5
|
+
Author: Prasanna Devadiga, Arya Suneesh, Kishan Gurumurthy, Pushparaj Devadiga, Asha Sebastian
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/Prasanna28Devadiga/geometric-function-atlas
|
|
8
|
+
Project-URL: Repository, https://github.com/Prasanna28Devadiga/geometric-function-atlas
|
|
9
|
+
Project-URL: Issues, https://github.com/Prasanna28Devadiga/geometric-function-atlas/issues
|
|
10
|
+
Keywords: geometric function theory,Ma-Minda,reproducible research,certified computation
|
|
11
|
+
Classifier: Development Status :: 3 - Alpha
|
|
12
|
+
Classifier: Intended Audience :: Science/Research
|
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
|
14
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
15
|
+
Classifier: Topic :: Scientific/Engineering :: Mathematics
|
|
16
|
+
Requires-Python: >=3.10
|
|
17
|
+
Description-Content-Type: text/markdown
|
|
18
|
+
License-File: LICENSE
|
|
19
|
+
Requires-Dist: mpmath>=1.3
|
|
20
|
+
Requires-Dist: sympy>=1.12
|
|
21
|
+
Provides-Extra: test
|
|
22
|
+
Requires-Dist: jsonschema>=4.23; extra == "test"
|
|
23
|
+
Requires-Dist: mypy>=1.15; extra == "test"
|
|
24
|
+
Requires-Dist: pytest>=8; extra == "test"
|
|
25
|
+
Requires-Dist: ruff>=0.16; extra == "test"
|
|
26
|
+
Provides-Extra: build
|
|
27
|
+
Requires-Dist: build>=1.2; extra == "build"
|
|
28
|
+
Requires-Dist: twine>=5; extra == "build"
|
|
29
|
+
Dynamic: license-file
|
|
30
|
+
|
|
31
|
+
# geometric-function-atlas
|
|
32
|
+
|
|
33
|
+
`geometric-function-atlas` is a standalone Python package for independently reproducing and reviewing computations published by the Geometric Function Atlas.
|
|
34
|
+
|
|
35
|
+
Source repository: <https://github.com/Prasanna28Devadiga/geometric-function-atlas>
|
|
36
|
+
|
|
37
|
+
This repository is intentionally separate from the registry website and its research workspace. It provides local commands and Python functions for reproducing the website's mathematical computations. It does not contain the Flask application, deployment configuration, private review state, or mutable registry database.
|
|
38
|
+
|
|
39
|
+
## Phase 1
|
|
40
|
+
|
|
41
|
+
The first release provides:
|
|
42
|
+
|
|
43
|
+
- a typed catalog of the Ma–Minda generators used by the paper’s exact-radius portfolio;
|
|
44
|
+
- exact Taylor coefficients of a generator using SymPy;
|
|
45
|
+
- exact Ma–Minda Fekete–Szegő constants and their derivation metadata;
|
|
46
|
+
- certified re-evaluation of supplied counterexample witnesses;
|
|
47
|
+
- versioned structured result and fail-closed verification reports;
|
|
48
|
+
- JSON-capable command-line output suitable for independent checks.
|
|
49
|
+
|
|
50
|
+
Later phases will expose the remaining plots, certificates, registry queries, and application labs already available on the website.
|
|
51
|
+
|
|
52
|
+
## Install — Python is not required
|
|
53
|
+
|
|
54
|
+
The supported user installation uses `uv` as an isolated tool manager. It
|
|
55
|
+
downloads Python 3.12 and every runtime dependency automatically.
|
|
56
|
+
|
|
57
|
+
macOS and Linux:
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
curl -LsSf https://raw.githubusercontent.com/Prasanna28Devadiga/geometric-function-atlas/main/scripts/install.sh | sh
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Windows PowerShell:
|
|
64
|
+
|
|
65
|
+
```powershell
|
|
66
|
+
irm https://raw.githubusercontent.com/Prasanna28Devadiga/geometric-function-atlas/main/scripts/install.ps1 | iex
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
After restarting the terminal, run `gfa --version`. Existing `uv` users can
|
|
70
|
+
install the GitHub release wheel directly:
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
uv tool install --managed-python --python 3.12 https://github.com/Prasanna28Devadiga/geometric-function-atlas/releases/download/v0.1.1/geometric_function_atlas-0.1.1-py3-none-any.whl
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
See `docs/INSTALL.md` for removal and maintainer installation from a local wheel.
|
|
77
|
+
|
|
78
|
+
## Python API
|
|
79
|
+
|
|
80
|
+
```python
|
|
81
|
+
from geometric_function_atlas import Generator, fekete_szego, generator_series, z
|
|
82
|
+
|
|
83
|
+
# phi(z) = 1 + sin(z) = 1 + z - z^3/6 + ...
|
|
84
|
+
series = generator_series("sine", order=4)
|
|
85
|
+
assert tuple(map(str, series.coefficients)) == (
|
|
86
|
+
"1", "0", "-1/6", "0"
|
|
87
|
+
)
|
|
88
|
+
print(series.to_dict())
|
|
89
|
+
|
|
90
|
+
# Exact sharp constant under the declared Ma–Minda assumptions.
|
|
91
|
+
result = fekete_szego("exponential", mu=0)
|
|
92
|
+
assert str(result.value) == "3/4"
|
|
93
|
+
print(result.to_dict())
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
Custom normalized generators use preconstructed SymPy expressions; formula
|
|
97
|
+
strings are deliberately rejected rather than passed to an eval-based parser:
|
|
98
|
+
|
|
99
|
+
```python
|
|
100
|
+
custom = Generator(
|
|
101
|
+
key="custom",
|
|
102
|
+
name="Example",
|
|
103
|
+
expression=1 + 2*z + 3*z**2,
|
|
104
|
+
citation="User supplied",
|
|
105
|
+
)
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Computations are not restricted to the built-in catalog. Analytic admissibility
|
|
109
|
+
of custom input remains an explicit caller assumption, and undeclared free
|
|
110
|
+
symbols are rejected.
|
|
111
|
+
|
|
112
|
+
## Command line
|
|
113
|
+
|
|
114
|
+
```bash
|
|
115
|
+
gfa generators
|
|
116
|
+
gfa coefficients sine --order 5
|
|
117
|
+
gfa fekete-szego exponential --mu 1/2
|
|
118
|
+
|
|
119
|
+
# Re-check the witness z=-3/4 for f(z)=z+z².
|
|
120
|
+
gfa verify-counterexample --coefficients "1" --point=-0.75,0
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
The longer command name, `geometric-function-atlas`, is also supported. Add
|
|
124
|
+
`--json` to any command when machine-readable output is useful.
|
|
125
|
+
|
|
126
|
+
`--mu` accepts an exact signed integer or `integer/integer` fraction. Decimal
|
|
127
|
+
and scientific notation are rejected so untrusted short inputs cannot trigger
|
|
128
|
+
unbounded symbolic integer construction.
|
|
129
|
+
|
|
130
|
+
See `docs/WEB_PARITY.md` for the website-to-package checklist,
|
|
131
|
+
`docs/PROVENANCE.md` for claim semantics, and `docs/ROADMAP.md` for the
|
|
132
|
+
incremental implementation path.
|
|
133
|
+
The versioned result envelope, verification checks, failure states, and CLI
|
|
134
|
+
exit codes are specified in `docs/RESULT_CONTRACT.md`.
|
|
135
|
+
|
|
136
|
+
## Development
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
uv sync --extra test
|
|
140
|
+
uv run pytest
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
## Scientific status
|
|
144
|
+
|
|
145
|
+
Every result reports its method and evidence status. Numerical screens are never presented as proofs, computational certification is distinct from literature novelty, and bibliographic review remains a separate human process.
|
|
146
|
+
|
|
147
|
+
## License
|
|
148
|
+
|
|
149
|
+
MIT
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
# geometric-function-atlas
|
|
2
|
+
|
|
3
|
+
`geometric-function-atlas` is a standalone Python package for independently reproducing and reviewing computations published by the Geometric Function Atlas.
|
|
4
|
+
|
|
5
|
+
Source repository: <https://github.com/Prasanna28Devadiga/geometric-function-atlas>
|
|
6
|
+
|
|
7
|
+
This repository is intentionally separate from the registry website and its research workspace. It provides local commands and Python functions for reproducing the website's mathematical computations. It does not contain the Flask application, deployment configuration, private review state, or mutable registry database.
|
|
8
|
+
|
|
9
|
+
## Phase 1
|
|
10
|
+
|
|
11
|
+
The first release provides:
|
|
12
|
+
|
|
13
|
+
- a typed catalog of the Ma–Minda generators used by the paper’s exact-radius portfolio;
|
|
14
|
+
- exact Taylor coefficients of a generator using SymPy;
|
|
15
|
+
- exact Ma–Minda Fekete–Szegő constants and their derivation metadata;
|
|
16
|
+
- certified re-evaluation of supplied counterexample witnesses;
|
|
17
|
+
- versioned structured result and fail-closed verification reports;
|
|
18
|
+
- JSON-capable command-line output suitable for independent checks.
|
|
19
|
+
|
|
20
|
+
Later phases will expose the remaining plots, certificates, registry queries, and application labs already available on the website.
|
|
21
|
+
|
|
22
|
+
## Install — Python is not required
|
|
23
|
+
|
|
24
|
+
The supported user installation uses `uv` as an isolated tool manager. It
|
|
25
|
+
downloads Python 3.12 and every runtime dependency automatically.
|
|
26
|
+
|
|
27
|
+
macOS and Linux:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
curl -LsSf https://raw.githubusercontent.com/Prasanna28Devadiga/geometric-function-atlas/main/scripts/install.sh | sh
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Windows PowerShell:
|
|
34
|
+
|
|
35
|
+
```powershell
|
|
36
|
+
irm https://raw.githubusercontent.com/Prasanna28Devadiga/geometric-function-atlas/main/scripts/install.ps1 | iex
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
After restarting the terminal, run `gfa --version`. Existing `uv` users can
|
|
40
|
+
install the GitHub release wheel directly:
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
uv tool install --managed-python --python 3.12 https://github.com/Prasanna28Devadiga/geometric-function-atlas/releases/download/v0.1.1/geometric_function_atlas-0.1.1-py3-none-any.whl
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
See `docs/INSTALL.md` for removal and maintainer installation from a local wheel.
|
|
47
|
+
|
|
48
|
+
## Python API
|
|
49
|
+
|
|
50
|
+
```python
|
|
51
|
+
from geometric_function_atlas import Generator, fekete_szego, generator_series, z
|
|
52
|
+
|
|
53
|
+
# phi(z) = 1 + sin(z) = 1 + z - z^3/6 + ...
|
|
54
|
+
series = generator_series("sine", order=4)
|
|
55
|
+
assert tuple(map(str, series.coefficients)) == (
|
|
56
|
+
"1", "0", "-1/6", "0"
|
|
57
|
+
)
|
|
58
|
+
print(series.to_dict())
|
|
59
|
+
|
|
60
|
+
# Exact sharp constant under the declared Ma–Minda assumptions.
|
|
61
|
+
result = fekete_szego("exponential", mu=0)
|
|
62
|
+
assert str(result.value) == "3/4"
|
|
63
|
+
print(result.to_dict())
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Custom normalized generators use preconstructed SymPy expressions; formula
|
|
67
|
+
strings are deliberately rejected rather than passed to an eval-based parser:
|
|
68
|
+
|
|
69
|
+
```python
|
|
70
|
+
custom = Generator(
|
|
71
|
+
key="custom",
|
|
72
|
+
name="Example",
|
|
73
|
+
expression=1 + 2*z + 3*z**2,
|
|
74
|
+
citation="User supplied",
|
|
75
|
+
)
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Computations are not restricted to the built-in catalog. Analytic admissibility
|
|
79
|
+
of custom input remains an explicit caller assumption, and undeclared free
|
|
80
|
+
symbols are rejected.
|
|
81
|
+
|
|
82
|
+
## Command line
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
gfa generators
|
|
86
|
+
gfa coefficients sine --order 5
|
|
87
|
+
gfa fekete-szego exponential --mu 1/2
|
|
88
|
+
|
|
89
|
+
# Re-check the witness z=-3/4 for f(z)=z+z².
|
|
90
|
+
gfa verify-counterexample --coefficients "1" --point=-0.75,0
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
The longer command name, `geometric-function-atlas`, is also supported. Add
|
|
94
|
+
`--json` to any command when machine-readable output is useful.
|
|
95
|
+
|
|
96
|
+
`--mu` accepts an exact signed integer or `integer/integer` fraction. Decimal
|
|
97
|
+
and scientific notation are rejected so untrusted short inputs cannot trigger
|
|
98
|
+
unbounded symbolic integer construction.
|
|
99
|
+
|
|
100
|
+
See `docs/WEB_PARITY.md` for the website-to-package checklist,
|
|
101
|
+
`docs/PROVENANCE.md` for claim semantics, and `docs/ROADMAP.md` for the
|
|
102
|
+
incremental implementation path.
|
|
103
|
+
The versioned result envelope, verification checks, failure states, and CLI
|
|
104
|
+
exit codes are specified in `docs/RESULT_CONTRACT.md`.
|
|
105
|
+
|
|
106
|
+
## Development
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
uv sync --extra test
|
|
110
|
+
uv run pytest
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## Scientific status
|
|
114
|
+
|
|
115
|
+
Every result reports its method and evidence status. Numerical screens are never presented as proofs, computational certification is distinct from literature novelty, and bibliographic review remains a separate human process.
|
|
116
|
+
|
|
117
|
+
## License
|
|
118
|
+
|
|
119
|
+
MIT
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Install Geometric Function Atlas
|
|
2
|
+
|
|
3
|
+
You do **not** need Python. The installer obtains `uv`, Python 3.12, and all
|
|
4
|
+
package dependencies, then installs the `gfa` command in an isolated environment.
|
|
5
|
+
|
|
6
|
+
## macOS and Linux
|
|
7
|
+
|
|
8
|
+
```bash
|
|
9
|
+
curl -LsSf https://raw.githubusercontent.com/Prasanna28Devadiga/geometric-function-atlas/main/scripts/install.sh | sh
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
## Windows PowerShell
|
|
13
|
+
|
|
14
|
+
```powershell
|
|
15
|
+
irm https://raw.githubusercontent.com/Prasanna28Devadiga/geometric-function-atlas/main/scripts/install.ps1 | iex
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Restart the terminal once, then check the installation:
|
|
19
|
+
|
|
20
|
+
```text
|
|
21
|
+
gfa --version
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Try a calculation:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
gfa coefficients sine --order 5
|
|
28
|
+
gfa fekete-szego exponential --mu 1/2
|
|
29
|
+
gfa verify-counterexample --coefficients "1" --point=-0.75,0
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Already have uv?
|
|
33
|
+
|
|
34
|
+
Until the package is published on PyPI, install the GitHub release wheel directly:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
uv tool install --managed-python --python 3.12 https://github.com/Prasanna28Devadiga/geometric-function-atlas/releases/download/v0.1.1/geometric_function_atlas-0.1.1-py3-none-any.whl
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Remove
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
uv tool uninstall geometric-function-atlas
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
To upgrade after a later GitHub release, rerun the installer shown above. The
|
|
47
|
+
installer always performs a forced replacement and verifies `gfa --version`.
|
|
48
|
+
|
|
49
|
+
## Maintainer and local-wheel installation
|
|
50
|
+
|
|
51
|
+
The checked-in installers are permanent user-facing installation entry points,
|
|
52
|
+
not release-time helper scripts. Maintainers can exercise the same path against a
|
|
53
|
+
local wheel:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
GFA_PACKAGE_SPEC=dist/geometric_function_atlas-0.1.1-py3-none-any.whl sh scripts/install.sh
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
PowerShell:
|
|
60
|
+
|
|
61
|
+
```powershell
|
|
62
|
+
$env:GFA_PACKAGE_SPEC = "dist/geometric_function_atlas-0.1.1-py3-none-any.whl"
|
|
63
|
+
.\scripts\install.ps1
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
The project does not modify or depend on an existing Python installation. No
|
|
67
|
+
administrator privileges, `pip`, virtual-environment activation, snapshot hash,
|
|
68
|
+
or internal database path is required.
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Evidence and provenance policy
|
|
2
|
+
|
|
3
|
+
## Claim boundary
|
|
4
|
+
|
|
5
|
+
A returned number is not enough. Structured result objects and CLI records identify:
|
|
6
|
+
|
|
7
|
+
1. the canonical mathematical problem;
|
|
8
|
+
2. exact inputs and formulas;
|
|
9
|
+
3. the algorithm or theorem used;
|
|
10
|
+
4. declared assumptions;
|
|
11
|
+
5. evidence status;
|
|
12
|
+
6. source references;
|
|
13
|
+
7. package and artifact versions;
|
|
14
|
+
8. whether any literature-novelty claim is being made.
|
|
15
|
+
|
|
16
|
+
The versioned schema and fail-closed check semantics are specified in
|
|
17
|
+
`docs/RESULT_CONTRACT.md`; the shipped JSON schemas are under
|
|
18
|
+
`src/geometric_function_atlas/schema/`.
|
|
19
|
+
|
|
20
|
+
Low-level exact helpers may return bare SymPy expressions or tuples for use in
|
|
21
|
+
other symbolic programs. Their structured counterparts (`generator_series`,
|
|
22
|
+
the theorem result objects, and CLI JSON) carry the full record above.
|
|
23
|
+
|
|
24
|
+
## Evidence statuses
|
|
25
|
+
|
|
26
|
+
The package will use explicit, non-overlapping statuses:
|
|
27
|
+
|
|
28
|
+
- `screened`: numerical evidence only;
|
|
29
|
+
- `certified_enclosure`: a machine-checkable interval containing the sharp value;
|
|
30
|
+
- `proven_exact_under_declared_assumptions`: exact theorem or certificate with stated assumptions;
|
|
31
|
+
- `disproven`: certified counterexample or contradiction to the computational proposition;
|
|
32
|
+
- `unresolved`: no conclusive computation.
|
|
33
|
+
|
|
34
|
+
Literature reconciliation is a separate taxonomy. A computationally proven result may be known, a candidate improvement, absent from the indexed corpus, or still under human review. “No indexed match” is never emitted as “novel.”
|
|
35
|
+
|
|
36
|
+
## Built-in and custom generators
|
|
37
|
+
|
|
38
|
+
Built-in formulas and citations are versioned package data. Exact coefficient
|
|
39
|
+
operations also accept custom generators as preconstructed SymPy expressions.
|
|
40
|
+
String expressions are rejected because SymPy's general string parser is
|
|
41
|
+
eval-based; undeclared free symbols are rejected as well. For a custom generator,
|
|
42
|
+
the package checks only the algebraic preconditions documented by the operation;
|
|
43
|
+
it does not silently certify all analytic Ma–Minda admissibility hypotheses.
|
|
44
|
+
Structured records mark this input as `provenance: "caller_supplied"` and retain
|
|
45
|
+
the caller-supplied source/fixture identity explicitly; they never relabel it as
|
|
46
|
+
the built-in catalog.
|
|
47
|
+
|
|
48
|
+
CLI rational parameters use a bounded signed-integer or `integer/integer`
|
|
49
|
+
grammar. Exponent notation is intentionally unsupported, and rational
|
|
50
|
+
components are capped before symbolic arithmetic begins.
|
|
51
|
+
|
|
52
|
+
## Migration from the research artifact
|
|
53
|
+
|
|
54
|
+
The original registry repository is treated as a research artifact and source of candidate algorithms/data. Code is not copied wholesale. Each migrated operation receives:
|
|
55
|
+
|
|
56
|
+
- a minimal public interface;
|
|
57
|
+
- independent anchor tests;
|
|
58
|
+
- explicit path and data injection;
|
|
59
|
+
- no Flask, deployment, OCR, or private-review dependency;
|
|
60
|
+
- a provenance note naming the originating artifact and the audit performed;
|
|
61
|
+
- clean wheel/sdist installation verification.
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Releasing `geometric-function-atlas`
|
|
2
|
+
|
|
3
|
+
This is the maintained release procedure. The first GitHub software release is
|
|
4
|
+
separate from PyPI publication and from versioned registry-data snapshots.
|
|
5
|
+
|
|
6
|
+
## Free-tier GitHub policy
|
|
7
|
+
|
|
8
|
+
The repository is public. CI uses only standard `ubuntu-latest` and
|
|
9
|
+
`windows-latest` GitHub-hosted runners, which GitHub documents as free for public
|
|
10
|
+
repositories. The workflow does not use larger runners, Actions artifact uploads,
|
|
11
|
+
or persistent Actions caches. Release files are attached directly to the GitHub
|
|
12
|
+
release; GitHub documents no total release-size or bandwidth limit, subject to a
|
|
13
|
+
2 GiB limit per asset.
|
|
14
|
+
|
|
15
|
+
Do not add larger runners, paid products, or persistent Actions storage without
|
|
16
|
+
explicit approval from the repository owner.
|
|
17
|
+
|
|
18
|
+
## Software release
|
|
19
|
+
|
|
20
|
+
1. Start from a clean `main` checkout.
|
|
21
|
+
2. Update `src/geometric_function_atlas/version.py`, `CITATION.cff`, and
|
|
22
|
+
`CHANGELOG.md` together.
|
|
23
|
+
3. Run the local gate:
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
uv sync --extra test --extra build --locked
|
|
27
|
+
uv run --extra test python -m ruff check src tests scripts
|
|
28
|
+
uv run --extra test python -m mypy src --ignore-missing-imports
|
|
29
|
+
uv run --extra test python -W error -m pytest -q
|
|
30
|
+
rm -rf dist build
|
|
31
|
+
uv run --extra build python -m build
|
|
32
|
+
uv run --extra build python -m twine check dist/*
|
|
33
|
+
uv run python scripts/check_distribution.py dist
|
|
34
|
+
uv run python scripts/check_clean_install.py \
|
|
35
|
+
dist/geometric_function_atlas-0.1.1-py3-none-any.whl
|
|
36
|
+
uv run python scripts/check_uv_tool_install.py \
|
|
37
|
+
dist/geometric_function_atlas-0.1.1-py3-none-any.whl --python 3.12
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
4. Obtain an independent review of the exact diff.
|
|
41
|
+
5. Push a branch, open a pull request, and wait for every Linux and Windows CI
|
|
42
|
+
job to pass.
|
|
43
|
+
6. Merge to `main` and verify the merge commit is green.
|
|
44
|
+
7. Build once more from the clean merge commit. Record SHA-256 sums.
|
|
45
|
+
8. Create tag `vX.Y.Z` and a GitHub release with the wheel, sdist, checksums, and
|
|
46
|
+
notes from `CHANGELOG.md`.
|
|
47
|
+
9. Download the published assets and rerun the clean-install check against the
|
|
48
|
+
downloaded wheel.
|
|
49
|
+
10. Run both public installer commands and verify `gfa --version`.
|
|
50
|
+
|
|
51
|
+
There is deliberately no tag-triggered PyPI workflow. PyPI Trusted Publishing
|
|
52
|
+
will be configured and reviewed as a separate future step. No PyPI token belongs
|
|
53
|
+
in this repository.
|
|
54
|
+
|
|
55
|
+
## Maintained scripts
|
|
56
|
+
|
|
57
|
+
The `scripts/` directory contains only permanent entry points:
|
|
58
|
+
|
|
59
|
+
- `install.sh` and `install.ps1`: supported end-user installers;
|
|
60
|
+
- `check_distribution.py`: wheel/sdist content contract;
|
|
61
|
+
- `check_clean_install.py`: clean wheel API/CLI test;
|
|
62
|
+
- `check_uv_tool_install.py`: fresh uv-managed-Python installation test.
|
|
63
|
+
|
|
64
|
+
Do not commit ad hoc migration, profiling, review, or release-upload scripts.
|
|
65
|
+
|
|
66
|
+
## Registry-data releases
|
|
67
|
+
|
|
68
|
+
Registry snapshots are not bundled into the wheel. Each snapshot is versioned
|
|
69
|
+
independently and needs a consistent SQLite file, schema dump, manifest,
|
|
70
|
+
checksums, population definitions, and successful SQLite integrity checks.
|