def _render_batch(self,
            non_fluents: NonFluents,
            states: Fluents, actions: Fluents, interms: Fluents,
            rewards: np.array,
            horizon: Optional[int] = None) -> None:
        '''Prints `non_fluents`, `states`, `actions`, `interms` and `rewards`
        for given `horizon`.

        Args:
            states (Sequence[Tuple[str, np.array]]): A state trajectory.
            actions (Sequence[Tuple[str, np.array]]): An action trajectory.
            interms (Sequence[Tuple[str, np.array]]): An interm state trajectory.
            rewards (np.array): Sequence of rewards (1-dimensional array).
            horizon (Optional[int]): Number of timesteps.
        '''
        if horizon is None:
            horizon = len(states[0][1])
            self._render_round_init(horizon, non_fluents)
            for t in range(horizon):
                s = [(s[0], s[1][t]) for s in states]
                f = [(f[0], f[1][t]) for f in interms]
                a = [(a[0], a[1][t]) for a in actions]
                r = rewards[t]
                self._render_timestep(t, s, a, f, r)
            self._render_round_end(rewards)