def get_subtraces(trace, i):
    """
    Trisects one trace at time point i into a list of (t_past, t_present, t_future)
    :param trace: One trace (a list of states in time)
    :param i: A time instance at which the trace is to be trisected
    :return: a tuple of (t_past, t_present, t_future)
    """

    if i == float("-inf"):
        # RCon alpha = t_start
        t_past = []
        t_present = []
        t_future = trace
    elif i == float("inf"):
        # RCon alpha = t_end
        t_past = trace
        t_present = []
        t_future = []
    else:
        t_past = trace[:i+1]
        t_present = trace[i:i+1]
        t_future = trace[i:]

    return (t_past, t_present, t_future)