private bool CouldFitAfter(PoclAction newAction, PoclAction test) { var before = GetAllBefore(test); before.Add(test); var beforeSet = new HashSet <PoclAction>(before.Distinct()); var after = GetAllAfter(newAction); after.Add(newAction); var afterSet = new HashSet <PoclAction>(after.Distinct()); return(!partialOrdering.Any(x => afterSet.Contains(x.Item1) && beforeSet.Contains(x.Item2))); }
private List <PoclAction> GetAllAfter(PoclAction target) { var ret = new List <PoclAction>(); foreach (var order in partialOrdering) { if (order.Item1 == target) { ret.Add(order.Item2); ret.AddRange(GetAllAfter(order.Item2)); } } return(ret); }