def in_order(inter, order, unassigned):
    """ Check if an interpretation follows an order of assignments.

    Args:
        inter (dict): An interpretation dictionary.
        order (list): A list of implementation species. (They have to be
            assigned in the interpretation.)
        unassigend (set): A set of implementation species who's order has
            not yet been assigend.

    Returns:
        bool, info: True if interpretation is in order, updated order.
    """
    allthere = True
    for isp in order:
        if allthere:
            allthere = (isp in inter)
        elif isp in inter:
            return False, None
    if len(unassigned):
        for isp in inter:
            if isp in unassigned:
                order.append(isp)
                unassigned.remove(isp)
    return True, (order, unassigned)