public void addLiteralVariable(final LiteralVariable varName, final LiteralVariable value) throws TheoryException {
		if (varName.getName().charAt(0) != DomConst.Literal.LITERAL_VARIABLE_PREFIX)
			throw new TheoryException(ErrorMessage.LITERAL_VARIABLE_PREFIX_ERROR, new String[] { varName.toString() });

		if (literalVariables.containsKey(varName)) {
			throw new TheoryException(ErrorMessage.LITERAL_VARIABLE_EXISTS, new Object[] { varName.getName() });
		} else if (literalBooleanFunctions.containsKey(varName)) { throw new TheoryException(ErrorMessage.LITERAL_BOOLEAN_FUNCTION_EXISTS,
				new Object[] { varName.getName() }); }

		if (value.getName().charAt(0) == DomConst.Literal.LITERAL_VARIABLE_PREFIX) {
			literalVariables.put(varName.clone(), value.clone());
		} else if (value.getName().charAt(0) == DomConst.Literal.LITERAL_BOOLEAN_FUNCTION_PREFIX) {
			literalBooleanFunctions.put(varName.clone(), value.clone());
		} else {
			throw new TheoryException(ErrorMessage.LITERAL_VARIABLE_PREFIX_ERROR);
		}
	}