Catalog PyPI
Back to packageRELEASE DETAILS

4.10.1

PyPI

AeonLang

Language with Refinement Types

languageliquidprogrammingtypes
Published23 Sept 2026
Direct dependencies27
Transitive dependenciesNot calculated

README

Version 4.10.1 documentation

Aeon

Aeon is a statically-typed programming language with native support for Liquid Types (refinement types), developed at LASIGE, University of Lisbon.

Unlike LiquidHaskell or LiquidJava, where refinement types are bolted onto an existing language, Aeon was designed from the ground up around them. The type system lets you express precise properties of values directly in types — for example, "an integer greater than zero" — and the compiler proves these properties hold using the Z3 SMT solver.

Beyond refinement types, Aeon also offers:

  • Python FFI — call any Python function natively, giving you access to the full Python ecosystem.
  • Program synthesis — leave ?holes in your program and let Aeon fill them in using genetic programming, enumerative search, or LLM-backed synthesis.
  • Export to Python — --export=fun prints a stand-alone, pure-Python version of any function (with its dependencies and FFI bundled, and holes synthesized first).
  • A growing standard library — modules for List, Math, Array, Image, and more.

Aeon is implemented as a Python interpreter and is under active development.

📖 Documentation: https://alcides.github.io/aeon

Installation

Aeon is distributed on PyPI and can be run directly via uvx:

uvx --from aeonlang aeon [file.ae]

Examples

Refinement Types

Refinement types let you attach predicates to base types. Here, sqrt is declared to accept only positive integers — passing a negative value is a compile-time error, not a runtime crash. The native keyword bridges to Python:

def sqrt : (i: {x:Int | x > 0}) -> Float := native "__import__('math').sqrt";

def main (i:Int) : Unit :=
    print (sqrt (-25))   # type-checking error: -25 does not satisfy x > 0

Program Synthesis

Aeon can synthesize code to satisfy a refinement specification. Mark the body with ?hole and Aeon will search for an implementation that meets the type:

@minimize_int(deposit)
def deposit : {d:Int | d > 0 && d * 21900 >= 10000000} := ?hole;

Run with uv run python -m aeon --budget 10 -s gp file.ae to synthesize the minimum annual deposit that reaches a $10,000 goal in 20 years at 1% interest.

More examples — including image processing, machine learning, and probabilistic programming — live in the examples/ directory.

Authors

Aeon has been developed at LASIGE, University of Lisbon by:

Publications

Let us know if your paper uses Aeon, to list it here.

Citation

Please cite as:

Fonseca, Alcides, Paulo Santos, and Sara Silva. "The usability argument for refinement typed genetic programming." International Conference on Parallel Problem Solving from Nature. Cham: Springer International Publishing, 2020.

BibTeX:

@inproceedings{fonseca2020usability,
  title={The usability argument for refinement typed genetic programming},
  author={Fonseca, Alcides and Santos, Paulo and Silva, Sara},
  booktitle={International Conference on Parallel Problem Solving from Nature},
  pages={18--32},
  year={2020},
  organization={Springer}
}

Acknowledgements

This work was supported by Fundação para a Ciência e Tecnologia (FCT) through:

And by Lisboa2020, Compete2020 and FEDER through:

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Declared dependencies 27

Native requirements
27 direct targetsNot calculated transitive count
Package / targetRequirementRelationship
lark
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<4,>3.10",
  "evaluation": "NOT_EVALUATED"
}
lark==1.3.1runtime
loguru
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<4,>3.10",
  "evaluation": "NOT_EVALUATED"
}
logururuntime
geneticengine
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<4,>3.10",
  "evaluation": "NOT_EVALUATED"
}
geneticengine==0.8.10.post1runtime
multiprocess
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<4,>3.10",
  "evaluation": "NOT_EVALUATED"
}
multiprocess==0.70.19runtime
numpy
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<4,>3.10",
  "evaluation": "NOT_EVALUATED"
}
numpy==2.2.6runtime
pandas
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<4,>3.10",
  "evaluation": "NOT_EVALUATED"
}
pandasruntime
ollama
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<4,>3.10",
  "evaluation": "NOT_EVALUATED"
}
ollamaruntime
pathos
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<4,>3.10",
  "evaluation": "NOT_EVALUATED"
}
pathos==0.3.5runtime
pillow
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<4,>3.10",
  "evaluation": "NOT_EVALUATED"
}
pillowruntime
psb2
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<4,>3.10",
  "evaluation": "NOT_EVALUATED"
}
psb2runtime
pydantic
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<4,>3.10",
  "evaluation": "NOT_EVALUATED"
}
pydantic==2.13.5runtime
pygls
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<4,>3.10",
  "evaluation": "NOT_EVALUATED"
}
pygls==2.1.1runtime
requests
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<4,>3.10",
  "evaluation": "NOT_EVALUATED"
}
requestsruntime
types-requests
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<4,>3.10",
  "evaluation": "NOT_EVALUATED"
}
types-requestsruntime
scikit-image
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<4,>3.10",
  "evaluation": "NOT_EVALUATED"
}
scikit-imageruntime
scikit-learn
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<4,>3.10",
  "evaluation": "NOT_EVALUATED"
}
scikit-learnruntime
sympy
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<4,>3.10",
  "evaluation": "NOT_EVALUATED"
}
sympyruntime
textdistance
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<4,>3.10",
  "evaluation": "NOT_EVALUATED"
}
textdistanceruntime
cvc5
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<4,>3.10",
  "evaluation": "NOT_EVALUATED"
}
cvc5>=1.1runtime
z3-solver
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<4,>3.10",
  "evaluation": "NOT_EVALUATED"
}
z3-solver==5.1.0.0runtime
zstandard
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<4,>3.10",
  "evaluation": "NOT_EVALUATED"
}
zstandard==0.25.0runtime
zss
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<4,>3.10",
  "evaluation": "NOT_EVALUATED"
}
zssruntime
llvmlite
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "<4,>3.10",
  "evaluation": "NOT_EVALUATED"
}
llvmliteruntime
pytest
Environment
{
  "extras": "",
  "marker": "extra == \"tests\"",
  "requires_python": "<4,>3.10",
  "evaluation": "NOT_EVALUATED"
}
pytest==9.1.1; extra == "tests"runtime
pytest-beartype
Environment
{
  "extras": "",
  "marker": "extra == \"tests\"",
  "requires_python": "<4,>3.10",
  "evaluation": "NOT_EVALUATED"
}
pytest-beartype; extra == "tests"runtime
nevergrad
Environment
{
  "extras": "",
  "marker": "extra == \"synthesis-ng\"",
  "requires_python": "<4,>3.10",
  "evaluation": "NOT_EVALUATED"
}
nevergrad; extra == "synthesis-ng"runtime
ortools
Environment
{
  "extras": "",
  "marker": "extra == \"synthesis-ortools\"",
  "requires_python": "<4,>3.10",
  "evaluation": "NOT_EVALUATED"
}
ortools; extra == "synthesis-ortools"runtime

Distribution files

2 collected
aeonlang-4.10.1-py3-none-any.whl

bdist_wheel · 687.81 KB · Python py3

Source file
aeonlang-4.10.1.tar.gz

sdist · 580.49 KB · Python source

Source file

Repository

PENDING
alcides/aeon

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 20:25 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package_version:3486f8e95559f6954ee57f7047e660e31728a76e4e4cb20daea71f9fe62b75b3

Other collected versions

View all collected versions →