// minimized version of LH #1371 fixpoint "--rewrite" data Thing 0 = [ | Op { left : Thing, right : Thing} | N { eNum : int} ] define killer (a1 : Thing, a2 : Thing) : Thing = { if (is$N a1) then (if (is$N a2) then (a1) else (Op (left a2) (killer (N (eNum a1)) (right a2)))) else (Op (left a1) (killer (right a1) a2)) } constant killer : (func(0 , [Thing; Thing; Thing])) bind 1 e2 : {v : Thing | true } bind 2 tmp : {v : Thing | v = (killer (N 666) e2) } expand [1 : True] constraint: env [1;2] lhs {VV : Thing | [] } rhs {VV : Thing | [1 + 2 = 3]} id 1 tag []