public void TestCFGToCNFBadProb01() {
// S -> aSa | bSb | ε
var productions = new List<Production> {
CFGParser.Production(@"<S> -> 'a' <S> 'a' [1]"),
CFGParser.Production(@"<S> -> 'b' <S> 'b' [3]"),
CFGParser.Production(@"<S> -> ε [4]"),
};
Grammar g = new Grammar(productions, Nonterminal.Of("S"));
CNFGrammar h = g.ToCNF();
Helpers.AssertNear(0.5, h.Cyk(Sentence.FromLetters("")));
Helpers.AssertNear((1.0 / 8) * 0.5, h.Cyk(Sentence.FromLetters("aa")));
Helpers.AssertNear((3.0 / 8) * 0.5, h.Cyk(Sentence.FromLetters("bb")));
Helpers.AssertNear((1.0 / 8) * (3.0 / 8) * 0.5, h.Cyk(Sentence.FromLetters("abba")));
}