presented at event PLDI '13: ACM SIGPLAN Conference on Programming Language Design and Implementation Conference