# mypy: disable-error-code="empty-body"
"""
Fibonacci numbers example
=========================
"""
'\nFibonacci numbers example\n=========================\n'
from __future__ import annotations
from egglog import *
@function
def fib(x: i64Like) -> i64: ...
f0, f1, x = vars_("f0 f1 x", i64)
check(
    eq(fib(i64(7))).to(i64(21)),
    ruleset(
        rule(
            eq(f0).to(fib(x)),
            eq(f1).to(fib(x + 1)),
        ).then(set_(fib(x + 2)).to(f0 + f1)),
    )
    * 7,
    set_(fib(0)).to(i64(1)),
    set_(fib(1)).to(i64(1)),
)