YES ignored inputs: (COMMENT rules to obtain NNF of first-order formulas with negations and quantifers ) (COMMENT Example 29 of [ Suzuki et al. , SCSS 2016 ] ) NRS: [ (0): |- (not (exists [a][]Q)) -> (forall [a](not []Q)), (1): |- (not (forall [a][]Q)) -> (exists [a](not []Q)), (2): |- (not (not []P)) -> []P ] Check confluence by Knuth-Bendix criterion uniform writing to temporary file... ./run_snprover.sh ./SMLNJ-xZuJBo.trs YES Problem: not(exists(lambda(Q))) -> forall(lambda(not(Q))) not(forall(lambda(Q))) -> exists(lambda(not(Q))) not(not(P)) -> P Proof: DP Processor: DPs: not#(exists(lambda(Q))) -> not#(Q) not#(forall(lambda(Q))) -> not#(Q) TRS: not(exists(lambda(Q))) -> forall(lambda(not(Q))) not(forall(lambda(Q))) -> exists(lambda(not(Q))) not(not(P)) -> P Subterm Criterion Processor: simple projection: pi(not#) = 0 problem: DPs: TRS: not(exists(lambda(Q))) -> forall(lambda(not(Q))) not(forall(lambda(Q))) -> exists(lambda(not(Q))) not(not(P)) -> P Qed terminating check each BCP has alpha-equivalent normal forms or not BCPs: (0 on 0): { |- < (forall [a](not []Q_1)) <= (not (exists [a][]Q_1)) => (forall [a](not []Q_1)) >, a#Q_1 |- < (forall [a](not [(a b)]Q_1)) <= (not (exists [b][]Q_1)) => (forall [b](not []Q_1)) > } (0 on 2): { |- < (not (forall [a](not []Q))) <= (not (not (exists [a][]Q))) => (exists [a][]Q) > } (1 on 1): { |- < (exists [a](not []Q_1)) <= (not (forall [a][]Q_1)) => (exists [a](not []Q_1)) >, a#Q_1 |- < (exists [a](not [(a b)]Q_1)) <= (not (forall [b][]Q_1)) => (exists [b](not []Q_1)) > } (1 on 2): { |- < (not (exists [a](not []Q))) <= (not (not (forall [a][]Q))) => (forall [a][]Q) > } (2 on 2): { |- < []P_1 <= (not (not []P_1)) => []P_1 >, |- < (not []P) <= (not (not (not []P))) => (not []P) > } BCP: |- < (not (forall [a](not []Q))), (exists [a][]Q) > ===> nf(lhs):(exists [a][]Q) and nf(rhs):(exists [a][]Q) are aeq BCP: |- < (not (exists [a](not []Q))), (forall [a][]Q) > ===> nf(lhs):(forall [a][]Q) and nf(rhs):(forall [a][]Q) are aeq all BCPs are joinable result: YES time: 4 msec.