public Proposition TryInfer(bool?[] Arguements) { if (this.Single | !(Operation == Operations.Implication | Operation == Operations.Biconditional)) { return(null); } Proposition CurrentProp = new Proposition(); if ((_ARef != null) && (_ARef.IsTrue(Arguements) == true)) { if (_BRef != null) { return(_BRef); } else { CurrentProp.setA(_B); return(CurrentProp); } } else if (Arguements[0] == true && _ARef == null) { if (_BRef != null) { return(_BRef); } else { CurrentProp.setA(_B); return(CurrentProp); } } return(null); }
/// <summary> /// /// </summary> /// <param name="left"></param> /// <param name="oper"></param> /// <param name="right">If right is null make a single prop</param> /// <returns></returns> private Proposition SetProp(string[] left, Operations oper, string[] right) { Proposition returnProp = new Proposition(); if (left.Length == 1) { if (left[0][0] == '~') // "~A" { left[0] = left[0].Substring(1); returnProp.ANotted = true; } returnProp.setA(String2Symbol(left[0])); } else { returnProp.setA(generateProp(left)); } if (right != null) // multi argument prop { if (right.Length == 1) { if (right[0][0] == '~') // "~A" { right[0] = right[0].Substring(1); returnProp.BNotted = true; } returnProp.setB(String2Symbol(right[0])); } else { returnProp.setB(generateProp(right)); } returnProp.Operation = oper; } return(returnProp); }