fixpoint "--rewrite"
data Field 1 = [
| FBool {}
| FInt {}
]
constant add : (func(0, [int; int; int]))
constant proj : (func(1, [Field @(0); @(0); @(0)]))
define add (x:int, y:int): int = {
x + y
}
define proj (lq1 : (Field a), lq2 : a): a = {
if (is$FInt lq1)
then (coerce (int ~ a) (add (coerce (a ~ int) lq2) 1))
else (coerce (bool ~ a) (not ((coerce (a ~ bool) lq2))))
}
match is$FInt FInt = (true)
constraint:
env []
lhs {v : int | true }
rhs {v : int | proj FInt 10 == 11 }
id 1 tag []
expand [1 : True]