úÎF.AFU      !"#$%&'()*+,-./0123456789:;<= > ? @ A B C D E F G H I J K L M N O P Q R S T None!"%&*,/69:;<=DLOQRTÛA singleton vertex is successfully parsed only if no other vertex is active yet. In particular, this allows us to insert "starting" points into graphs that mostly deal with edges. As a parsing symbol, it provides an Int which is the node index.UNone!"%&*,/69:;<=DLOQRTKAn edge in a graph. As a parsing symbol, it will provide (From:.To) pairs. U    None!"%&*,/69:;<=DLOQRT V None!"%&*,/69:;<=DLOQRTTODO move to definition of WAnd if the set has a Last4 boundary, then we point from somewhere in the set To the NewNode , which is Last. In case our sets have a FirstI boundary, then we always point from the boundary "into" the set. Hence  SetNode == To and NewNode == From.!0We need to separate out the two cases of having  BS1 First and  BS1 Last& as this changes how we fill the Edge.;TODO separate out these cases into an Edge-Choice class ...  !" "!  !"None!"%&*,/69:;<=DLOQRT'0We need to separate out the two cases of having  BS1 First and  BS1 Last& as this changes how we fill the Edge.;TODO separate out these cases into an Edge-Choice class ...#$%&'(('&%$##$%&'(None!"%&*,/69:;<=DLOQRT)*+,--,+*))*+,-None!"%&*,/69:;<=DLOQRT0cTODO 17.2.2017 added; probably wrong together with the syntactic variable instance in subtle ways../012210/../012None!"%&*,/69:;<=DLOQRT 3456789:;<V43 <;:4938765567893:4;< None!"%&*,/69:;<=DLOQRT=>??>==>? None!"%&*,/69:;<=DLOQRT XYZ[\]W^V43U_ None!"%&*,/69:;<=DLOQRT@ABCDDCBA@@ABCDNone!"%&*,/69:;<=DLOQRTU  None!"%&*,/69:;<=DLOQRTEFGHIVEIHEGFFGHEI None!"%&*,/69:;<=DLOQRT JTODO 18.2.2017 addedKTODO 18.2.2017 addedLTODO 17.2.2017 addedMTODO 17.2.2017 addedN$Generate all possible bitsets until fullSet is reached. from is our Last, and to may not be set.O1Given indices that index _only_ the current edge  First -> Last4, we want to go over all possible set combinations.The to1 element from an edge boundary will serve as the First3 element in a rule @X -> Last (from :-> to) FirstP A single BoundaryP index allows us to get the optimal results ending on each individual boundary.QA UnitL index expands to the full set with all possible boundaries tried in order.S8For the inside case, we try all possible boundaries for Y in  X -> Y e$. For the outside case we now have: Y -> X e where Y is now extended. (yset,ybnd) -> (yset + ±,±) for all ± that are not in yset.TODO 17.2.2017 addedT7Since there is only one boundary, it doesn't matter if k==First or k==Last;. As a result, the "name" of the boundary is kept variable._Given the outer (set,bnd) system, we try all boundaries ± for (set-bnd,±) for the smaller set Y in X -> Y e.*TODO After this case we should only allow S9, since we write, in essence, left-linear grammars here.-TODO we should try to statically assure that rb==0K holds always in this case. It should because every other symbol moves to  IVariable) once the number of of reserved bits is >0.9TODO kind-of hacked and should be written in a better way JKLMNOPQRST TSRQPONMLKJ JKLMNOPQRSTNone!"%&*,/69:;<=DLOQRTVU None!"%&*,/69:;<=DLOQRT` !"#$$%%&'()*+,-.+/0,12+/,34+/,56789:;<=> ? + @ A B + / @ C D E F G H I J K L M N O P Q RSTUSTVSWXSWYSWYSWZSW[SW[SW\SWXSW]^+ADPfusionSet-0.0.0.1-FBkyR6Qm5Js2T8bpPQMZ1KADP.Fusion.Term.Singleton.Type ADP.Fusion.Term.EdgeWithSet.TypeADP.Fusion.Core.Set1ADP.Fusion.Term.Edge.Set1 ADP.Fusion.Term.EdgeWithSet.Set1ADP.Fusion.Term.Epsilon.Set1ADP.Fusion.Term.Singleton.Set1ADP.Fusion.Core.EdgeBoundary!ADP.Fusion.Term.Edge.EdgeBoundary(ADP.Fusion.Term.EdgeWithSet.EdgeBoundaryADP.Fusion.Core.BoundaryADP.Fusion.SynVar.Indices.Set1ADP.Fusion.EdgeBoundaryADP.Fusion.Term.EdgeWithSetADP.Fusion.Set1ADP.Fusion.Boundary Singleton ElmSingleton D:R:ElmPairi0$fElementPairi$fBuildSingleton $fShowElm EdgeWithSetElmEdgeWithSet$fBuildEdgeWithSetRiBs1ORiBs1I$fTableStaticVarucBS1$fTableStaticVarucBS10$fMkStreammSBS1$fMkStreammSBS10D:R:RunningIndexBS10D:R:RunningIndexBS12$fRuleContextBS1$fRuleContextBS10NewNodeSetNode EdgeFromTo edgeFromTo$fTermStaticVarEdgeBS1$fEdgeFromToLast$fEdgeFromToFirst$fTermStreammTermSymbols:.$fMkStreammPairBS1$fTermStaticVarEdgeWithSetBS1$fTermStaticVarEdgeWithSetBS10$fTermStreammTermSymbols:.0$fTermStreammTermSymbols:.1$fTermStaticVarEpsilonBS1$fTermStaticVarEpsilonBS10$fTermStaticVarSingletonBS1$fTermStaticVarSingletonBS10RiEBCRiEBI$fTableStaticVarucEdgeBoundary$fTableStaticVarucEdgeBoundary0$fMkStreammSEdgeBoundary$fMkStreammSEdgeBoundary0D:R:RunningIndexEdgeBoundary0D:R:RunningIndexEdgeBoundary2$fRuleContextEdgeBoundary$fRuleContextEdgeBoundary0$fTermStaticVarEdgeEdgeBoundary$fMkStreammPairEdgeBoundary&$fTermStaticVarEdgeWithSetEdgeBoundary'$fTermStaticVarEdgeWithSetEdgeBoundary0RiBI$fTableStaticVarucBoundary$fMkStreammSBoundaryD:R:RunningIndexBoundary0$fRuleContextBoundary$fAddIndexDenses:.:.:.$fAddIndexDenses:.:.:.0$fAddIndexDenses:.:.:.1$fAddIndexDenses:.:.:.2$fAddIndexDenses:.:.:.3$fAddIndexDenses:.:.:.4$fAddIndexDenses:.:.:.5$fAddIndexDenses:.:.:.6$fAddIndexDenses:.:.:.7$fAddIndexDenses:.:.:.8$fAddIndexDenses:.:.:.9(ADPfusion-0.5.2.2-LNVISjirdHED8ZnxMhz2tWADP.Fusion.Core.ClassesElm RunningIndexADP.Fusion.Term.Edge.TypeEdgeFromgetFromTogetToElmEdge