MSVL: a typed language for temporal logic programming