public TableauxSetElement Copy() { return(new TableauxSetElement(element.Copy())); }
//CREATING A NEW VARIABLE NEEDED public List <Connective> ApplyDeltaTableauxRules(List <char> usedArguments, List <char> availableArguments) { List <Connective> results = new List <Connective>(); if (element.IsNormalProposition()) { return(results); } if (element is QuantifierExists) { QuantifierExists qe = (QuantifierExists)element; QuantifierExists qeCopy = (QuantifierExists)element.Copy(); char qeArgument = qe.Argument; if (availableArguments.Count > 0) { if (qeCopy.ChangeLocalArgument(qeArgument, availableArguments[0])) { usedArguments.Add(availableArguments[0]); availableArguments.RemoveAt(0); Connective newElement = qeCopy.Con1; results.Add(newElement); } } else { throw new Exception("Not enough available arguments"); } } else if (element is ConnectiveNot) { ConnectiveNot cn = (ConnectiveNot)element; if (cn.Con1 is QuantifierForAll) { QuantifierForAll qfa = (QuantifierForAll)cn.Con1; QuantifierForAll qfaCopy = (QuantifierForAll)cn.Con1.Copy(); char qfaArgument = qfa.Argument; if (availableArguments.Count > 0) { if (qfaCopy.ChangeLocalArgument(qfaArgument, availableArguments[0])) { usedArguments.Add(availableArguments[0]); availableArguments.RemoveAt(0); ConnectiveNot newNot = new ConnectiveNot(); newNot.setLeftConnective(qfaCopy.Con1); Connective newElement = newNot; results.Add(newElement.Copy()); } } else { throw new Exception("Not enough available arguments"); } } } return(results); }