public int[] hasVariables(ArrayList<Variable> vl){
		
		int[] ret = new int[Math.max(1, this.varNum)];
		
		// If both lists have 0 variables then we return a 1 in the first position
		if(this.varNum == 0 && vl.size() == 0){
			ret[0] = 1;
			return ret;
		}
		
		// vl size > varList size
		if(vl.size() < varList.size()){
			ret[0] = -1;
		// vl size < varList size
		} else if(vl.size() > varList.size()){
			ret[0] = -2;
		} else {
			for(int i = 0; i < varList.size(); i++){
				Variable inV = varList.get(i);
				Variable outV = vl.get(i);
				// If the inner variable is a default variable (x, y, z...)
				if(inV instanceof DefaultVariable){
					ret[i] = 2;
				} else {
					// We check if they are the same
					if(inV.isName(outV.getName())){
						ret[i] = 1;
					} else {
						ret[i] = 0;
					}
				}
			}
		}
		
		return ret;
	}