def test_modus_ponens():
    A = np.r_[0, 0.6, 1, 0.2]
    B = np.r_[0, 0.4, 1, 0.8, 0.3, 0]
    C = np.r_[0.3, 0.5, 0.6, 0.6, 0.5, 0.3]
    Aprime = np.r_[0.5, 1, 0.3, 0]

    R_expected = np.r_[[[  1,   1,   1,   1,   1,   1],
                        [0.4, 0.4, 0.6, 0.6, 0.4, 0.4],
                        [  0,  0.4,   1, 0.8, 0.3,  0],
                        [0.8, 0.8, 0.8, 0.8, 0.8, 0.8]]]
    Bprime_expected = np.r_[0.5, 0.5, 0.6, 0.6, 0.5, 0.5]

    R, Bprime = modus_ponens(A, B, Aprime)
    assert_allclose(R, R_expected)
    assert_allclose(Bprime, Bprime_expected)

    R_expected = np.r_[[[ 0.3,  0.5,  0.6,  0.6,  0.5,  0.3],
                        [ 0.3,  0.4,  0.6,  0.6,  0.4,  0.3],
                        [ 0. ,  0.4,  1. ,  0.8,  0.3,  0. ],
                        [ 0.3,  0.5,  0.6,  0.6,  0.5,  0.3]]]
    Bprime_expected = np.r_[ 0.3,  0.5,  0.6,  0.6,  0.5,  0.3]

    R, Bprime = modus_ponens(A, B, Aprime, C)
    assert_allclose(R, R_expected)
    assert_allclose(Bprime, Bprime_expected)
def test_modus_ponens():
    A = np.r_[0, 0.6, 1, 0.2]
    B = np.r_[0, 0.4, 1, 0.8, 0.3, 0]
    C = np.r_[0.3, 0.5, 0.6, 0.6, 0.5, 0.3]
    Aprime = np.r_[0.5, 1, 0.3, 0]

    R_expected = np.r_[[[  1,   1,   1,   1,   1,   1],
                        [0.4, 0.4, 0.6, 0.6, 0.4, 0.4],
                        [  0,  0.4,   1, 0.8, 0.3,  0],
                        [0.8, 0.8, 0.8, 0.8, 0.8, 0.8]]]
    Bprime_expected = np.r_[0.5, 0.5, 0.6, 0.6, 0.5, 0.5]

    R, Bprime = modus_ponens(A, B, Aprime)
    assert_allclose(R, R_expected)
    assert_allclose(Bprime, Bprime_expected)

    R_expected = np.r_[[[ 0.3,  0.5,  0.6,  0.6,  0.5,  0.3],
                        [ 0.3,  0.4,  0.6,  0.6,  0.4,  0.3],
                        [ 0. ,  0.4,  1. ,  0.8,  0.3,  0. ],
                        [ 0.3,  0.5,  0.6,  0.6,  0.5,  0.3]]]
    Bprime_expected = np.r_[ 0.3,  0.5,  0.6,  0.6,  0.5,  0.3]

    R, Bprime = modus_ponens(A, B, Aprime, C)
    assert_allclose(R, R_expected)
    assert_allclose(Bprime, Bprime_expected)