/**
* Author: Christoph Hillebold <c.hillebold@student.tugraz.at>
*/
package at.iaik.suraq.proof;
import java.io.Serializable;
import java.util.Hashtable;
import at.iaik.suraq.sexp.Token;
public class VeriTToken implements Serializable {
private static final long serialVersionUID = 1L;
/**
* A list of predefined Tokens that are allowed in the VeritProofNode.
*/
private static final Hashtable<String, Token> tokens = new Hashtable<String, Token>();
// Here are the predefined Tokens defined, that are allowed in the
// VeritProofNode.
public final static Token INPUT = VeriTToken.generate("input");
public final static Token AND = VeriTToken.generate("and");
public final static Token OR = VeriTToken.generate("or");
public final static Token RESOLUTION = VeriTToken.generate("resolution");
public final static Token EQ_TRANSITIVE = VeriTToken
.generate("eq_transitive");
public final static Token EQ_CONGRUENT = VeriTToken
.generate("eq_congruent");
public final static Token EQ_CONGRUENT_PRED = VeriTToken
.generate("eq_congruent_pred");
public final static Token EQ_REFLEXIVE = VeriTToken
.generate("eq_reflexive");
/**
* A token for leafs that mix transitivity and congruence
*/
public final static Token TRANS_CONGR = VeriTToken.generate("trans_congr");
/**
* returns an existing token with that name or returns a new one.
*
* @param name
* @return
*/
private static Token generate(String name) {
Token token = Token.generate(name);
VeriTToken.tokens.put(name, token);
return token;
}
/**
* returns an existing Token with that name. If the name does not exist, a
* new one is generated, but a message is sent to stderr!
*
* @param name
* @return
*/
public static Token parse(String name) {
if (VeriTToken.tokens.containsKey(name))
return VeriTToken.tokens.get(name);
System.err
.println("The Token '"
+ name
+ "' was not found in VeriTToken. You may want to add a field in class at.iaik.suraq.proof.VeriTToken");
return VeriTToken.generate(name);
}
}