RobustCVCTheoremProverFactory.java
package edu.udel.cis.vsl.sarl.prove.cvc;
import edu.udel.cis.vsl.sarl.IF.config.ProverInfo;
import edu.udel.cis.vsl.sarl.IF.config.ProverInfo.ProverKind;
import edu.udel.cis.vsl.sarl.IF.expr.BooleanExpression;
import edu.udel.cis.vsl.sarl.preuniverse.IF.PreUniverse;
import edu.udel.cis.vsl.sarl.prove.IF.ProverFunctionInterpretation;
import edu.udel.cis.vsl.sarl.prove.IF.TheoremProver;
import edu.udel.cis.vsl.sarl.prove.IF.TheoremProverFactory;
/**
* Factory for producing new instances of {@link RobustCVCTheoremProver}.
*
* @author siegel
*
*/
public class RobustCVCTheoremProverFactory implements TheoremProverFactory {
/**
* The symbolic universe used for managing symbolic expressions. Initialized
* by constructor and never changes.
*/
private PreUniverse universe;
/**
* Information object for underlying prover, which must have
* {@link ProverKind} either {@link ProverKind#CVC3} or
* {@link ProverKind#CVC4}
*/
private ProverInfo prover;
/**
* Constructs new CVC theorem prover factory with the given symbolic
* universe.
*
* @param universe
* symbolic universe used to manage symbolic expressions
* @param prover
* information object for underlying prover, which must have
* {@link ProverKind} either {@link ProverKind#CVC3} or
* {@link ProverKind#CVC4}
*/
public RobustCVCTheoremProverFactory(PreUniverse universe,
ProverInfo prover) {
this.universe = universe;
this.prover = prover;
}
@Override
public TheoremProver newProver(BooleanExpression context) {
return new RobustCVCTheoremProver(universe, context, prover,
new ProverFunctionInterpretation[0]);
}
@Override
public TheoremProver newProver(BooleanExpression context,
ProverFunctionInterpretation[] logicFunctions) {
return new RobustCVCTheoremProver(universe, context, prover,
logicFunctions);
}
}