/** * Author: Georg Hofferek <georg.hofferek@iaik.tugraz.at> */ package at.iaik.suraq.sexp; /** * * This class bundles some important SExpression constants. * * @author Georg Hofferek <georg.hofferek@iaik.tugraz.at> * */ public class SExpressionConstants { public static final SExpression ARRAY_TYPE = SExpression .fromString("(Array Value Value)"); public static final Token VALUE_TYPE = (Token) SExpression .fromString("Value"); public static final Token CONTROL_TYPE = (Token) SExpression .fromString("Control"); public static final Token BOOL_TYPE = (Token) SExpression .fromString("Bool"); public static final Token DECLARE_FUN = (Token) SExpression .fromString("declare-fun"); public static final Token DEFINE_FUN = (Token) SExpression .fromString("define-fun"); public static final Token ASSERT = (Token) SExpression.fromString("assert"); public static final Token ASSERT_PARTITION = (Token) SExpression .fromString("assert-partition"); public static final SExpression SET_LOGIC_SURAQ = SExpression .fromString("(set-logic Suraq)"); public static final SExpression SET_LOGIC_QF_UF = SExpression .fromString("(set-logic QF_UF)"); public static final SExpression SET_LOGIC_QF_AUFLIA = SExpression .fromString("(set-logic QF_AUFLIA)"); public static final SExpression SET_OPTION_PRODUCE_INTERPOLANT = SExpression .fromString("(set-option :produce-interpolants true)"); public static final SExpression SET_OPTION_PROPAGATE_BOOLEANS_FALSE = SExpression .fromString("(set-option :propagate-booleans false)"); public static final SExpression SET_OPTION_PROPAGATE_VALUES_FALSE = SExpression .fromString("(set-option :propagate-values false)"); public static final SExpression SET_OPTION_PRODUCE_MODELS_TRUE = SExpression .fromString("(set-option :produce-models true)"); public static final SExpression DECLARE_SORT_VALUE = SExpression .fromString("(declare-sort " + SExpressionConstants.VALUE_TYPE + " 0)"); public static final SExpression CHECK_SAT = SExpression .fromString("(check-sat)"); public static final Token TRUE = (Token) SExpression.fromString("true"); public static final Token FALSE = (Token) SExpression.fromString("false"); public static final Token AND = (Token) SExpression.fromString("and"); public static final Token OR = (Token) SExpression.fromString("or"); public static final Token XOR = (Token) SExpression.fromString("xor"); public static final Token NOT = (Token) SExpression.fromString("not"); public static final Token DISTINCT = (Token) SExpression .fromString("distinct"); public static final Token EQUAL = (Token) SExpression.fromString("="); public static final Token ITE = (Token) SExpression.fromString("ite"); public static final Token IMPLIES = (Token) SExpression.fromString("=>"); public static final Token IMPLIES_ALT = (Token) SExpression .fromString("implies"); public static final Token FORALL = (Token) SExpression.fromString("forall"); public static final Token SELECT = (Token) SExpression.fromString("select"); public static final Token STORE = (Token) SExpression.fromString("store"); public static final Token NO_DEPENDENCE = (Token) SExpression .fromString(":no_dependence"); public static final SExpression EMPTY = SExpression.fromString("()"); public static final SExpression EXIT = SExpression.fromString("(exit)"); public static final SExpression GET_PROOF = SExpression .fromString("(get-proof)"); public static final SExpression AUTO_CONFIG_FALSE = SExpression .fromString("(set-option :auto-config false)"); public static final SExpression PROOF_MODE_2 = SExpression .fromString("(set-option :PROOF_MODE 2)"); public static final SExpression APPLY_TSEITIN = SExpression .fromString("(apply (then (! simplify :elim-and true) (! simplify :elim-and true) tseitin-cnf))"); public static final Token SIMPLIFY = (Token) SExpression .fromString("simplify"); public static final Token ELIM_AND = (Token) SExpression .fromString(":elim-and"); public static final Token UNSAT = (Token) SExpression.fromString("unsat"); public static final Token LET = (Token) SExpression.fromString("let"); public static final Token UNDEF = (Token) SExpression.fromString("undef"); public static final Token ASSERTED = (Token) SExpression .fromString("asserted"); public static final Token GOAL = (Token) SExpression.fromString("goal"); public static final Token GOALS = (Token) SExpression.fromString("goals"); public static final Token MODUS_PONENS = (Token) SExpression .fromString("mp"); public static final Token REFLEXIVITY = (Token) SExpression .fromString("reflexivity"); public static final Token SYMMETRY = (Token) SExpression.fromString("symm"); public static final Token TRANSITIVITY = (Token) SExpression .fromString("trans"); public static final Token TRANSITIVITY_STAR = (Token) SExpression .fromString("transitivity-star"); public static final Token MONOTONICITY = (Token) SExpression .fromString("monotonicity"); public static final Token QUANT_INTRO = (Token) SExpression .fromString("|quant-intro|"); public static final Token DISTRIBUTIVITY = (Token) SExpression .fromString("distributivity"); public static final Token AND_ELIM = (Token) SExpression .fromString("|and-elim|"); public static final Token NOT_OR_ELIM = (Token) SExpression .fromString("|not-or-elim|"); public static final Token REWRITE = (Token) SExpression .fromString("rewrite"); public static final Token REWRITE_STAR = (Token) SExpression .fromString("rewrite-star"); public static final Token PULL_QUANT = (Token) SExpression .fromString("|pull-quant|"); public static final Token PULL_QUANT_STAR = (Token) SExpression .fromString("|pull-quant-star|"); public static final Token PUSH_QUANT = (Token) SExpression .fromString("|push-quant|"); public static final Token ELIM_UNUSED_VARS = (Token) SExpression .fromString("|elim-unused-vars|"); public static final Token DER = (Token) SExpression.fromString("der"); public static final Token QUANT_INST = (Token) SExpression .fromString("|quant-inst|"); public static final Token HYPOTHESIS = (Token) SExpression .fromString("hypothesis"); public static final Token LEMMA = (Token) SExpression.fromString("lemma"); public static final Token UNIT_RESOLUTION = (Token) SExpression .fromString("|unit-resolution|"); public static final Token RESOLUTION = (Token) SExpression .fromString("resolution"); public static final Token IFF_TRUE = (Token) SExpression .fromString("|iff-true|"); public static final Token IFF_FALSE = (Token) SExpression .fromString("|iff-false|"); public static final Token COMMUTATIVITY = (Token) SExpression .fromString("commutativity"); public static final Token AXIOM = (Token) SExpression .fromString("|def-axiom|"); public static final Token INTRO = (Token) SExpression.fromString("intro"); public static final Token APPLY_DEF = (Token) SExpression .fromString("|apply-def|"); public static final Token IFF_OEQ = (Token) SExpression .fromString("iff-oeq"); public static final Token NNF_POS = (Token) SExpression .fromString("nnf-pos"); public static final Token NNF_NEG = (Token) SExpression .fromString("nnf-neg"); public static final Token NNF_STAR = (Token) SExpression .fromString("nnf-star"); public static final Token CNF_STAR = (Token) SExpression .fromString("cnf-star"); public static final Token SKOLEMIZE = (Token) SExpression .fromString("skolemize"); public static final Token MODUS_PONENS_OEQ = (Token) SExpression .fromString("modus-pones-oeq"); public static final Token TH_LEMMA = (Token) SExpression .fromString("th-lemma"); // added by chillebold on 06.07.2012 public static final Token SIMPLEPROOF = (Token) SExpression .fromString("proof"); public static final Token TRANS = (Token) SExpression.fromString("trans"); public static final Token MP = (Token) SExpression.fromString("mp"); public static final Token[] PROOF_TYPES = SExpressionConstants .createProofTypes(); /** * Creates the definition of proof types * * @return an <code>SExpression[]</code> declaring the proof types. */ public static Token[] createProofTypes() { // number modified by chillebold on 06.07.2012 Token[] proofTypes = new Token[40]; // see: z3_api.h proofTypes[0] = SExpressionConstants.UNDEF; proofTypes[1] = SExpressionConstants.TRUE; proofTypes[2] = SExpressionConstants.ASSERTED; proofTypes[3] = SExpressionConstants.GOAL; proofTypes[4] = SExpressionConstants.MODUS_PONENS; proofTypes[5] = SExpressionConstants.REFLEXIVITY; proofTypes[6] = SExpressionConstants.SYMMETRY; proofTypes[7] = SExpressionConstants.TRANSITIVITY; proofTypes[8] = SExpressionConstants.TRANSITIVITY_STAR; proofTypes[9] = SExpressionConstants.MONOTONICITY; proofTypes[10] = SExpressionConstants.QUANT_INTRO; proofTypes[11] = SExpressionConstants.DISTRIBUTIVITY; proofTypes[12] = SExpressionConstants.AND_ELIM; proofTypes[13] = SExpressionConstants.NOT_OR_ELIM; proofTypes[14] = SExpressionConstants.REWRITE; proofTypes[15] = SExpressionConstants.REWRITE_STAR; proofTypes[16] = SExpressionConstants.PULL_QUANT; proofTypes[17] = SExpressionConstants.PULL_QUANT_STAR; proofTypes[18] = SExpressionConstants.PUSH_QUANT; proofTypes[19] = SExpressionConstants.ELIM_UNUSED_VARS; proofTypes[20] = SExpressionConstants.DER; proofTypes[21] = SExpressionConstants.QUANT_INST; proofTypes[22] = SExpressionConstants.HYPOTHESIS; proofTypes[23] = SExpressionConstants.LEMMA; proofTypes[24] = SExpressionConstants.UNIT_RESOLUTION; proofTypes[25] = SExpressionConstants.IFF_TRUE; proofTypes[26] = SExpressionConstants.IFF_FALSE; proofTypes[27] = SExpressionConstants.COMMUTATIVITY; proofTypes[28] = SExpressionConstants.AXIOM; proofTypes[29] = SExpressionConstants.INTRO; proofTypes[30] = SExpressionConstants.APPLY_DEF; proofTypes[31] = SExpressionConstants.IFF_OEQ; proofTypes[32] = SExpressionConstants.NNF_POS; proofTypes[33] = SExpressionConstants.NNF_NEG; proofTypes[34] = SExpressionConstants.NNF_STAR; proofTypes[35] = SExpressionConstants.CNF_STAR; proofTypes[36] = SExpressionConstants.SKOLEMIZE; proofTypes[37] = SExpressionConstants.MODUS_PONENS_OEQ; proofTypes[38] = SExpressionConstants.TH_LEMMA; // added by chillebold on 06.07.2012 proofTypes[39] = SExpressionConstants.SIMPLEPROOF; return proofTypes; } }