private static bool idempotency(LogicBranch paramLogicBranch) { var i = paramLogicBranch.Operator; LogicExpression[] arrayOfLogicExpression = (LogicExpression[]) paramLogicBranch.Branches; int j = arrayOfLogicExpression.Length; for (int k = 0; k < arrayOfLogicExpression.Length; k++) { if ((arrayOfLogicExpression[k] == null) || (!(arrayOfLogicExpression[k] is LogicLeaf))) continue; var localLogicLeaf1 = (LogicLeaf) arrayOfLogicExpression[k]; for (int n = k + 1; n < arrayOfLogicExpression.Length; n++) { if ((arrayOfLogicExpression[n] == null) || (!(arrayOfLogicExpression[n] is LogicLeaf))) continue; var localLogicLeaf2 = (LogicLeaf) arrayOfLogicExpression[n]; if (!localLogicLeaf1.Name.Equals(localLogicLeaf2.Name)) continue; if (arrayOfLogicExpression[k].Negated != arrayOfLogicExpression[n].Negated) { switch (i) { case Operator.And: arrayOfLogicExpression[k] = new LogicValue(false); break; case Operator.Or: arrayOfLogicExpression[k] = new LogicValue(true); break; default: Console.Error.WriteLine("Software Error: Unimplemented operator: " + i); break; } } arrayOfLogicExpression[n] = null; j--; } } if (j == arrayOfLogicExpression.Length) return false; if (j == 1) { var localObject1 = paramLogicBranch.Parent; if (localObject1 != null) { (localObject1).SetBranch(arrayOfLogicExpression[0], paramLogicBranch.PositionInParent); } return true; } var localObject = new LogicExpression[j]; j = 0; foreach (LogicExpression t in arrayOfLogicExpression.Where(t => t != null)) { localObject[j++] = t; } paramLogicBranch.Branches = localObject; return true; }
private static void CarryOutBoolValues(LogicDerivation paramLogicDerivation) { var logicExpression = paramLogicDerivation.Next; int i = logicExpression.GetDepth(); for (int m = 2; m <= i; m++) { int k = 0; int j = 0; LogicExpression localLogicExpression; while ((localLogicExpression = logicExpression.GetSubExpression(m, j)) != null) { var localLogicBranch1 = (LogicBranch) localLogicExpression; int n = GetBoolResolution(localLogicBranch1); if (n == 31) { LogicExpression[] arrayOfLogicExpression = localLogicBranch1.Branches; int i1 = arrayOfLogicExpression.Length; i1 -= arrayOfLogicExpression.Count(t => (t is LogicValue)); if (i1 == 1) { LogicExpression localObject2 = arrayOfLogicExpression.FirstOrDefault(t => (!(t is LogicValue))); LogicBranch localLogicBranch2 = localLogicExpression.Parent; if (localLogicBranch2 == null) { logicExpression = localObject2; localObject2.SetParent(null, -1); } else { localLogicBranch2.SetBranch(localObject2, localLogicExpression.PositionInParent); } } else { var localObject22 = new LogicExpression[i1]; int i4 = 0; foreach (LogicExpression t in arrayOfLogicExpression) { if (!(t is LogicValue)) { localObject22[(i4++)] = t; } } localLogicBranch1.Branches = localObject22; j++; } k = 1; } else if ((n == 32) || (n == 33)) { bool @bool = n == 32; var localLogicValue = new LogicValue(@bool); var localObject2 = localLogicBranch1.Parent; if (localObject2 == null) { localLogicValue.SetParent(null, -1); paramLogicDerivation.AddStep(localLogicValue, "Resolved bool values"); break; } (localObject2).SetBranch(localLogicValue, localLogicBranch1.PositionInParent); k = 1; } else { j++; } } if (k == 0) continue; paramLogicDerivation.AddStep(logicExpression, "Removed redundant bool values"); logicExpression = paramLogicDerivation.Next; } }