Exemple #1
0
def parse_constraint(optimizer, lisp_list, infos):
    value_from_attribute = parse_lisp_list(lisp_list)
    assert set(value_from_attribute) <= {CONSTRAINT, ':necessary'
                                         }  # , ':fluents'}
    return ConstraintStream(
        optimizer, value_from_attribute[CONSTRAINT],
        list_from_conjunction(value_from_attribute[':necessary']), infos)
Exemple #2
0
def parse_constraint(optimizer, lisp_list):
    value_from_attribute = parse_lisp_list(lisp_list)
    assert set(value_from_attribute) <= {
        ':constraint', ':necessary', ':fluents'
    }
    return ConstraintStream(
        optimizer, value_from_attribute[':constraint'],
        list_from_conjunction(value_from_attribute[':necessary']),
        value_from_attribute.get(':fluents', []))
Exemple #3
0
def parse_stream(lisp_list, stream_map, stream_info):
    value_from_attribute = parse_lisp_list(lisp_list)
    assert set(value_from_attribute) <= {':stream', ':inputs', ':domain', ':fluents', ':outputs', ':certified'}
    name = value_from_attribute[':stream']
    domain = value_from_attribute.get(':domain', None)
    # TODO: dnf_from_positive_formula(value_from_attribute.get(':domain', []))
    if not (get_formula_operators(domain) <= {AND}):
        # TODO: allow positive DNF
        raise ValueError('Stream [{}] domain must be a conjunction'.format(name))
    certified = value_from_attribute.get(':certified', None)
    if not (get_formula_operators(certified) <= {AND}):
        raise ValueError('Stream [{}] certified must be a conjunction'.format(name))
    return Stream(name, get_procedure_fn(stream_map, name),
                  value_from_attribute.get(':inputs', []),
                  list_from_conjunction(domain),
                  value_from_attribute.get(':outputs', []),
                  list_from_conjunction(certified),
                  stream_info.get(name, StreamInfo()),
                  fluents=value_from_attribute.get(':fluents', []))
Exemple #4
0
def parse_common(lisp_list, stream_map, stream_info):
    assert (2 <= len(lisp_list) <= 3)
    head = tuple(lisp_list[1])
    assert (is_head(head))
    name = get_prefix(head)
    fn = get_procedure_fn(stream_map, name)
    domain = []
    if len(lisp_list) == 3:
        domain = list_from_conjunction(lisp_list[2])
    info = stream_info.get(name, None)
    return head, fn, domain, info
Exemple #5
0
def parse_common(lisp_list, stream_map, stream_info):
    assert (2 <= len(lisp_list) <= 3)
    head = tuple(lisp_list[1])
    assert (is_head(head))
    name = get_prefix(head)
    if stream_map == DEBUG:
        fn = DEBUG
    else:
        if name not in stream_map:
            raise ValueError('Undefined external function: {}'.format(name))
        fn = stream_map[name]
    domain = []
    if len(lisp_list) == 3:
        domain = list_from_conjunction(lisp_list[2])
    info = stream_info.get(name, None)
    return head, fn, domain, info