read sections on argument synthesis and unification. TODO: how does it work? and what exactly can it infer?