Skip to main content

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:

Metadata

Release files for AeonLang 4.10.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for AeonLang 4.10.1
File Size Uploaded
aeonlang-4.10.1.tar.gz 594.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for AeonLang 4.10.1
File Interpreter ABI Platform
aeonlang-4.10.1-py3-none-any.whl Python 3 none any Details

Total release size: 1.3 MB

Release files / aeonlang-4.10.1.tar.gz

Download URL aeonlang-4.10.1.tar.gz
Size 594.4 kB
Tags Source
SHA-256 checksum
How to use checksums
6d895930b19f1cf997de932e890b72fc63d7ef4dfb5f13e8712f0a5ab7e5cda2
BLAKE2b-256 checksum
How to use checksums
e38f9deaf5ce0cb6de2de7ed4f99ffb970250aea3e878d3f3015580c035f9ce0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.18 {"installer":{"name":"uv","version":"0.12.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / aeonlang-4.10.1-py3-none-any.whl

Download URL aeonlang-4.10.1-py3-none-any.whl
Size 704.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
00e71235e168bddab169f2d5b989cb297ea53d305f089d8cfb95576be4e4b5fb
BLAKE2b-256 checksum
How to use checksums
da492b4975a4a4ce1405566b1d8761a550cf231db81a6b9a9c1213f76fd4a268
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.12.18 {"installer":{"name":"uv","version":"0.12.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page