private boolean bcPresent() 
	{
		while(!workingList.isEmpty())		//while working list of symbols not empty
		{
			String workingValue = workingList.remove(workingList.size()-1);		//get symbol to work
			
			queued.add(workingValue);			//add symbol to queued(entailed)
			
			if(!facts.contains(workingValue))	//if symbol is a fact, no need to continue
			{
				ArrayList<String> premises = new ArrayList<String>();
				
				for(String rule : rules)		//for each rule
				{
					if(ruleEqualsTo(rule, workingValue)) //if working symbol is at right side of rule
					{
						String premise = rule.split("=>")[0];		//get left side of rule
						String[] variables = premise.split("&");	//split left side of rule
						
						for(String variable : variables)		//for each symbol on left side of rule
						{
							if(!workingList.contains(variable))		//add symbol to premises if not in workingList(agenda
								premises.add(variable);
						}
					}
				}
				
				if(premises.size() == 0)
					return false;			//return false if no premises
				else
				{
					for(String premise : premises)
					{
						if(!queued.contains(premise))	//if premise not queued(entailed)
							workingList.add(premise);	//add premise to workingList(agenda)
					}
				}
			}
		}
		return true;
	}