/** * 章衡量词消去公式五 2 succ(_Y,_Z) -> ((theta(_X,_Z) | t(_X,_Z)) -> t(_X,_Y)) * @param originalFml 一阶语句 * @return */ Formula HengZhang::createFormula_5_2(const Formula& _originalFml) { //1 _succ(_Y,_Z) _term* term_y_z = Utils::combineTerms(m_vTermsY, m_vTermsZ); _formula* succ_y_z = Utils::compositeToAtom(m_nSymbolSucc, term_y_z); //2 T(_X,_Y) _term* term_x_y = Utils::combineTerms(m_vTermsX, m_vTermsY); _formula* t_x_y = Utils::compositeToAtom(m_nSymbolT, term_x_y); //3 theta(_X,_Z) Formula copyOriginalFml = _originalFml; copyOriginalFml.replaceTerms(m_vTermsY, m_vTermsZ); _formula* theta_x_z = Utils::copyFormula(copyOriginalFml.getFormula()); //4 T(_X,_Z) _term* term_x_z = Utils::combineTerms(m_vTermsX, m_vTermsZ); _formula* t_x_z = Utils::compositeToAtom(m_nSymbolT, term_x_z); //create structure _formula* left = succ_y_z; _formula* rl = Utils::compositeByConnective(DISJ, theta_x_z, t_x_z); _formula* right = Utils::compositeByConnective(IMPL, rl, t_x_y); _formula* F = Utils::compositeByConnective(IMPL, left, right); Formula fml = Formula(F, false); return fml; }
/** * 章衡量词消去公式三 t(_X,_MIN) | theta(_X,_MIN) * @param originalFml 一阶语句 * @return */ Formula HengZhang::createFormula_3(const Formula& _originalFml) { //create left sub-formula t(_X,_MIN) _term* term_x_min = Utils::combineTerms(m_vTermsX, m_vTermsMIN); _formula* t_x_min = Utils::compositeToAtom(m_nSymbolT, term_x_min); //create right sub-formula theta(_X,_MIN) Formula copyOriginalFml = _originalFml; copyOriginalFml.replaceTerms(m_vTermsY, m_vTermsMIN); _formula* theta_x_min = Utils::copyFormula(copyOriginalFml.getFormula()); //create structure _formula* F = Utils::compositeByConnective(DISJ, t_x_min, theta_x_min); Formula fml = Formula(F, false); return fml; }