
package uk.ac.man.cs.lethe.internal.reasoning

import uk.ac.man.cs.lethe.internal.fol.datatypes._

abstract class Prover[A] { 
  def inconsistent(f: A): Boolean 
  def tautology(f: A): Boolean 
  def follows(f1:A, f2: A): Boolean 
  def steps: Int // Returns the number of steps the last operation took
}



abstract class FOLProver extends Prover[Formula]{ 
  override def tautology(formula: Formula) = inconsistent(new Negation(formula))
  override def follows(formula1: Formula, formula2: Formula) = inconsistent(new Conjunction(Set(formula1, new Negation(formula2))))
}

