fixpoint "--rewrite"
data Peano 0 = [
| Zero {}
| S {prev : Peano}
]
constant even : (func(0, [Peano; bool]))
define even (x:Peano) : bool = {
if (is$Zero x) then true else
~ (even (prev n))
}
match is$Zero Zero = (true)
match is$Zero S x = (false)
match is$S Zero = (false)
match is$S S x = (true)
match prev S x = (x)
bind 0 n : {v: Peano | even v && is$S v && prev v == d }
bind 1 d : {v: Peano | true }
bind 2 z : {v: Peano | is$Zero v && v == d }
constraint:
env [0; 1; 2]
lhs {v : bool | true }
rhs {v : bool | false }
id 1 tag []
expand [1 : True]