%%%%%%%%%%%%%%%%%%%%% Basic options op(400, xfx, [*,+,^,v,/,\,#]). % infix operators op(300,yf,@). % postfix operator clear(print_kept). clear(print_new_demod). clear(print_back_demod). assign(pick_given_ratio, 4). assign(max_mem, 20000). %%%%%%%%%%%%%%%%%%%%% Standard for equational problems set(knuth_bendix). set(build_proof_object). %%%%%%%%%%%%%%%%%%%%% Modifications to strategy assign(max_weight, 21). %%%%%%%%%%%%%%%%%%%%% Clauses list(usable). x = x. end_of_list. list(sos). x ^ x = x. x ^ y = y ^ x. (x ^ y) ^ z = x ^ (y ^ z). x v x = x. x v y = y v x. (x v y) v z = x v (y v z). x ^ (x v y) = x. x v (x ^ y) = x. 0 ^ x = 0. 0 v x = x. 1 ^ x = x. 1 v x = 1. x ^ x = x. x v x = x. (x ^ y) v (x ^ z) = x ^ (y v (x ^ z)). % Modularity % ((A v B)' v ((A ^ B)' ^ B)) ^ ((A v B)' v ((A ^ B)' ^ A)) = (A v B)' % C1 is a complement of A v B C1 v (A v B) = 1. C1 ^ (A v B) = 0. % C2 is a complement of A ^ B C2 v (A ^ B) = 1. C2 ^ (A ^ B) = 0. %%%%%%%% % denial 1: % (C1 v (A ^ C2)) ^ (C1 v (B ^ C2)) != C1. %%%%%%%% % denial 2: C1 v (A ^ C2) = D. C1 v (B ^ C2) = E. D ^ E != C1. end_of_list. weight_list(pick_and_purge). weight(A, 0). weight(B, 0). weight(C1, 0). weight(C2, 0). weight(D, 0). weight(E, 0). end_of_list.