public STbSimulator(STb <F, T, S> stb) { this.stb = stb; this.exploredSteps = new Dictionary <int, Dictionary <Tuple <T, T>, Tuple <int, T> > >(); this.moves = new Dictionary <int, List <Tuple <ConsList <bool>, BaseRule <T>, Move <Rule <T> > > > >(); this.final_moves = new Dictionary <int, List <Tuple <ConsList <bool>, BaseRule <T>, Move <Rule <T> > > > >(); this.uncovered_moves = new List <Tuple <ConsList <bool>, BaseRule <T>, Move <Rule <T> > > >(); this.uncovered_final_moves = new List <Tuple <ConsList <bool>, BaseRule <T>, Move <Rule <T> > > >(); foreach (var q in stb.States) { moves[q] = new List <Tuple <ConsList <bool>, BaseRule <T>, Move <Rule <T> > > >(); moves[q].AddRange(stb.EnumerateNonFinalMovesWithDirections(q)); final_moves[q] = new List <Tuple <ConsList <bool>, BaseRule <T>, Move <Rule <T> > > >(); final_moves[q].AddRange(stb.EnumerateFinalMovesWithDirections(q)); } }