.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "auto_examples/fib.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end ` to download the full example code .. rst-class:: sphx-glr-example-title .. _sphx_glr_auto_examples_fib.py: Fibonacci numbers example ========================= .. GENERATED FROM PYTHON SOURCE LINES 5-29 .. raw:: html
%3 outer_cluster_i64-10912160959110460649 cluster_i64-10912160959110460649 outer_cluster_i64-16783941965674463102 cluster_i64-16783941965674463102 outer_cluster_fib-4208978898528913939-value cluster_fib-4208978898528913939-value outer_cluster_fib-11743562013128004906-value cluster_fib-11743562013128004906-value outer_cluster_i64-4208978898528913939 cluster_i64-4208978898528913939 outer_cluster_i64-0 cluster_i64-0 outer_cluster_fib-10912160959110460649-value cluster_fib-10912160959110460649-value outer_cluster_fib-16783941965674463102-value cluster_fib-16783941965674463102-value outer_cluster_fib-0-value cluster_fib-0-value outer_cluster_i64-5040379952546458196 cluster_i64-5040379952546458196 outer_cluster_fib-10080759905092916392-value cluster_fib-10080759905092916392-value outer_cluster_i64-11743562013128004906 cluster_i64-11743562013128004906 outer_cluster_fib-5040379952546458196-value cluster_fib-5040379952546458196-value outer_cluster_i64-10080759905092916392 cluster_i64-10080759905092916392 outer_cluster_i64-5871781006564002453 cluster_i64-5871781006564002453 outer_cluster_fib-5871781006564002453-value cluster_fib-5871781006564002453-value outer_cluster_i64-17615343019692007359 cluster_i64-17615343019692007359 outer_cluster_fib-17615343019692007359-value cluster_fib-17615343019692007359-value fib-4208978898528913939:s->i64-4208978898528913939 fib-11743562013128004906:s->i64-11743562013128004906 fib-10912160959110460649:s->i64-10912160959110460649 fib-16783941965674463102:s->i64-16783941965674463102 fib-0:s->i64-0 fib-10080759905092916392:s->i64-10080759905092916392 fib-5040379952546458196:s->i64-5040379952546458196 fib-5871781006564002453:s->i64-5871781006564002453 fib-17615343019692007359:s->i64-17615343019692007359 i64-10912160959110460649 5 i64-16783941965674463102 6 fib-4208978898528913939 fib i64-4208978898528913939 7 fib-4208978898528913939-value 21 fib-11743562013128004906 fib i64-11743562013128004906 2 fib-11743562013128004906-value 2 i64-0 0 fib-10912160959110460649 fib fib-10912160959110460649-value 8 fib-16783941965674463102 fib fib-16783941965674463102-value 13 fib-0 fib fib-0-value 1 i64-5040379952546458196 4 fib-10080759905092916392 fib i64-10080759905092916392 8 fib-10080759905092916392-value 34 fib-5040379952546458196 fib fib-5040379952546458196-value 5 i64-5871781006564002453 1 fib-5871781006564002453 fib fib-5871781006564002453-value 1 i64-17615343019692007359 3 fib-17615343019692007359 fib fib-17615343019692007359-value 3


.. code-block:: Python from __future__ import annotations from egglog import * egraph = EGraph() @egraph.function def fib(x: i64Like) -> i64: # type: ignore[empty-body] ... f0, f1, x = vars_("f0 f1 x", i64) egraph.register( set_(fib(0)).to(i64(1)), set_(fib(1)).to(i64(1)), rule( eq(f0).to(fib(x)), eq(f1).to(fib(x + 1)), ).then(set_(fib(x + 2)).to(f0 + f1)), ) egraph.run(7) egraph.check(eq(fib(i64(7))).to(i64(21))) egraph .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 0.174 seconds) .. _sphx_glr_download_auto_examples_fib.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: fib.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: fib.py ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_