Compiling temporal logic specifications into observers