public boolean fcPresent(){
	// This will loop if there is any unprocessed workingList
	while(!workingList.isEmpty()){
			// take the first item and process it
		 	String p = workingList.remove(0);
		 	//System.out.println(p);
			// add to queued
		 	
			queued.add(p);
			// for each of the rules....
			for (int i=0;i<rules.size();i++){
				// .... that contain p in its premise
				if (premiseContains(rules.get(i),p)){
				Integer j = count.get(i);
				// reduce count : unknown elements in each premise
				count.set(i,--j);
					// all the elements in the premise are now known
					if (count.get(i)==0){
						// the conclusion has been proven so put into workingList
						String head = rules.get(i).split("=>")[1];
						// have we just proven the 'ask'?
						if (head.equals(ask))
							return true;
						workingList.add(head);					
					}
				}	
			}
		}
		// if we arrive here then ask cannot be queued
		return false;
	}