static private UnifyArraysFast ( object a1, object a2, |
||
a1 | object | |
a2 | object | |
context | ||
Результат | IEnumerable |
internal override IEnumerable <CutState> Prove(object[] args, PrologContext context, ushort parentFrame) { object[] goal1Args = null; var newVars = new LogicVariable[FreeVariables.Count]; object[] newArgs = Term.AlphaConvertArglist(HeadArgs, FreeVariables, newVars, context, true); // ReSharper disable UnusedVariable #pragma warning disable 414, 168, 219 foreach (bool ignore in Term.UnifyArraysFast(args, newArgs, context)) #pragma warning restore 414, 168, 219 { if (goal1Args == null) { goal1Args = Term.AlphaConvertArglist(BodyGoals[0].Arguments, FreeVariables, newVars, context, false); } #pragma warning disable 414, 168, 219 foreach (CutState ignoreFreeze in context.ProveAllWokenGoals()) #pragma warning restore 414, 168, 219 { // ReSharper restore UnusedVariable foreach (CutState state1 in context.KnowledgeBase.Prove(BodyGoals[0].Functor, goal1Args, context, parentFrame)) { yield return(state1); } } } }
internal override IEnumerable <CutState> Prove(object[] args, PrologContext context, ushort parentFrame) { object[] goal1Args = null; object[] goal2Args = null; object[] goal3Args = null; object[] goal4Args = null; object[] goal5Args = null; object[] goal6Args = null; object[] goal7Args = null; object[] goal8Args = null; var newVars = new LogicVariable[FreeVariables.Count]; object[] newArgs = Term.AlphaConvertArglist(HeadArgs, FreeVariables, newVars, context, true); // ReSharper disable UnusedVariable foreach (bool ignore in Term.UnifyArraysFast(args, newArgs, context)) { if (goal1Args == null) { goal1Args = Term.AlphaConvertArglist(BodyGoals[0].Arguments, FreeVariables, newVars, context, false); } foreach (CutState ignoreFreeze in context.ProveAllWokenGoals()) { // ReSharper restore UnusedVariable foreach (CutState state1 in context.KnowledgeBase.Prove(BodyGoals[0].Functor, goal1Args, context, parentFrame)) { if (state1 == CutState.ForceFail) { yield return(CutState.ForceFail); } if (goal2Args == null) { goal2Args = Term.AlphaConvertArglist(BodyGoals[1].Arguments, FreeVariables, newVars, context, false); } foreach (CutState state2 in context.KnowledgeBase.Prove(BodyGoals[1].Functor, goal2Args, context, parentFrame)) { if (state2 == CutState.ForceFail) { yield return(CutState.ForceFail); } if (goal3Args == null) { goal3Args = Term.AlphaConvertArglist(BodyGoals[2].Arguments, FreeVariables, newVars, context, false); } foreach (CutState state3 in context.KnowledgeBase.Prove(BodyGoals[2].Functor, goal3Args, context, parentFrame)) { if (state3 == CutState.ForceFail) { yield return(CutState.ForceFail); } if (goal4Args == null) { goal4Args = Term.AlphaConvertArglist(BodyGoals[3].Arguments, FreeVariables, newVars, context, false); } foreach (CutState state4 in context.KnowledgeBase.Prove(BodyGoals[3].Functor, goal4Args, context, parentFrame)) { if (state4 == CutState.ForceFail) { yield return(CutState.ForceFail); } if (goal5Args == null) { goal5Args = Term.AlphaConvertArglist(BodyGoals[4].Arguments, FreeVariables, newVars, context, false); } foreach (CutState state5 in context.KnowledgeBase.Prove(BodyGoals[4].Functor, goal5Args, context, parentFrame)) { if (state5 == CutState.ForceFail) { yield return(CutState.ForceFail); } if (goal6Args == null) { goal6Args = Term.AlphaConvertArglist(BodyGoals[5].Arguments, FreeVariables, newVars, context, false); } foreach (CutState state6 in context.KnowledgeBase.Prove(BodyGoals[5].Functor, goal6Args, context, parentFrame)) { if (state6 == CutState.ForceFail) { yield return(CutState.ForceFail); } if (goal7Args == null) { goal7Args = Term.AlphaConvertArglist(BodyGoals[6].Arguments, FreeVariables, newVars, context, false); } foreach (CutState state7 in context.KnowledgeBase.Prove(BodyGoals[6].Functor, goal7Args, context, parentFrame)) { if (state7 == CutState.ForceFail) { yield return(CutState.ForceFail); } if (goal8Args == null) { goal8Args = Term.AlphaConvertArglist(BodyGoals[7].Arguments, FreeVariables, newVars, context, false); } foreach (CutState state8 in context.KnowledgeBase.Prove(BodyGoals[7].Functor, goal8Args, context, parentFrame)) { yield return(state8); } } } } } } } } } } }