diff --git a/shared/rascal/src/Sync.rsc b/shared/rascal/src/Sync.rsc index b32bcc17..8ca7072e 100644 --- a/shared/rascal/src/Sync.rsc +++ b/shared/rascal/src/Sync.rsc @@ -34,8 +34,8 @@ public void main() bl = readBGF(base+replaceLast(f,".xbgf",".baseline")); //buffer += "test bool test_() { return gdt(transform(,),); }\n"; buffer += "\"\": \<,,\>,\n"; - buffer2 += "test bool test_() { \ = test_data[\"\"]; return gdt(transform(xbgf,bgf1),bgf2); }\n"; - buffer3 += "void show_() { \ = test_data[\"\"]; println(\"Input \\");println(\"Transformations: \\");println(\"Expected output \\");println(\"Actual output \\"); }\n"; + buffer2 += "test bool test_() { \ = test_data[\"\"]; return gdts(transform(xbgf,bgf1),bgf2); }\n"; + buffer3 += "void show_() { \ = test_data[\"\"]; println(\"Input \\");println(\"Transformations: \\");println(\"Expected output \\");bgf3=transform(xbgf,bgf1);println(\"Actual output \\"); gdtv(bgf3,bgf2); }\n"; } writeFile(|project://slps/src/transform/XBGFTest.rsc|, replaceLast(buffer,",","")+");\n\n"+buffer3+"\n\n"+buffer2); } diff --git a/shared/rascal/src/diff/GDT.rsc b/shared/rascal/src/diff/GDT.rsc index 649fe471..08f3b1a3 100644 --- a/shared/rascal/src/diff/GDT.rsc +++ b/shared/rascal/src/diff/GDT.rsc @@ -7,19 +7,77 @@ import normal::BGF; import List; import IO; -public bool gdt(grammar(rs1,ps1), grammar(rs2,ps2)) +// expression equality +public bool eqE(choice([BGFExpression e1]), choice([BGFExpression e2])) = eqE(e1,e2); +public bool eqE(choice(L1), choice(L2)) +{ + //println("We\'re at eqE with:\n \nvs\n ..."); + for (x <- L1, y <- L2) + if (eqE(x,y)) + return eqE(choice(L1 - x), choice(L2 - y)); + //println("Unmatched with :("); + return false; +} +public bool eqE(sequence(L1), sequence(L2)) +{ + if (size(L1) != size(L2)) return false; + for (i <- [0..size(L1)-1]) + //if (choice(L3) := L1[i] && choice(L4) := L2[i]) + if (!eqE(L1[i],L2[i])) return false; + return true; +} +public bool eqE(BGFExpression e1, BGFExpression e2) = e1 == e2; // default + + +public bool eqP(production(str l,str x, BGFExpression e1), production(l,x, BGFExpression e2)) = eqE(e1,e2); +public bool eqP(BGFExpression p1, BGFExpression p2) = p1 == p2; + +// generic differ, returns unmatched production rules +tuple[list[BGFProduction],list[BGFProduction]] gdt(list[BGFProduction] ps1, list[BGFProduction] ps2) { ps3 = normalise(ps1); ps4 = normalise(ps2); - if (toSet(rs1)!=toSet(rs2)) return false; - if (toSet(ps3)==toSet(ps4)) return true; + if (toSet(ps3)==toSet(ps4)) return <[],[]>; unmatched1 = ps3 - ps4; unmatched2 = ps4 - ps3; for (u <- unmatched1) - if (production(l,x,choice(L1)) := u) - for (production(l,x,choice(L2)) <- unmatched2) - if (toSet(L1) == toSet(L2)) {unmatched2 -= production(l,x,choice(L2));unmatched1 -= u;break;} + if (production(str l,str x,BGFExpression e1) := u) + for (production(l,x,BGFExpression e2) <- unmatched2) + if (eqE(e1,e2)) + { + unmatched2 -= production(l,x,e2); + unmatched1 -= u; + break; + } + return ; +} + +// silent +public bool gdts(grammar(rs1,ps1), grammar(rs2,ps2)) +{ + if (toSet(rs1)!=toSet(rs2)) return false; + = gdt(ps1,ps2); if (isEmpty(unmatched1) && isEmpty(unmatched2)) return true; // TODO keep trying? return false; } + +// verbose +public bool gdtv(grammar(rs1,ps1), grammar(rs2,ps2)) +{ + if (toSet(rs1)!=toSet(rs2)) + { + println("Different roots: vs ."); + return false; + } + = gdt(ps1,ps2); + if (isEmpty(unmatched1) && isEmpty(unmatched2)) return true; + println("Grammars differ!"); + for (u <- unmatched1) + println(u); + println("vs"); + for (u <- unmatched2) + println(u); + // TODO keep trying? + return false; +} \ No newline at end of file diff --git a/shared/rascal/src/transform/XBGF.rsc b/shared/rascal/src/transform/XBGF.rsc index 8037f3bd..0925fbdc 100644 --- a/shared/rascal/src/transform/XBGF.rsc +++ b/shared/rascal/src/transform/XBGF.rsc @@ -40,7 +40,7 @@ public BGFGrammar transform(XBGFSequence xbgf, BGFGrammar g) case factor(BGFExpression e1, BGFExpression e2, XBGFContext w): g1 = runFactor(e1,e2,w,g1); case fold(str x, XBGFContext w): g1 = runFold(x,w,g1); case horizontal(XBGFContext w): g1 = runHorizontal(w,g1); - case importG(list[BGFProduction] ps): g1 = runImport(ps,g1); + case importG(list[BGFProduction] ps): g1 = runImportG(ps,g1); case inject(BGFProduction p): g1 = runInject(p,g1); case inline(str x): g1 = runInline(x,g1); case introduce(list[BGFProduction] ps): g1 = runIntroduce(ps,g1); @@ -99,16 +99,16 @@ BGFGrammar runAbstractize(BGFProduction p1, grammar(roots, ps)) return runProject(p1,grammar(roots, ps)); } -BGFGrammar runAddH(BGFProduction p1, grammar(roots, ps)) +BGFGrammar runAddH(BGFProduction p1, grammar(rs, ps)) { p2 = unmark(p1); p3 = demark(p1); if (p3 notin ps) throw "Production rule not found."; - return grammar(roots, ps - p3 + p2); + return grammar(rs, replaceP(ps,p3,p2)); } -BGFGrammar runAddV(BGFProduction p1, grammar(roots, ps)) +BGFGrammar runAddV(BGFProduction p1, grammar(rs, ps)) { if (production(_,str x,_) := p1) { @@ -121,17 +121,17 @@ BGFGrammar runAddV(BGFProduction p1, grammar(roots, ps)) if (production(str l,_,_) := p1 && l != "") if (production(str l,_,_) <- ps) throw "Another production rule with label is already present."; - return grammar(roots, ps1 + ps2 + p1 + ps3); + return grammar(rs, ps1 + ps2 + p1 + ps3); } } -BGFGrammar runAnonymize(BGFProduction p1, grammar(roots, ps)) +BGFGrammar runAnonymize(BGFProduction p1, grammar(rs, ps)) { p2 = unmark(p1); p3 = demarkS(p1); if (p2 notin ps) throw "Production rule not found."; - return grammar(roots, ps - p2 + p3); + return grammar(rs, replaceP(ps,p2,p3)); } BGFGrammar runAppear(BGFProduction p1, grammar(roots, ps)) @@ -142,7 +142,7 @@ BGFGrammar runAppear(BGFProduction p1, grammar(roots, ps)) for (/marked(e) := p1) if (optional(_) !:= e && star(_) !:= e) throw " does not have an optional part marked."; - return grammar(roots, ps - p2 + unmark(p1)); + return grammar(roots, replaceP(ps,p2,unmark(p1))); } BGFGrammar runChain(BGFProduction p, grammar(roots, ps)) @@ -172,7 +172,7 @@ BGFGrammar runConcatT(list[str] xs, str y, XBGFContext w, BGFGrammar g) return g; } -BGFGrammar runConcretize(BGFProduction p1, grammar(roots, ps)) +BGFGrammar runConcretize(BGFProduction p1, grammar(rs, ps)) { p2 = demark(p1); if (p2 notin ps) @@ -180,24 +180,24 @@ BGFGrammar runConcretize(BGFProduction p1, grammar(roots, ps)) for (/marked(e) := p1) if (terminal(_) !:= e) throw "Concretize only works with marked terminals, use inject instead."; - return runInject(p1,grammar(roots, ps)); + return runInject(p1,grammar(rs, ps)); } -BGFGrammar runDeanonymize(BGFProduction p1, grammar(roots, ps)) +BGFGrammar runDeanonymize(BGFProduction p1, grammar(rs, ps)) { p2 = unmark(p1); p3 = demarkS(p1); if (p3 notin ps) throw "Production rule not found."; - return grammar(roots, ps - p3 + p2); + return grammar(rs, replaceP(ps,p3,p2)); } -BGFGrammar runDefine(list[BGFProduction] ps1, grammar(roots, ps2)) +BGFGrammar runDefine(list[BGFProduction] ps1, grammar(rs, ps2)) { if ({str n} := definedNs(ps1)) { if (n notin usedNs(ps2)) throw "Nonterminal must not be fresh, use introduce instead."; - return grammar(roots, ps2 + ps1); + return grammar(rs, ps2 + ps1); } else throw "Multiple defined nonterminals found."; } @@ -256,7 +256,7 @@ BGFGrammar runDeyaccify(str n, grammar(rs,ps)) return grammar(rs, ps1 + p + ps3); } -BGFGrammar runDisappear(BGFProduction p1, grammar(roots, ps)) +BGFGrammar runDisappear(BGFProduction p1, grammar(rs, ps)) { p2 = unmark(p1); if (p2 notin ps) @@ -264,19 +264,68 @@ BGFGrammar runDisappear(BGFProduction p1, grammar(roots, ps)) for (/marked(e) := p1) if (optional(_) !:= e && star(_) !:= e) throw " does not have an optional part marked."; - return grammar(roots, ps - p2 + demark(p1)); + return grammar(rs, replaceP(ps,p2,demark(p1))); } -BGFGrammar runDistribute(XBGFContext w, BGFGrammar g) +BGFGrammar runDistribute(XBGFContext w, grammar(rs, ps)) { - // TODO - return g; + = splitPbyW(ps,w); + if (/choice(_) !:= ps2) throw "No choices found in the context , nothing to distribute"; + return grammar(rs,ps1 + [makeDistributed(p) | p <- ps2] + ps3); } -BGFGrammar runDowngrade(BGFProduction p1,BGFProduction p2, BGFGrammar g) +BGFProduction makeDistributed(production(str l, str x, BGFExpression e)) = production(l, x, makeDistributed(e)); + +BGFExpression makeDistributed(BGFExpression e1) { - // TODO - return g; + if (choice(L1) := e1) // excessive normalisation + { + list[BGFExpression] Ln = []; + for (e2 <- L1) + { + e3 = makeDistributed(e2); + if (choice(L2) := e3) + Ln += L2; + else + Ln += e2; // TODO or e3? + } + return choice(Ln); + } + elseif (sequence(L1) := e1) + { + list[list[BGFExpression]] Ln = [[]]; + for (e2 <- L1) + { + e3 = makeDistributed(e2); + //println("Ln = ; e2 = ; e3 = ;"); + if (choice(L2) := e3) + { + Lm = []; + for (e4 <- L2) + Lm += [Li + e4 | Li <- Ln]; + Ln = Lm; + } + else + Ln = [Li + e3 | Li <- Ln]; // TODO or e2? + } + //println("Ln := "); + return choice([sequence(Li) | Li <- Ln]); + } + else + return e1; +} + +BGFGrammar runDowngrade(BGFProduction p1, BGFProduction p2, grammar(rs, ps)) +{ + if (/marked(nonterminal(str x)) := p1) + if (production(str l,x,BGFExpression e) := p2) + { + p3 = visit(p1){case marked(_) => e}; + p3 = normalise(p3); + return grammar(rs,replaceP(ps,unmark(p1),p3)); + } + else throw " and do not agree on nonterminal."; + else throw " does not have a single nonterminal marked."; } BGFGrammar runEliminate(str x, grammar(rs, ps)) @@ -296,7 +345,7 @@ BGFGrammar runEquate(str x, str y, grammar(rs, ps)) <_,ps2y,_> = splitPbyW(ps,innt(y)); gxy = runRenameN(x,y,grammar([],ps2x)); gyy = grammar([],ps2y); - if (!gdt(gxy,gyy)) throw "Definitions of nonterminals and must be equal."; + if (!gdts(gxy,gyy)) throw "Definitions of nonterminals and must be equal."; //println(grammar(rs - x,ps1x + ps3x)); if (x in usedNs(ps1x + ps3x)) return runReplace(nonterminal(x),nonterminal(y),globally(),grammar(rs - x,ps1x + ps3x)); @@ -310,10 +359,13 @@ BGFGrammar runExtract(BGFProduction p, XBGFContext w, BGFGrammar g) return g; } -BGFGrammar runFactor(BGFExpression e1, BGFExpression e2, XBGFContext w, BGFGrammar g) +BGFGrammar runFactor(BGFExpression e1, BGFExpression e2, XBGFContext w, g) { - // TODO - return g; + e3 = normalise(makeDistributed(e1)); + e4 = normalise(makeDistributed(e2)); + if (!eqE(e3, e4)) + throw "Expressions and must be related by distribution."; + return runReplace(e1,e2,w,g); } BGFGrammar runFold(str x, XBGFContext w, BGFGrammar g) @@ -322,13 +374,24 @@ BGFGrammar runFold(str x, XBGFContext w, BGFGrammar g) return g; } -BGFGrammar runHorizontal(XBGFContext w, BGFGrammar g) +BGFGrammar runHorizontal(XBGFContext w, grammar(rs,ps)) { - // TODO - return g; + // For xbgf1.pro, the context must be strictly vertical. Here we are more relaxed. + = splitPbyW(ps,w); + list[BGFExpression] es4 = []; + for (production(str l, str x, BGFExpression e) <- ps2) + if (choice(L) := e) + es4 += L; + elseif (l == "") + es4 += e; + else + es4 += selectable(l,e); + if (innt(str x) := w) + return grammar(rs,ps1 + production("",x,choice(es4)) + ps3); + else throw "Scope for horizontal must be a nonterminal."; } -BGFGrammar runImport(list[BGFProduction] ps1, grammar(rs, ps2)) +BGFGrammar runImportG(list[BGFProduction] ps1, grammar(rs, ps2)) { defs1 = definedNs(ps1); defs12 = defs1 & definedNs(ps2); @@ -343,8 +406,7 @@ BGFGrammar runInject(BGFProduction p1, grammar(rs, ps)) p2 = demark(p1); if (p2 notin ps) throw "Production rule not found."; - p3 = unmark(p1); - return grammar(rs, ps - p2 + p3); + return grammar(rs, replaceP(ps,p2,unmark(p1))); } BGFGrammar runInline(str x, BGFGrammar g) @@ -414,8 +476,7 @@ BGFGrammar runProject(BGFProduction p1, grammar(rs, ps)) p2 = unmark(p1); if (p2 notin ps) throw "Production rule not found."; - p3 = demark(p1); - return grammar(rs, ps - p2 + p3); + return grammar(rs, replaceP(ps,p2,demark(p1))); } BGFGrammar runRAssoc(BGFProduction p, BGFGrammar g) @@ -441,10 +502,9 @@ BGFGrammar runRedefine(list[BGFProduction] ps1, grammar(list[str] rs, ps2)) BGFGrammar runRemoveH(BGFProduction p1, grammar(roots, ps)) { p2 = unmark(p1); - p3 = demark(p1); if (p2 notin ps) throw "Production rule not found."; - return grammar(roots, ps - p2 + p3); + return grammar(roots, replaceP(ps,p2,demark(p1))); } BGFGrammar runRemoveV(BGFProduction p1, grammar(roots, ps)) @@ -623,16 +683,37 @@ BGFGrammar runUnlabel(str x, grammar(rs,ps)) throw "Label is not found or not unique"; // the latter should never happen } -BGFGrammar runUpgrade(BGFProduction p1, BGFProduction p2, BGFGrammar g) +BGFGrammar runUpgrade(BGFProduction p1, BGFProduction p2, grammar(rs, ps)) { - // TODO - return g; + if (/marked(nonterminal(str x)) := p1) + if (production(str l,x,BGFExpression e) := p2) + { + p3 = visit(p1){case marked(_) => e}; + p3 = normalise(p3); + return grammar(rs,replaceP(ps,p3,unmark(p1))); + } + else throw " and do not agree on nonterminal."; + else throw " does not have a single nonterminal marked."; } -BGFGrammar runVertical(XBGFContext w, BGFGrammar g) +BGFGrammar runVertical(XBGFContext w, grammar(rs,ps)) { - // TODO - return g; + = splitPbyW(ps,w); + ps4 = []; + for (production(str l, str x, BGFExpression e) <- ps2) + if (choice(L) := e) + for (se <- L) + if (selectable(str s, BGFExpression e2) := se) + if (/production(s,_,_) := ps) + throw "Outermost selector clashes with an existing label."; + elseif (/production(s,_,_) := ps4) + throw "Outermost selectors ambiguous at ."; + else + ps4 += production(s,x,e2); + else + ps4 += production("",x,se); + else ps4 += production(l,x,e); + return grammar(rs,ps1 + ps4 + ps3); } BGFGrammar runWiden(BGFExpression e1, BGFExpression e2, XBGFContext w, BGFGrammar g) @@ -687,6 +768,16 @@ BGFProduction demark (BGFProduction p1) return normalise(p2); } + +BGFProduction replaceMarker (BGFProduction p1, BGFExpression e) +{ + p2 = visit(p1) + { + case marked(_) => e + } + return normalise(p2); +} + // remove selectors from marked subexpressions BGFProduction demarkS (BGFProduction p1) { @@ -718,8 +809,26 @@ BGFProduction demarkS (BGFProduction p1) // return ; //} +// TODO: overdesigned, use replaceP instead +// order-preserving splitting of production rules by an existing production rule +// returns +tuple[list[BGFProduction],list[BGFProduction]] splitPbyP(list[BGFProduction] ps, BGFProduction p0) +{ + if (p0 notin ps) throw "Production rule

not found."; + bool hit = false; + list[BGFProduction] ps1 = [], ps2 = []; + for (p <- ps) + if (eqP(p0,p)) + hit = true; + elseif (hit) + ps2 += p; + else + ps1 += p; + return ; +} + // order-preserving splitting of production rules -// returns +// returns tuple[list[BGFProduction],list[BGFProduction],list[BGFProduction]] splitPbyW(list[BGFProduction] ps, XBGFContext w) { if (globally() := w) diff --git a/shared/rascal/src/transform/XBGFTest.rsc b/shared/rascal/src/transform/XBGFTest.rsc index d0196922..10d94f99 100644 --- a/shared/rascal/src/transform/XBGFTest.rsc +++ b/shared/rascal/src/transform/XBGFTest.rsc @@ -154,291 +154,291 @@ map[str,tuple[XBGFSequence,BGFGrammar,BGFGrammar]] test_data = ( "yaccify_right_plus": <[yaccify([production("","foo",nonterminal("bar")),production("","foo",sequence([nonterminal("bar"),nonterminal("foo")]))])],grammar([],[production("","foo",plus(nonterminal("bar")))]),grammar([],[production("","foo",nonterminal("bar")),production("","foo",sequence([nonterminal("bar"),nonterminal("foo")]))])> ); -void show_abridge() { = test_data["abridge"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_abstractize() { = test_data["abstractize"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_add_horizontal() { = test_data["add_horizontal"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_add_inside() { = test_data["add_inside"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_add_vertical() { = test_data["add_vertical"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_add_vertical_middle() { = test_data["add_vertical_middle"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_add_vertical_scattered() { = test_data["add_vertical_scattered"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_anonymize_multiple() { = test_data["anonymize_multiple"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_anonymize_single() { = test_data["anonymize_single"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_appear_q() { = test_data["appear_q"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_appear_s() { = test_data["appear_s"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_chain_l() { = test_data["chain_l"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_chain_n() { = test_data["chain_n"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_concretize() { = test_data["concretize"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_deanonymize_multiple() { = test_data["deanonymize_multiple"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_deanonymize_single() { = test_data["deanonymize_single"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_define() { = test_data["define"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_designate() { = test_data["designate"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_detour() { = test_data["detour"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_deyaccify_eps() { = test_data["deyaccify_eps"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_deyaccify_left() { = test_data["deyaccify_left"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_deyaccify_left_plus() { = test_data["deyaccify_left_plus"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_deyaccify_right() { = test_data["deyaccify_right"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_deyaccify_right_plus() { = test_data["deyaccify_right_plus"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_disappear_q() { = test_data["disappear_q"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_disappear_s() { = test_data["disappear_s"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_distribute_l() { = test_data["distribute_l"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_distribute_nt() { = test_data["distribute_nt"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_downgrade() { = test_data["downgrade"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_eliminate() { = test_data["eliminate"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_equate1() { = test_data["equate1"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_equate2() { = test_data["equate2"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_equate3() { = test_data["equate3"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_equate4() { = test_data["equate4"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_extract_l() { = test_data["extract_l"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_extract_nt() { = test_data["extract_nt"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_extract_subch() { = test_data["extract_subch"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_extract_subseq_multiple() { = test_data["extract_subseq_multiple"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_extract_subseq_single() { = test_data["extract_subseq_single"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_factor_eps() { = test_data["factor_eps"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_factor_global() { = test_data["factor_global"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_factor_local() { = test_data["factor_local"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_factor_nt() { = test_data["factor_nt"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_fold() { = test_data["fold"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_fold_l() { = test_data["fold_l"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_fold_nt() { = test_data["fold_nt"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_horizontal_l() { = test_data["horizontal_l"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_horizontal_n() { = test_data["horizontal_n"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_import() { = test_data["import"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_inject() { = test_data["inject"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_inline() { = test_data["inline"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_introduce() { = test_data["introduce"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_iterate_l() { = test_data["iterate_l"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_iterate_p() { = test_data["iterate_p"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_iterate_r() { = test_data["iterate_r"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_lassoc_l() { = test_data["lassoc_l"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_lassoc_p() { = test_data["lassoc_p"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_lassoc_r() { = test_data["lassoc_r"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_massage_assoc_p() { = test_data["massage_assoc_p"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_massage_assoc_q() { = test_data["massage_assoc_q"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_massage_assoc_s() { = test_data["massage_assoc_s"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_massage_ch_ep() { = test_data["massage_ch_ep"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_massage_ch_eq() { = test_data["massage_ch_eq"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_massage_ch_es() { = test_data["massage_ch_es"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_massage_ch_ex() { = test_data["massage_ch_ex"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_massage_ch_ps() { = test_data["massage_ch_ps"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_massage_ch_qp() { = test_data["massage_ch_qp"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_massage_ch_qs() { = test_data["massage_ch_qs"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_massage_ch_xp() { = test_data["massage_ch_xp"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_massage_ch_xq() { = test_data["massage_ch_xq"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_massage_ch_xs() { = test_data["massage_ch_xs"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_massage_ch_xx1() { = test_data["massage_ch_xx1"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_massage_ch_xx2() { = test_data["massage_ch_xx2"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_massage_ch_xx3() { = test_data["massage_ch_xx3"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_massage_comp_pp() { = test_data["massage_comp_pp"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_massage_comp_pq() { = test_data["massage_comp_pq"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_massage_comp_ps() { = test_data["massage_comp_ps"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_massage_comp_qp() { = test_data["massage_comp_qp"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_massage_comp_qq() { = test_data["massage_comp_qq"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_massage_comp_qs() { = test_data["massage_comp_qs"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_massage_comp_sp() { = test_data["massage_comp_sp"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_massage_comp_sq() { = test_data["massage_comp_sq"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_massage_comp_ss() { = test_data["massage_comp_ss"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_massage_complex() { = test_data["massage_complex"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_massage_distr_ch() { = test_data["massage_distr_ch"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_massage_sel_s() { = test_data["massage_sel_s"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_massage_seq_pq() { = test_data["massage_seq_pq"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_massage_seq_ps() { = test_data["massage_seq_ps"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_massage_seq_sq() { = test_data["massage_seq_sq"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_massage_seq_ss() { = test_data["massage_seq_ss"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_massage_seq_xs() { = test_data["massage_seq_xs"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_narrow_global() { = test_data["narrow_global"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_narrow_l() { = test_data["narrow_l"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_narrow_nt() { = test_data["narrow_nt"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_permute() { = test_data["permute"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_project() { = test_data["project"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_rassoc_p() { = test_data["rassoc_p"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_rassoc_s() { = test_data["rassoc_s"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_redefine() { = test_data["redefine"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_remove_horizontal() { = test_data["remove_horizontal"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_remove_inside() { = test_data["remove_inside"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_remove_vertical() { = test_data["remove_vertical"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_rename4() { = test_data["rename4"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_renameL() { = test_data["renameL"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_renameN() { = test_data["renameN"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_renameS() { = test_data["renameS"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_renameT() { = test_data["renameT"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_replace_choice() { = test_data["replace_choice"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_replace_choice_part() { = test_data["replace_choice_part"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_replace_global() { = test_data["replace_global"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_replace_l() { = test_data["replace_l"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_replace_nt() { = test_data["replace_nt"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_replace_seq() { = test_data["replace_seq"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_reroot() { = test_data["reroot"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_split1() { = test_data["split1"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_split2() { = test_data["split2"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_split3() { = test_data["split3"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_split4() { = test_data["split4"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_strip2() { = test_data["strip2"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_strip4() { = test_data["strip4"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_unchain_l() { = test_data["unchain_l"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_unchain_n() { = test_data["unchain_n"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_undefine1() { = test_data["undefine1"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_undefine2() { = test_data["undefine2"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_unfold() { = test_data["unfold"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_unfold_l() { = test_data["unfold_l"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_unfold_normalize() { = test_data["unfold_normalize"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_unfold_nt() { = test_data["unfold_nt"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_unite_eq() { = test_data["unite_eq"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_unite_normal() { = test_data["unite_normal"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_unlabel() { = test_data["unlabel"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_upgrade() { = test_data["upgrade"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_vertical_l() { = test_data["vertical_l"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_vertical_s() { = test_data["vertical_s"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_widen_global() { = test_data["widen_global"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_widen_l() { = test_data["widen_l"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_widen_nt() { = test_data["widen_nt"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_widen_sub() { = test_data["widen_sub"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_yaccify_eps() { = test_data["yaccify_eps"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_yaccify_left() { = test_data["yaccify_left"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_yaccify_left_plus() { = test_data["yaccify_left_plus"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_yaccify_right() { = test_data["yaccify_right"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } -void show_yaccify_right_plus() { = test_data["yaccify_right_plus"]; println("Input ");println("Transformations: ");println("Expected output ");println("Actual output "); } +void show_abridge() { = test_data["abridge"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_abstractize() { = test_data["abstractize"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_add_horizontal() { = test_data["add_horizontal"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_add_inside() { = test_data["add_inside"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_add_vertical() { = test_data["add_vertical"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_add_vertical_middle() { = test_data["add_vertical_middle"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_add_vertical_scattered() { = test_data["add_vertical_scattered"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_anonymize_multiple() { = test_data["anonymize_multiple"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_anonymize_single() { = test_data["anonymize_single"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_appear_q() { = test_data["appear_q"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_appear_s() { = test_data["appear_s"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_chain_l() { = test_data["chain_l"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_chain_n() { = test_data["chain_n"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_concretize() { = test_data["concretize"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_deanonymize_multiple() { = test_data["deanonymize_multiple"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_deanonymize_single() { = test_data["deanonymize_single"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_define() { = test_data["define"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_designate() { = test_data["designate"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_detour() { = test_data["detour"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_deyaccify_eps() { = test_data["deyaccify_eps"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_deyaccify_left() { = test_data["deyaccify_left"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_deyaccify_left_plus() { = test_data["deyaccify_left_plus"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_deyaccify_right() { = test_data["deyaccify_right"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_deyaccify_right_plus() { = test_data["deyaccify_right_plus"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_disappear_q() { = test_data["disappear_q"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_disappear_s() { = test_data["disappear_s"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_distribute_l() { = test_data["distribute_l"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_distribute_nt() { = test_data["distribute_nt"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_downgrade() { = test_data["downgrade"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_eliminate() { = test_data["eliminate"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_equate1() { = test_data["equate1"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_equate2() { = test_data["equate2"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_equate3() { = test_data["equate3"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_equate4() { = test_data["equate4"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_extract_l() { = test_data["extract_l"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_extract_nt() { = test_data["extract_nt"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_extract_subch() { = test_data["extract_subch"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_extract_subseq_multiple() { = test_data["extract_subseq_multiple"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_extract_subseq_single() { = test_data["extract_subseq_single"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_factor_eps() { = test_data["factor_eps"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_factor_global() { = test_data["factor_global"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_factor_local() { = test_data["factor_local"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_factor_nt() { = test_data["factor_nt"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_fold() { = test_data["fold"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_fold_l() { = test_data["fold_l"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_fold_nt() { = test_data["fold_nt"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_horizontal_l() { = test_data["horizontal_l"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_horizontal_n() { = test_data["horizontal_n"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_import() { = test_data["import"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_inject() { = test_data["inject"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_inline() { = test_data["inline"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_introduce() { = test_data["introduce"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_iterate_l() { = test_data["iterate_l"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_iterate_p() { = test_data["iterate_p"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_iterate_r() { = test_data["iterate_r"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_lassoc_l() { = test_data["lassoc_l"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_lassoc_p() { = test_data["lassoc_p"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_lassoc_r() { = test_data["lassoc_r"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_massage_assoc_p() { = test_data["massage_assoc_p"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_massage_assoc_q() { = test_data["massage_assoc_q"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_massage_assoc_s() { = test_data["massage_assoc_s"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_massage_ch_ep() { = test_data["massage_ch_ep"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_massage_ch_eq() { = test_data["massage_ch_eq"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_massage_ch_es() { = test_data["massage_ch_es"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_massage_ch_ex() { = test_data["massage_ch_ex"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_massage_ch_ps() { = test_data["massage_ch_ps"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_massage_ch_qp() { = test_data["massage_ch_qp"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_massage_ch_qs() { = test_data["massage_ch_qs"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_massage_ch_xp() { = test_data["massage_ch_xp"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_massage_ch_xq() { = test_data["massage_ch_xq"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_massage_ch_xs() { = test_data["massage_ch_xs"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_massage_ch_xx1() { = test_data["massage_ch_xx1"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_massage_ch_xx2() { = test_data["massage_ch_xx2"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_massage_ch_xx3() { = test_data["massage_ch_xx3"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_massage_comp_pp() { = test_data["massage_comp_pp"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_massage_comp_pq() { = test_data["massage_comp_pq"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_massage_comp_ps() { = test_data["massage_comp_ps"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_massage_comp_qp() { = test_data["massage_comp_qp"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_massage_comp_qq() { = test_data["massage_comp_qq"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_massage_comp_qs() { = test_data["massage_comp_qs"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_massage_comp_sp() { = test_data["massage_comp_sp"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_massage_comp_sq() { = test_data["massage_comp_sq"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_massage_comp_ss() { = test_data["massage_comp_ss"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_massage_complex() { = test_data["massage_complex"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_massage_distr_ch() { = test_data["massage_distr_ch"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_massage_sel_s() { = test_data["massage_sel_s"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_massage_seq_pq() { = test_data["massage_seq_pq"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_massage_seq_ps() { = test_data["massage_seq_ps"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_massage_seq_sq() { = test_data["massage_seq_sq"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_massage_seq_ss() { = test_data["massage_seq_ss"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_massage_seq_xs() { = test_data["massage_seq_xs"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_narrow_global() { = test_data["narrow_global"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_narrow_l() { = test_data["narrow_l"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_narrow_nt() { = test_data["narrow_nt"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_permute() { = test_data["permute"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_project() { = test_data["project"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_rassoc_p() { = test_data["rassoc_p"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_rassoc_s() { = test_data["rassoc_s"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_redefine() { = test_data["redefine"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_remove_horizontal() { = test_data["remove_horizontal"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_remove_inside() { = test_data["remove_inside"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_remove_vertical() { = test_data["remove_vertical"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_rename4() { = test_data["rename4"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_renameL() { = test_data["renameL"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_renameN() { = test_data["renameN"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_renameS() { = test_data["renameS"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_renameT() { = test_data["renameT"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_replace_choice() { = test_data["replace_choice"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_replace_choice_part() { = test_data["replace_choice_part"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_replace_global() { = test_data["replace_global"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_replace_l() { = test_data["replace_l"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_replace_nt() { = test_data["replace_nt"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_replace_seq() { = test_data["replace_seq"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_reroot() { = test_data["reroot"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_split1() { = test_data["split1"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_split2() { = test_data["split2"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_split3() { = test_data["split3"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_split4() { = test_data["split4"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_strip2() { = test_data["strip2"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_strip4() { = test_data["strip4"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_unchain_l() { = test_data["unchain_l"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_unchain_n() { = test_data["unchain_n"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_undefine1() { = test_data["undefine1"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_undefine2() { = test_data["undefine2"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_unfold() { = test_data["unfold"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_unfold_l() { = test_data["unfold_l"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_unfold_normalize() { = test_data["unfold_normalize"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_unfold_nt() { = test_data["unfold_nt"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_unite_eq() { = test_data["unite_eq"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_unite_normal() { = test_data["unite_normal"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_unlabel() { = test_data["unlabel"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_upgrade() { = test_data["upgrade"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_vertical_l() { = test_data["vertical_l"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_vertical_s() { = test_data["vertical_s"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_widen_global() { = test_data["widen_global"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_widen_l() { = test_data["widen_l"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_widen_nt() { = test_data["widen_nt"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_widen_sub() { = test_data["widen_sub"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_yaccify_eps() { = test_data["yaccify_eps"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_yaccify_left() { = test_data["yaccify_left"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_yaccify_left_plus() { = test_data["yaccify_left_plus"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_yaccify_right() { = test_data["yaccify_right"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } +void show_yaccify_right_plus() { = test_data["yaccify_right_plus"]; println("Input ");println("Transformations: ");println("Expected output ");bgf3=transform(xbgf,bgf1);println("Actual output "); gdtv(bgf3,bgf2); } -test bool test_abridge() { = test_data["abridge"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_abstractize() { = test_data["abstractize"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_add_horizontal() { = test_data["add_horizontal"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_add_inside() { = test_data["add_inside"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_add_vertical() { = test_data["add_vertical"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_add_vertical_middle() { = test_data["add_vertical_middle"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_add_vertical_scattered() { = test_data["add_vertical_scattered"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_anonymize_multiple() { = test_data["anonymize_multiple"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_anonymize_single() { = test_data["anonymize_single"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_appear_q() { = test_data["appear_q"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_appear_s() { = test_data["appear_s"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_chain_l() { = test_data["chain_l"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_chain_n() { = test_data["chain_n"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_concretize() { = test_data["concretize"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_deanonymize_multiple() { = test_data["deanonymize_multiple"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_deanonymize_single() { = test_data["deanonymize_single"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_define() { = test_data["define"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_designate() { = test_data["designate"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_detour() { = test_data["detour"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_deyaccify_eps() { = test_data["deyaccify_eps"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_deyaccify_left() { = test_data["deyaccify_left"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_deyaccify_left_plus() { = test_data["deyaccify_left_plus"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_deyaccify_right() { = test_data["deyaccify_right"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_deyaccify_right_plus() { = test_data["deyaccify_right_plus"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_disappear_q() { = test_data["disappear_q"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_disappear_s() { = test_data["disappear_s"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_distribute_l() { = test_data["distribute_l"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_distribute_nt() { = test_data["distribute_nt"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_downgrade() { = test_data["downgrade"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_eliminate() { = test_data["eliminate"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_equate1() { = test_data["equate1"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_equate2() { = test_data["equate2"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_equate3() { = test_data["equate3"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_equate4() { = test_data["equate4"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_extract_l() { = test_data["extract_l"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_extract_nt() { = test_data["extract_nt"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_extract_subch() { = test_data["extract_subch"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_extract_subseq_multiple() { = test_data["extract_subseq_multiple"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_extract_subseq_single() { = test_data["extract_subseq_single"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_factor_eps() { = test_data["factor_eps"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_factor_global() { = test_data["factor_global"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_factor_local() { = test_data["factor_local"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_factor_nt() { = test_data["factor_nt"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_fold() { = test_data["fold"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_fold_l() { = test_data["fold_l"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_fold_nt() { = test_data["fold_nt"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_horizontal_l() { = test_data["horizontal_l"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_horizontal_n() { = test_data["horizontal_n"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_import() { = test_data["import"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_inject() { = test_data["inject"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_inline() { = test_data["inline"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_introduce() { = test_data["introduce"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_iterate_l() { = test_data["iterate_l"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_iterate_p() { = test_data["iterate_p"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_iterate_r() { = test_data["iterate_r"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_lassoc_l() { = test_data["lassoc_l"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_lassoc_p() { = test_data["lassoc_p"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_lassoc_r() { = test_data["lassoc_r"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_massage_assoc_p() { = test_data["massage_assoc_p"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_massage_assoc_q() { = test_data["massage_assoc_q"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_massage_assoc_s() { = test_data["massage_assoc_s"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_massage_ch_ep() { = test_data["massage_ch_ep"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_massage_ch_eq() { = test_data["massage_ch_eq"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_massage_ch_es() { = test_data["massage_ch_es"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_massage_ch_ex() { = test_data["massage_ch_ex"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_massage_ch_ps() { = test_data["massage_ch_ps"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_massage_ch_qp() { = test_data["massage_ch_qp"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_massage_ch_qs() { = test_data["massage_ch_qs"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_massage_ch_xp() { = test_data["massage_ch_xp"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_massage_ch_xq() { = test_data["massage_ch_xq"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_massage_ch_xs() { = test_data["massage_ch_xs"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_massage_ch_xx1() { = test_data["massage_ch_xx1"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_massage_ch_xx2() { = test_data["massage_ch_xx2"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_massage_ch_xx3() { = test_data["massage_ch_xx3"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_massage_comp_pp() { = test_data["massage_comp_pp"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_massage_comp_pq() { = test_data["massage_comp_pq"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_massage_comp_ps() { = test_data["massage_comp_ps"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_massage_comp_qp() { = test_data["massage_comp_qp"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_massage_comp_qq() { = test_data["massage_comp_qq"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_massage_comp_qs() { = test_data["massage_comp_qs"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_massage_comp_sp() { = test_data["massage_comp_sp"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_massage_comp_sq() { = test_data["massage_comp_sq"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_massage_comp_ss() { = test_data["massage_comp_ss"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_massage_complex() { = test_data["massage_complex"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_massage_distr_ch() { = test_data["massage_distr_ch"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_massage_sel_s() { = test_data["massage_sel_s"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_massage_seq_pq() { = test_data["massage_seq_pq"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_massage_seq_ps() { = test_data["massage_seq_ps"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_massage_seq_sq() { = test_data["massage_seq_sq"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_massage_seq_ss() { = test_data["massage_seq_ss"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_massage_seq_xs() { = test_data["massage_seq_xs"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_narrow_global() { = test_data["narrow_global"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_narrow_l() { = test_data["narrow_l"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_narrow_nt() { = test_data["narrow_nt"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_permute() { = test_data["permute"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_project() { = test_data["project"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_rassoc_p() { = test_data["rassoc_p"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_rassoc_s() { = test_data["rassoc_s"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_redefine() { = test_data["redefine"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_remove_horizontal() { = test_data["remove_horizontal"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_remove_inside() { = test_data["remove_inside"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_remove_vertical() { = test_data["remove_vertical"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_rename4() { = test_data["rename4"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_renameL() { = test_data["renameL"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_renameN() { = test_data["renameN"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_renameS() { = test_data["renameS"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_renameT() { = test_data["renameT"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_replace_choice() { = test_data["replace_choice"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_replace_choice_part() { = test_data["replace_choice_part"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_replace_global() { = test_data["replace_global"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_replace_l() { = test_data["replace_l"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_replace_nt() { = test_data["replace_nt"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_replace_seq() { = test_data["replace_seq"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_reroot() { = test_data["reroot"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_split1() { = test_data["split1"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_split2() { = test_data["split2"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_split3() { = test_data["split3"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_split4() { = test_data["split4"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_strip2() { = test_data["strip2"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_strip4() { = test_data["strip4"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_unchain_l() { = test_data["unchain_l"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_unchain_n() { = test_data["unchain_n"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_undefine1() { = test_data["undefine1"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_undefine2() { = test_data["undefine2"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_unfold() { = test_data["unfold"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_unfold_l() { = test_data["unfold_l"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_unfold_normalize() { = test_data["unfold_normalize"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_unfold_nt() { = test_data["unfold_nt"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_unite_eq() { = test_data["unite_eq"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_unite_normal() { = test_data["unite_normal"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_unlabel() { = test_data["unlabel"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_upgrade() { = test_data["upgrade"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_vertical_l() { = test_data["vertical_l"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_vertical_s() { = test_data["vertical_s"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_widen_global() { = test_data["widen_global"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_widen_l() { = test_data["widen_l"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_widen_nt() { = test_data["widen_nt"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_widen_sub() { = test_data["widen_sub"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_yaccify_eps() { = test_data["yaccify_eps"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_yaccify_left() { = test_data["yaccify_left"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_yaccify_left_plus() { = test_data["yaccify_left_plus"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_yaccify_right() { = test_data["yaccify_right"]; return gdt(transform(xbgf,bgf1),bgf2); } -test bool test_yaccify_right_plus() { = test_data["yaccify_right_plus"]; return gdt(transform(xbgf,bgf1),bgf2); } +test bool test_abridge() { = test_data["abridge"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_abstractize() { = test_data["abstractize"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_add_horizontal() { = test_data["add_horizontal"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_add_inside() { = test_data["add_inside"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_add_vertical() { = test_data["add_vertical"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_add_vertical_middle() { = test_data["add_vertical_middle"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_add_vertical_scattered() { = test_data["add_vertical_scattered"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_anonymize_multiple() { = test_data["anonymize_multiple"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_anonymize_single() { = test_data["anonymize_single"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_appear_q() { = test_data["appear_q"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_appear_s() { = test_data["appear_s"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_chain_l() { = test_data["chain_l"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_chain_n() { = test_data["chain_n"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_concretize() { = test_data["concretize"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_deanonymize_multiple() { = test_data["deanonymize_multiple"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_deanonymize_single() { = test_data["deanonymize_single"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_define() { = test_data["define"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_designate() { = test_data["designate"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_detour() { = test_data["detour"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_deyaccify_eps() { = test_data["deyaccify_eps"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_deyaccify_left() { = test_data["deyaccify_left"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_deyaccify_left_plus() { = test_data["deyaccify_left_plus"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_deyaccify_right() { = test_data["deyaccify_right"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_deyaccify_right_plus() { = test_data["deyaccify_right_plus"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_disappear_q() { = test_data["disappear_q"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_disappear_s() { = test_data["disappear_s"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_distribute_l() { = test_data["distribute_l"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_distribute_nt() { = test_data["distribute_nt"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_downgrade() { = test_data["downgrade"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_eliminate() { = test_data["eliminate"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_equate1() { = test_data["equate1"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_equate2() { = test_data["equate2"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_equate3() { = test_data["equate3"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_equate4() { = test_data["equate4"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_extract_l() { = test_data["extract_l"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_extract_nt() { = test_data["extract_nt"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_extract_subch() { = test_data["extract_subch"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_extract_subseq_multiple() { = test_data["extract_subseq_multiple"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_extract_subseq_single() { = test_data["extract_subseq_single"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_factor_eps() { = test_data["factor_eps"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_factor_global() { = test_data["factor_global"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_factor_local() { = test_data["factor_local"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_factor_nt() { = test_data["factor_nt"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_fold() { = test_data["fold"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_fold_l() { = test_data["fold_l"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_fold_nt() { = test_data["fold_nt"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_horizontal_l() { = test_data["horizontal_l"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_horizontal_n() { = test_data["horizontal_n"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_import() { = test_data["import"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_inject() { = test_data["inject"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_inline() { = test_data["inline"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_introduce() { = test_data["introduce"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_iterate_l() { = test_data["iterate_l"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_iterate_p() { = test_data["iterate_p"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_iterate_r() { = test_data["iterate_r"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_lassoc_l() { = test_data["lassoc_l"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_lassoc_p() { = test_data["lassoc_p"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_lassoc_r() { = test_data["lassoc_r"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_massage_assoc_p() { = test_data["massage_assoc_p"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_massage_assoc_q() { = test_data["massage_assoc_q"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_massage_assoc_s() { = test_data["massage_assoc_s"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_massage_ch_ep() { = test_data["massage_ch_ep"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_massage_ch_eq() { = test_data["massage_ch_eq"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_massage_ch_es() { = test_data["massage_ch_es"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_massage_ch_ex() { = test_data["massage_ch_ex"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_massage_ch_ps() { = test_data["massage_ch_ps"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_massage_ch_qp() { = test_data["massage_ch_qp"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_massage_ch_qs() { = test_data["massage_ch_qs"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_massage_ch_xp() { = test_data["massage_ch_xp"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_massage_ch_xq() { = test_data["massage_ch_xq"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_massage_ch_xs() { = test_data["massage_ch_xs"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_massage_ch_xx1() { = test_data["massage_ch_xx1"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_massage_ch_xx2() { = test_data["massage_ch_xx2"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_massage_ch_xx3() { = test_data["massage_ch_xx3"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_massage_comp_pp() { = test_data["massage_comp_pp"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_massage_comp_pq() { = test_data["massage_comp_pq"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_massage_comp_ps() { = test_data["massage_comp_ps"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_massage_comp_qp() { = test_data["massage_comp_qp"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_massage_comp_qq() { = test_data["massage_comp_qq"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_massage_comp_qs() { = test_data["massage_comp_qs"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_massage_comp_sp() { = test_data["massage_comp_sp"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_massage_comp_sq() { = test_data["massage_comp_sq"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_massage_comp_ss() { = test_data["massage_comp_ss"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_massage_complex() { = test_data["massage_complex"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_massage_distr_ch() { = test_data["massage_distr_ch"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_massage_sel_s() { = test_data["massage_sel_s"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_massage_seq_pq() { = test_data["massage_seq_pq"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_massage_seq_ps() { = test_data["massage_seq_ps"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_massage_seq_sq() { = test_data["massage_seq_sq"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_massage_seq_ss() { = test_data["massage_seq_ss"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_massage_seq_xs() { = test_data["massage_seq_xs"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_narrow_global() { = test_data["narrow_global"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_narrow_l() { = test_data["narrow_l"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_narrow_nt() { = test_data["narrow_nt"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_permute() { = test_data["permute"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_project() { = test_data["project"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_rassoc_p() { = test_data["rassoc_p"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_rassoc_s() { = test_data["rassoc_s"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_redefine() { = test_data["redefine"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_remove_horizontal() { = test_data["remove_horizontal"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_remove_inside() { = test_data["remove_inside"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_remove_vertical() { = test_data["remove_vertical"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_rename4() { = test_data["rename4"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_renameL() { = test_data["renameL"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_renameN() { = test_data["renameN"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_renameS() { = test_data["renameS"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_renameT() { = test_data["renameT"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_replace_choice() { = test_data["replace_choice"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_replace_choice_part() { = test_data["replace_choice_part"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_replace_global() { = test_data["replace_global"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_replace_l() { = test_data["replace_l"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_replace_nt() { = test_data["replace_nt"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_replace_seq() { = test_data["replace_seq"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_reroot() { = test_data["reroot"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_split1() { = test_data["split1"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_split2() { = test_data["split2"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_split3() { = test_data["split3"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_split4() { = test_data["split4"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_strip2() { = test_data["strip2"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_strip4() { = test_data["strip4"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_unchain_l() { = test_data["unchain_l"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_unchain_n() { = test_data["unchain_n"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_undefine1() { = test_data["undefine1"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_undefine2() { = test_data["undefine2"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_unfold() { = test_data["unfold"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_unfold_l() { = test_data["unfold_l"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_unfold_normalize() { = test_data["unfold_normalize"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_unfold_nt() { = test_data["unfold_nt"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_unite_eq() { = test_data["unite_eq"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_unite_normal() { = test_data["unite_normal"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_unlabel() { = test_data["unlabel"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_upgrade() { = test_data["upgrade"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_vertical_l() { = test_data["vertical_l"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_vertical_s() { = test_data["vertical_s"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_widen_global() { = test_data["widen_global"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_widen_l() { = test_data["widen_l"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_widen_nt() { = test_data["widen_nt"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_widen_sub() { = test_data["widen_sub"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_yaccify_eps() { = test_data["yaccify_eps"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_yaccify_left() { = test_data["yaccify_left"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_yaccify_left_plus() { = test_data["yaccify_left_plus"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_yaccify_right() { = test_data["yaccify_right"]; return gdts(transform(xbgf,bgf1),bgf2); } +test bool test_yaccify_right_plus() { = test_data["yaccify_right_plus"]; return gdts(transform(xbgf,bgf1),bgf2); }