from PositionIndex import PositionIndex comp_rels = ['<', '>', '>=', 'lessThan', 'greaterThan', 'succ'] math_op_rels = ['+', '-', '*', '/', 'min', 'minus', 'plus'] obj_loc_place = set([('location', PositionIndex([0, 0]))]) coord_places = set([('location', PositionIndex([0, p])) for p in [1, 2]]) # an equivalence class that has one of these places as a member must # be a number num_places = set([(c, PositionIndex([0])) for c in comp_rels] + \ [(c, PositionIndex([1])) for c in comp_rels] + \ [(o, PositionIndex([0])) for o in math_op_rels] + \ [(o, PositionIndex([1])) for o in math_op_rels] + \ [(o, PositionIndex([2])) for o in math_op_rels] + \ [('int', PositionIndex([0]))]) # these are the place types AGENT, OBJECT, COORD, NUM_MAX, NUM_MIN, NUM, UNKNOWN = range(7) # for string output type_names = { AGENT: 'agent', OBJECT: 'object', COORD: 'coord', NUM_MAX: 'num_max', NUM_MIN: 'num_min', NUM: 'num', UNKNOWN: 'unknown' } # specificity ordering relations