static void TestIdempotenceOfDecode2(STBuilderZ3 stb, Sort charSort)
{
var z3p = stb.Solver;
z3p.MainSolver.Push();
STz3 st = MkDecode(stb, charSort);
st.AssertTheory();
//st.ShowGraph();
Expr input = z3p.MkListFromString("", charSort);
Expr output1 = z3p.MkFreshConst("output1", z3p.MkListSort(charSort));
Expr output2 = z3p.MkFreshConst("output2", z3p.MkListSort(charSort));
string i;
string o1;
string o2;
int k = 0;
while (true)
{
var model = z3p.MainSolver.GetModel(z3p.MkAnd(st.MkAccept(input, output1), z3p.MkAnd(st.MkAccept(output1, output2), z3p.MkNeq(output1, output2))), input, output1, output2);
if (model != null)
{
i = model[input].GetStringValue(false);
o1 = model[output1].GetStringValue(false);
o2 = model[output2].GetStringValue(false);
break;
}
input = z3p.MkListCons(z3p.MkFreshConst("tmp", charSort), input);
k += 1;
}
Assert.AreEqual(o1, System.Net.WebUtility.HtmlDecode(i));
Assert.AreEqual(o2, System.Net.WebUtility.HtmlDecode(System.Net.WebUtility.HtmlDecode(i)));
Assert.AreNotEqual(o1, o2);
z3p.MainSolver.Pop();
}