def __mrepl_fluent_regress(matched): fluent_str =matched.group() #print fluent_str match_fluent_str = Util.eliminate_unmatched(fluent_str).strip() #handle regression:######### action_str = context_operator.get_global_action() #if __uneffect(match_fluent_str, action_str): # return matched.group() #regress_str = get_ssa(fluent_str,action_str) #regress_str = context_operator.get_axioms()['ssa'] #print action_str, match_fluent_str regress_str = poss_or_ssa(action_str, match_fluent_str) #print '~~~',match_fluent_str, action_str, regress_str regress_str = "(%s)"%regress_str #logger.debug("#regress fluent: %s, after regress %s" %(match_fluent_str,regress_str)) ########## encoded_fluent_str = encode_handle_fluent(regress_str) new_str = fluent_str.replace(match_fluent_str, encoded_fluent_str) return new_str
def __get_sort_from_qf_formula(qf_formula): expressions = re.split(r'\&|\||\=\>', qf_formula) expressions = [ Util.eliminate_unmatched(expression) for expression in expressions ] #logger.debug("get sort from expressions: %s"%expressions) #print("get sort from expressions: %s"%expressions) for expression in expressions: #logger.debug("get sort from expression: %s"%expression) #print("get sort from expression: %s"%expression) while True: expression = Util.repeat_replace_inner_with_pattern( inner_function_pattern, __mrepl_getsort_exp, expression) new_expression = re.sub(r"\((?P<exp>[^\(\)]*)\)", r"\g<exp>", expression) if new_expression == expression: break else: expression = new_expression sort_symbol_list, symbol_group = __get_sort_from_basic_expression( expression) #logger.debug("get sort from basic expression: %s result: %s %s"%(expression,sort_symbol_list,symbol_group)) context_operator.add_symbol_to_sort_list(sort_symbol_list) context_operator.add_symbols_equal_list(symbol_group)