Exemplo n.º 1
0
/**
 * 章衡量词消去公式五 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;
}
Exemplo n.º 2
0
/**
 * 章衡量词消去公式三    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;
}