Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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)