A Goal Directed Theorem Prover