public override Sentence visitBinarySentence(ComplexSentence s, object arg) { Sentence result = null; if (s.isBiconditionalSentence()) { // Eliminate <=>, replace α <=> β // with (α => β) & (β => α) Sentence alpha = s.getSimplerSentence(0).accept(this, arg); Sentence beta = s.getSimplerSentence(1).accept(this, arg); Sentence alphaImpliesBeta = new ComplexSentence( Connective.IMPLICATION, alpha, beta); Sentence betaImpliesAlpha = new ComplexSentence( Connective.IMPLICATION, beta, alpha); result = new ComplexSentence(Connective.AND, alphaImpliesBeta, betaImpliesAlpha); } else { result = base.visitBinarySentence(s, arg); } return result; }