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)
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', []))
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', []))
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
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