ConstDecl(j,N(1.0),Call(Fun(Some(silly),i,If(Binary(Eq,Var(i),N(0.0)),Var(j),Binary(Plus,Var(j),Call(Var(silly),Binary(Plus,Var(i),Unary(Neg,N(1.0))))))),N(3.0)))
--> Call(Fun(Some(silly),i,If(Binary(Eq,Var(i),N(0.0)),N(1.0),Binary(Plus,N(1.0),Call(Var(silly),Binary(Plus,Var(i),Unary(Neg,N(1.0))))))),N(3.0))
--> If(Binary(Eq,N(3.0),N(0.0)),N(1.0),Binary(Plus,N(1.0),Call(Fun(Some(silly),i,If(Binary(Eq,Var(i),N(0.0)),N(1.0),Binary(Plus,N(1.0),Call(Var(silly),Binary(Plus,Var(i),Unary(Neg,N(1.0))))))),Binary(Plus,N(3.0),Unary(Neg,N(1.0))))))
--> If(B(false),N(1.0),Binary(Plus,N(1.0),Call(Fun(Some(silly),i,If(Binary(Eq,Var(i),N(0.0)),N(1.0),Binary(Plus,N(1.0),Call(Var(silly),Binary(Plus,Var(i),Unary(Neg,N(1.0))))))),Binary(Plus,N(3.0),Unary(Neg,N(1.0))))))
--> Binary(Plus,N(1.0),Call(Fun(Some(silly),i,If(Binary(Eq,Var(i),N(0.0)),N(1.0),Binary(Plus,N(1.0),Call(Var(silly),Binary(Plus,Var(i),Unary(Neg,N(1.0))))))),Binary(Plus,N(3.0),Unary(Neg,N(1.0)))))
--> Binary(Plus,N(1.0),Call(Fun(Some(silly),i,If(Binary(Eq,Var(i),N(0.0)),N(1.0),Binary(Plus,N(1.0),Call(Var(silly),Binary(Plus,Var(i),Unary(Neg,N(1.0))))))),Binary(Plus,N(3.0),N(-1.0))))
--> Binary(Plus,N(1.0),Call(Fun(Some(silly),i,If(Binary(Eq,Var(i),N(0.0)),N(1.0),Binary(Plus,N(1.0),Call(Var(silly),Binary(Plus,Var(i),Unary(Neg,N(1.0))))))),N(2.0)))
--> Binary(Plus,N(1.0),If(Binary(Eq,N(2.0),N(0.0)),N(1.0),Binary(Plus,N(1.0),Call(Fun(Some(silly),i,If(Binary(Eq,Var(i),N(0.0)),N(1.0),Binary(Plus,N(1.0),Call(Var(silly),Binary(Plus,Var(i),Unary(Neg,N(1.0))))))),Binary(Plus,N(2.0),Unary(Neg,N(1.0)))))))
--> Binary(Plus,N(1.0),If(B(false),N(1.0),Binary(Plus,N(1.0),Call(Fun(Some(silly),i,If(Binary(Eq,Var(i),N(0.0)),N(1.0),Binary(Plus,N(1.0),Call(Var(silly),Binary(Plus,Var(i),Unary(Neg,N(1.0))))))),Binary(Plus,N(2.0),Unary(Neg,N(1.0)))))))
--> Binary(Plus,N(1.0),Binary(Plus,N(1.0),Call(Fun(Some(silly),i,If(Binary(Eq,Var(i),N(0.0)),N(1.0),Binary(Plus,N(1.0),Call(Var(silly),Binary(Plus,Var(i),Unary(Neg,N(1.0))))))),Binary(Plus,N(2.0),Unary(Neg,N(1.0))))))
--> Binary(Plus,N(1.0),Binary(Plus,N(1.0),Call(Fun(Some(silly),i,If(Binary(Eq,Var(i),N(0.0)),N(1.0),Binary(Plus,N(1.0),Call(Var(silly),Binary(Plus,Var(i),Unary(Neg,N(1.0))))))),Binary(Plus,N(2.0),N(-1.0)))))
--> Binary(Plus,N(1.0),Binary(Plus,N(1.0),Call(Fun(Some(silly),i,If(Binary(Eq,Var(i),N(0.0)),N(1.0),Binary(Plus,N(1.0),Call(Var(silly),Binary(Plus,Var(i),Unary(Neg,N(1.0))))))),N(1.0))))
--> Binary(Plus,N(1.0),Binary(Plus,N(1.0),If(Binary(Eq,N(1.0),N(0.0)),N(1.0),Binary(Plus,N(1.0),Call(Fun(Some(silly),i,If(Binary(Eq,Var(i),N(0.0)),N(1.0),Binary(Plus,N(1.0),Call(Var(silly),Binary(Plus,Var(i),Unary(Neg,N(1.0))))))),Binary(Plus,N(1.0),Unary(Neg,N(1.0))))))))
--> Binary(Plus,N(1.0),Binary(Plus,N(1.0),If(B(false),N(1.0),Binary(Plus,N(1.0),Call(Fun(Some(silly),i,If(Binary(Eq,Var(i),N(0.0)),N(1.0),Binary(Plus,N(1.0),Call(Var(silly),Binary(Plus,Var(i),Unary(Neg,N(1.0))))))),Binary(Plus,N(1.0),Unary(Neg,N(1.0))))))))
--> Binary(Plus,N(1.0),Binary(Plus,N(1.0),Binary(Plus,N(1.0),Call(Fun(Some(silly),i,If(Binary(Eq,Var(i),N(0.0)),N(1.0),Binary(Plus,N(1.0),Call(Var(silly),Binary(Plus,Var(i),Unary(Neg,N(1.0))))))),Binary(Plus,N(1.0),Unary(Neg,N(1.0)))))))
--> Binary(Plus,N(1.0),Binary(Plus,N(1.0),Binary(Plus,N(1.0),Call(Fun(Some(silly),i,If(Binary(Eq,Var(i),N(0.0)),N(1.0),Binary(Plus,N(1.0),Call(Var(silly),Binary(Plus,Var(i),Unary(Neg,N(1.0))))))),Binary(Plus,N(1.0),N(-1.0))))))
--> Binary(Plus,N(1.0),Binary(Plus,N(1.0),Binary(Plus,N(1.0),Call(Fun(Some(silly),i,If(Binary(Eq,Var(i),N(0.0)),N(1.0),Binary(Plus,N(1.0),Call(Var(silly),Binary(Plus,Var(i),Unary(Neg,N(1.0))))))),N(0.0)))))
--> Binary(Plus,N(1.0),Binary(Plus,N(1.0),Binary(Plus,N(1.0),If(Binary(Eq,N(0.0),N(0.0)),N(1.0),Binary(Plus,N(1.0),Call(Fun(Some(silly),i,If(Binary(Eq,Var(i),N(0.0)),N(1.0),Binary(Plus,N(1.0),Call(Var(silly),Binary(Plus,Var(i),Unary(Neg,N(1.0))))))),Binary(Plus,N(0.0),Unary(Neg,N(1.0)))))))))
--> Binary(Plus,N(1.0),Binary(Plus,N(1.0),Binary(Plus,N(1.0),If(B(true),N(1.0),Binary(Plus,N(1.0),Call(Fun(Some(silly),i,If(Binary(Eq,Var(i),N(0.0)),N(1.0),Binary(Plus,N(1.0),Call(Var(silly),Binary(Plus,Var(i),Unary(Neg,N(1.0))))))),Binary(Plus,N(0.0),Unary(Neg,N(1.0)))))))))
--> Binary(Plus,N(1.0),Binary(Plus,N(1.0),Binary(Plus,N(1.0),N(1.0))))
--> Binary(Plus,N(1.0),Binary(Plus,N(1.0),N(2.0)))
--> Binary(Plus,N(1.0),N(3.0))
--> N(4.0)