def produceLTLStringMeaning(name, props_list):
    """
    Produces a natural language explanation of the LTL
    :param name: a string specifying the LTL template name
    :param props_list: a list of list of strings indicating the propositions
    :return: a string of natural language meaning of the LTL
    """

    connector_str = ' AND '
    template_map = {
        "global": '("{}") is true throughout the entire trace',
        "eventual": '("{}") eventually occurs (may later become false)',
        "stability": '("{}") eventually occurs and stays true forever',
        "response": 'If ("{}") occurs, ("{}") eventually follows',
        "until": '("{}") has to be true until ("{}") eventually becomes true',
        "atmostonce": 'Only one contiguous interval exists where ("{}") is true',
        "sometime_before": 'If ("{}") occurs, ("{}") occured in the past'
    }

    str_template = template_map[name]
    ltl_meaning = connector_str.join([str_template.format(*x) for x in props_list])

    return ltl_meaning