/*
* Copyright (C) 2009-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;
/**
* Basic configuration of SMTInterpol.
* @author Juergen Christ
*/
public interface Config {
/// Competition mode
public final static boolean COMPETITION = false;
////// General configuration
/// Create timing statistics
public final static boolean PROFILE_TIME = !COMPETITION;
/// Default log level
public final static int DEFAULT_LOG_LEVEL =
COMPETITION ? LogProxy.LOGLEVEL_ERROR : LogProxy.LOGLEVEL_INFO;
/// Check the status set by the user against our check-sat status
public final static boolean CHECK_STATUS_SET = !COMPETITION;
////// Converter configuration
/// Include redundant clauses for ite to achieve arc consistency
public static final boolean REDUNDANT_ITE_CLAUSES = true;
/// Number of occurrences when nested ors get transformed into literals.
public static final int OCC_INLINE_THRESHOLD = 1;
/// Number of occurrences when nested term ITEs are still inlined.
public static final int OCC_INLINE_TERMITE_THRESHOLD = 1;
////// DPLL configuration
/// Activity limit
public final static double LIMIT = 1e250;
/// Unlearn clauses with activity below this threshold
public final static double CLAUSE_UNLEARN_ACTIVITY = 1e-150;
/// Activity factor for atoms
public final static double ATOM_ACTIVITY_FACTOR = 1.1;
/// Activity factor for clauses
public final static double CLS_ACTIVITY_FACTOR = 1.01;
/// Backtrack as far as possible
public final static boolean DEEP_BACKTRACK = true;
/// When to restart
public final static int RESTART_FACTOR = 500;
/// The default random seed
// Currently delays random splits until the 10000th split...
public final static long RANDOM_SEED = 11350294L;
/// How often to split
public final static int RANDOM_SPLIT_BASE = 10000;
/// The frequency of random case splits
/// (number per RANDOM_SPLIT_BASE elements)
public final static int RANDOM_SPLIT_FREQ = 2;
/// Compute an initial phase bias based on Jeruslaw Wang heuristics
public static final boolean INITIAL_PHASE_BIAS_JW = true;
/// Print information statistics on restarts
public static final boolean PRINT_STATISTICS = !COMPETITION;
////// Quantifier Support
/// Debug unused variable elimination
public final static boolean DEBUG_QVAR_ELIMINATION = true;
/// Don't infer looping patterns
public final static boolean FEATURE_BLOCK_LOOPING_PATTERN = true;
////// Proofs
/// Check proofs for propositional validity
public final static boolean CHECK_PROP_PROOF = false;
////// Printing of results
/// Include line breaks in output of lists
public final static boolean RESULTS_ONE_PER_LINE = true;
/// Indentation for nested s-exprs
public static final int INDENTATION = 2;
////// Usage Checks
/// Stronger checks for usage (e.g., closed check in assertTerm)
public final static boolean STRONG_USAGE_CHECKS = !COMPETITION;
////// Optimizer
/// Call optimizer for every formula
public final static boolean OPTIMIZE_ALWAYS = false;
/// Call optimizer after lifting of Term ITEs
public final static boolean OPTIMIZE_LIFTED = false;
////// Linear arithmetic configuration
/// When to switch back to Bland's Rule (#vars * this_factor)
public static final int BLAND_USE_FACTOR = 5;
/**
* Should we do paranoid and expensive asserts.
*/
public static final boolean EXPENSIVE_ASSERTS = false;
////// Interpolator Configuration
/// Should we check partial interpolants in interpolant-check-mode?
public static final boolean DEEP_CHECK_INTERPOLANTS = false;
////// Array solver configuration
/// Should we always add a read on the base array of a store?
/// If not, the read will only be created if the value sort is finite.
public static final boolean ARRAY_ALWAYS_ADD_READ = false;
}