/* * Copyright (C) 2012 University of Freiburg * * This file is part of SMTInterpol. * * SMTInterpol is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published * by the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * SMTInterpol is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with SMTInterpol. If not, see <http://www.gnu.org/licenses/>. */ package de.uni_freiburg.informatik.ultimate.smtinterpol.proof; import de.uni_freiburg.informatik.ultimate.logic.Annotation; /** * Just a collection of constants denoting rewrite axioms or auxiliary axioms. * @author Juergen Christ */ public interface ProofConstants { //// ==== Rewrite ids and names ==== public final static int RW_EXPAND = 0; public final static int RW_EXPAND_DEF = 1; public final static int RW_TRUE_NOT_FALSE = 2; public final static int RW_CONST_DIFF = 3; public final static int RW_EQ_TRUE = 4; public final static int RW_EQ_FALSE = 5; public final static int RW_EQ_SIMP = 6; public final static int RW_EQ_BINARY = 7; public final static int RW_DISTINCT_BOOL = 8; public final static int RW_DISTINCT_SAME = 9; public final static int RW_DISTINCT_NEG = 10; public final static int RW_DISTINCT_TRUE = 11; public final static int RW_DISTINCT_FALSE = 12; public final static int RW_DISTINCT_BINARY = 13; public final static int RW_NOT_SIMP = 14; public final static int RW_OR_SIMP = 15; public final static int RW_OR_TAUT = 16; public final static int RW_ITE_TRUE = 17; public final static int RW_ITE_FALSE = 18; public final static int RW_ITE_SAME = 19; public final static int RW_ITE_BOOL_1 = 20; public final static int RW_ITE_BOOL_2 = 21; public final static int RW_ITE_BOOL_3 = 22; public final static int RW_ITE_BOOL_4 = 23; public final static int RW_ITE_BOOL_5 = 24; public final static int RW_ITE_BOOL_6 = 25; public final static int RW_AND_TO_OR = 26; public final static int RW_XOR_TO_DISTINCT = 27; public final static int RW_IMP_TO_OR = 28; public final static int RW_STRIP = 29; public final static int RW_CANONICAL_SUM = 30; public final static int RW_LEQ_TO_LEQ0 = 31; public final static int RW_LT_TO_LEQ0 = 32; public final static int RW_GEQ_TO_LEQ0 = 33; public final static int RW_GT_TO_LEQ0 = 34; public final static int RW_LEQ_TRUE = 35; public final static int RW_LEQ_FALSE = 36; public final static int RW_DESUGAR = 37; public final static int RW_DIVISIBLE = 38; public final static int RW_MODULO = 39; public final static int RW_MODULO_ONE = 40; public final static int RW_MODULO_MONE = 41; public final static int RW_MODULO_CONST = 42; public final static int RW_DIV_ONE = 43; public final static int RW_DIV_MONE = 44; public final static int RW_DIV_CONST = 45; public final static int RW_TO_INT = 46; public final static int RW_EQ_SAME = 47; public final static int RW_STORE_OVER_STORE = 48; public final static int RW_SELECT_OVER_STORE = 49; public final static int RW_FLATTEN = 50; public final static int RW_STORE_REWRITE = 51; public final static int RW_TO_REAL = 52; public final static int RW_DISTINCT_BOOL_EQ = 53; public final static Annotation[] REWRITEANNOTS = { new Annotation(":expand", null), new Annotation(":expandDef", null), new Annotation(":trueNotFalse", null), new Annotation(":constDiff", null), new Annotation(":eqTrue", null), new Annotation(":eqFalse", null), new Annotation(":eqSimp", null), new Annotation(":eqBinary", null), new Annotation(":distinctBool", null), new Annotation(":distinctSame", null), new Annotation(":distinctNeg", null), new Annotation(":distinctTrue", null), new Annotation(":distinctFalse", null), new Annotation(":distinctBinary", null), new Annotation(":notSimp", null), new Annotation(":orSimp", null), new Annotation(":orTaut", null), new Annotation(":iteTrue", null), new Annotation(":iteFalse", null), new Annotation(":iteSame", null), new Annotation(":iteBool1", null), new Annotation(":iteBool2", null), new Annotation(":iteBool3", null), new Annotation(":iteBool4", null), new Annotation(":iteBool5", null), new Annotation(":iteBool6", null), new Annotation(":andToOr", null), new Annotation(":xorToDistinct", null), new Annotation(":impToOr", null), new Annotation(":strip", null), new Annotation(":canonicalSum", null), new Annotation(":leqToLeq0", null), new Annotation(":ltToLeq0", null), new Annotation(":geqToLeq0", null), new Annotation(":gtToLeq0", null), new Annotation(":leqTrue", null), new Annotation(":leqFalse", null), new Annotation(":desugar", null), new Annotation(":divisible", null), new Annotation(":modulo", null), new Annotation(":modulo1", null), new Annotation(":modulo-1", null), new Annotation(":moduloConst", null), new Annotation(":div1", null), new Annotation(":div-1", null), new Annotation(":divConst", null), new Annotation(":toInt", null), new Annotation(":eqSame", null), new Annotation(":storeOverStore", null), new Annotation(":selectOverStore", null), new Annotation(":flatten", null), new Annotation(":storeRewrite", null), new Annotation(":toReal", null), new Annotation(":distinctBoolEq", null) }; //// ==== Aux ids and names ==== public final static int AUX_TRUE_NOT_FALSE = 0; public final static int AUX_OR_POS = 1; public final static int AUX_OR_NEG = 2; public final static int AUX_ITE_POS_1 = 3; public final static int AUX_ITE_POS_2 = 4; public final static int AUX_ITE_POS_RED = 5; public final static int AUX_ITE_NEG_1 = 6; public final static int AUX_ITE_NEG_2 = 7; public final static int AUX_ITE_NEG_RED = 8; public final static int AUX_EQ_POS_1 = 9; public final static int AUX_EQ_POS_2 = 10; public final static int AUX_EQ_NEG_1 = 11; public final static int AUX_EQ_NEG_2 = 12; public final static int AUX_EXCLUDED_MIDDLE_1 = 13; public final static int AUX_EXCLUDED_MIDDLE_2 = 14; public final static int AUX_TERM_ITE = 15; public final static int AUX_DIV_LOW = 16; public final static int AUX_DIV_HIGH = 17; public final static int AUX_TO_INT_LOW = 18; public final static int AUX_TO_INT_HIGH = 19; public final static int AUX_ARRAY_STORE = 20; public final static int AUX_ARRAY_DIFF = 21; public final static Annotation[] AUXANNOTS = { new Annotation(":trueNotFalse", null), new Annotation(":or+", null), new Annotation(":or-", null), new Annotation(":ite+1", null), new Annotation(":ite+2", null), new Annotation(":ite+red", null), new Annotation(":ite-1", null), new Annotation(":ite-2", null), new Annotation(":ite-red", null), new Annotation(":=+1", null), new Annotation(":=+2", null), new Annotation(":=-1", null), new Annotation(":=-2", null), new Annotation(":excludedMiddle1", null), new Annotation(":excludedMiddle2", null), new Annotation(":termITE", null), new Annotation(":divLow", null), new Annotation(":divHigh", null), new Annotation(":toIntLow", null), new Annotation(":toIntHigh", null), new Annotation(":store", null), new Annotation(":diff", null) }; //// ==== Structural splitting constants ==== public final static int SPLIT_NEG_OR = 0; public final static int SPLIT_POS_EQ_1 = 1; public final static int SPLIT_POS_EQ_2 = 2; public final static int SPLIT_NEG_EQ_1 = 3; public final static int SPLIT_NEG_EQ_2 = 4; public final static int SPLIT_POS_ITE_1 = 5; public final static int SPLIT_POS_ITE_2 = 6; public final static int SPLIT_NEG_ITE_1 = 7; public final static int SPLIT_NEG_ITE_2 = 8; public final static Annotation[] SPLITANNOTS = { new Annotation(":notOr", null), new Annotation(":=+1", null), new Annotation(":=+2", null), new Annotation(":=-1", null), new Annotation(":=-2", null), new Annotation(":ite+1", null), new Annotation(":ite+2", null), new Annotation(":ite-1", null), new Annotation(":ite-2", null) }; }