Una lógica temporal causal para la especificación de requisitos funcionales de un sistema distribuido