git @ Cat's Eye Technologies Philomath / master eg / demo-proof3.c
master

Tree @master (Download .tar.gz)

demo-proof3.c @masterraw · history · blame

/*
 * Proof that
 *  p \/ q -> q \/ p
 */

/*
 * Suppose p \/ q (1)
 * Then, suppose p (2)
 * Then, q \/ p by disj intro
 * And then, suppose q (3)
 * Then, q \/ p by disj intro
 * So, q \/ p by disj elim
 * So, p \/ q -> q \/ p by 1
 */

#include "formula.h"
#include "proof.h"

int main(int argc, char **argv) {
    return proves(
        impl_intro(
            1,
            disj_elim(
                suppose(disj(var("p"), var("q")), 1),
                disj_intro_lhs(var("q"), suppose(var("p"), 2)), 2,
                disj_intro_rhs(suppose(var("q"), 3), var("p")), 3
            )
        ),
        impl(disj(var("p"), var("q")), disj(var("q"), var("p")))
    );
}