def train_track(self,stable=True,relative=True,verbose=False):
        """
        Computes a train-track representative of ``self``.

        According to the options computes a relative (or ends when
        finding a reduction) and/or stable (with at most one INP
        crossing each exponential stratum). ``verbose`` can be either True
        or a positive number giving details on the computations.

        OUTPUT:

        A topological representative of self.

        - If ``relative=False``, this topological representative is either
        an absolute train-track or fixes a subgraph (with a non
        contractible connected component).

        - If ``relative=True``, the output is either an absolute
          train-track or a relative train-track

        - If ``stable=True``, the output is either a stable absolute
          train-track or a stable relative train-track (if
          relative=False).

        """
        from train_track_map import TrainTrackMap

        f=self.rose_representative()
        f.train_track(verbose)
        if len(f._strata)==1:
            f=TrainTrackMap(f)
        if stable and len(f._strata)==1:
            f.stabilize(verbose)
        if relative and len(f._strata)>1:
            if stable:
                f.stable_relative_train_track(verbose)
            else:
                f.relative_train_track(verbose)
        return f
Example #2
0
    def train_track(self, stable=True, relative=True, verbose=False):
        """
        Computes a train-track representative of ``self``.

        According to the options computes a relative (or ends when
        finding a reduction) and/or stable (with at most one INP
        crossing each exponential stratum). ``verbose`` can be either True
        or a positive number giving details on the computations.

        OUTPUT:

        A topological representative of self.

        - If ``relative=False``, this topological representative is either
        an absolute train-track or fixes a subgraph (with a non
        contractible connected component).

        - If ``relative=True``, the output is either an absolute
          train-track or a relative train-track

        - If ``stable=True``, the output is either a stable absolute
          train-track or a stable relative train-track (if
          relative=False).

        """
        from train_track_map import TrainTrackMap

        f = self.rose_representative()
        f.train_track(verbose)
        if len(f._strata) == 1:
            f = TrainTrackMap(f)
        if stable and len(f._strata) == 1:
            f.stabilize(verbose)
        if relative and len(f._strata) > 1:
            if stable:
                f.stable_relative_train_track(verbose)
            else:
                f.relative_train_track(verbose)
        return f