public static List <Metaquery> VariableExpand(Metaquery query) { List <Metaquery> mqList = new List <Metaquery>(); Metaquery newMQ; //mqList.AddRange(AddVariable(query.Head, newMQ)); //Check the possibility of adding variable to Head Relation int maxVariablesInRelation = 5; if (query.Head.Arity < maxVariablesInRelation) { newMQ = query.Clone(); newMQ.Head.AddVariable(query.Head.Arity + 1); mqList.Add(newMQ); } //List<int> relationsVarCount = ProcessMQDetails.RelationsVarCount; //foreach (Relation bodyRelation in query.Body.List) for (int i = 0; i < query.Body.Count; i++) { Relation bodyRelation = query.Body[i]; if (bodyRelation.Arity < maxVariablesInRelation) //relationsVarCount[i]) { newMQ = query.Clone(); newMQ.Body[i].AddVariable(bodyRelation.Arity + 1); mqList.Add(newMQ); } //mqList.AddRange(AddVariable(bodyRelation, newMQ)); } return(mqList); }