public override Proposition Nandify() { if (LeftSuccessor.GetType() != typeof(Proposition)) { LeftSuccessor = LeftSuccessor.Nandify(); } if (RightSuccessor.GetType() != typeof(Proposition)) { RightSuccessor = RightSuccessor.Nandify(); } return(this); }
public override Proposition Nandify() { // ~(A) == ~(A & A) == A % A Nand nand = new Nand(); Proposition nandifiedLeft = LeftSuccessor; if (LeftSuccessor.GetType() != typeof(Proposition)) { nandifiedLeft = LeftSuccessor.Nandify(); } nand.LeftSuccessor = nandifiedLeft; nand.RightSuccessor = nandifiedLeft; return(nand); }