public boolean computeAssignments(Set<String> symbols){
    	String[] elements = new String[symbols.size() * 2 ];
    	int k = 0; int j = symbols.size();
    	for(String s : symbols){
    		elements[k] = s;
    		elements[k + j] = "~" + s;
    		k++;
    	}
    	int[] indices;
    	CombinationGenerator x = new CombinationGenerator (elements.length, symbols.size());
    	StringBuffer combination;
    	while (x.hasMore ()) {
    	  combination = new StringBuffer ();
    	  Set<String> _sym = new HashSet<String>();
    	  int eleCount = 0;
    	  indices = x.getNext ();
    	  for (int i = 0; i < indices.length; i++) {
    		  if(!combination.toString().contains(elements[indices[i]].replace("~", ""))){
    			  combination.append (elements[indices[i]] + " ");
    			  _sym.add(elements[indices[i]]);
    			  eleCount++;
    		  }
    	  }
    	  if(eleCount == symbols.size()){
    		  boolean result = issat(_sym);
    		  if(result)
    			  return true;
    	  }
    		  
    	}
    	return false;
    }