public boolean remove (AbstractRule R)
	{
		HashMap<Object, HashMap<Object, LinkedList <AbstractRule>>> rc = get(R.getAction().getID());
		if (rc == null)
			return false;
		boolean success = false;
		for(Dimension d : R.getCondition().values())
		{
			HashMap<Object, LinkedList <AbstractRule>> rrc = rc.get(d.getID());
			if(rrc == null)
				return false;
			for(Value v : d.values())
			{
				if(v.isFullyActivated())
				{
					LinkedList <AbstractRule> rrrc = rrc.get(v.getID());
					if(rrrc == null)
						return false;
					success = rrrc.remove(R);
					if(rrrc.size() == 0)
					{
						rrc.remove(v.getID());
						if(rrc.size() == 0)
						{
							rc.remove(d.getID());
							if(rc.size() == 0)
							{
								remove(R.getAction().getID());
							}
						}
					}
				}
			}
		}
		return success;
	}