public static Vector<Assignment> tryAssign(Variable assignedVar, int varSign) {

		if(SsatSolver.DEBUG) System.out.println("Assigning variable " + assignedVar.getName() + " to " + (varSign==Variable.TRUE?"True":"False"));
		//assign the variable
		assignedVar.setAssignment(varSign);
		//make sure all the clauses update the stats of the variables
		for(Clause c : clauses) {
			c.variableAssigned(assignedVar);
		}

		//if we're debugging, make sure everything is sane in the stored informaiton about variables.
		if(DEBUG) checkVariableStats();

		//solve the formula with the assigned variable
		//hold onto the assignments we get back
		Vector<Assignment> assignments = DPLL();

		if(SsatSolver.DEBUG) System.out.println("When assiging variable " + assignedVar.getName() + " to " + (varSign==Variable.TRUE?"True":"False") + " got " + assignments.size() + " possible assignments back.");

		if(SsatSolver.DEBUG) System.out.println("Unassigning variable " + assignedVar.getName());

		//unassign the variable
		assignedVar.setAssignment(Variable.UNASSIGNED);
		//make sure the clauses update the stats of the variables
		for(Clause c : clauses) {
			c.variableUnassigned(assignedVar, varSign);
		}

		if(DEBUG) checkVariableStats();

		//return the assignments we got back
		return assignments;
	}