YES Problem 1: Infeasibility Problem: [(VAR vNonEmpty x y q n z vNonEmpty x1 x2 x4) (STRATEGY CONTEXTSENSITIVE (add 1 2) (div 1 2) (lte 1 2) (minus 1 2) (mod 1 2) (mult 1 2) (power 1 2) (0) (fSNonEmpty) (false) (s 1) (true) ) (RULES add(0,x) -> x add(s(x),y) -> s(add(x,y)) div(0,s(x)) -> 0 div(s(x),s(y)) -> 0 | lte(s(x),y) ->* true div(s(x),s(y)) -> s(q) | lte(s(x),y) ->* false, div(minus(x,y),s(y)) ->* q lte(0,y) -> true lte(s(x),0) -> false lte(s(x),s(y)) -> lte(x,y) minus(0,s(y)) -> 0 minus(s(x),s(y)) -> minus(x,y) minus(x,0) -> x mod(0,y) -> 0 mod(x,0) -> x mod(x,s(y)) -> mod(minus(x,s(y)),s(y)) | lte(s(y),x) ->* true mod(x,s(y)) -> x | lte(s(y),x) ->* false mult(0,y) -> 0 mult(s(x),y) -> add(mult(x,y),y) power(x,0) -> s(0) power(x,n) -> mult(mult(y,y),s(0)) | mod(n,s(s(0))) ->* 0, power(x,div(n,s(s(0)))) ->* y power(x,n) -> mult(mult(y,y),x) | mod(n,s(s(0))) ->* s(z), power(x,div(n,s(s(0)))) ->* y ) ] Infeasibility Conditions: mod(0,s(s(0))) ->* s(x1), power(x2,div(0,s(s(0)))) ->* x4 Problem 1: Obtaining a model using Mace4: -> Usable Rules: add(0,x) -> x add(s(x),y) -> s(add(x,y)) div(0,s(x)) -> 0 div(s(x),s(y)) -> 0 | lte(s(x),y) ->* true div(s(x),s(y)) -> s(q) | lte(s(x),y) ->* false, div(minus(x,y),s(y)) ->* q lte(0,y) -> true lte(s(x),0) -> false lte(s(x),s(y)) -> lte(x,y) minus(0,s(y)) -> 0 minus(s(x),s(y)) -> minus(x,y) minus(x,0) -> x mod(0,y) -> 0 mod(x,0) -> x mod(x,s(y)) -> mod(minus(x,s(y)),s(y)) | lte(s(y),x) ->* true mod(x,s(y)) -> x | lte(s(y),x) ->* false mult(0,y) -> 0 mult(s(x),y) -> add(mult(x,y),y) power(x,0) -> s(0) power(x,n) -> mult(mult(y,y),s(0)) | mod(n,s(s(0))) ->* 0, power(x,div(n,s(s(0)))) ->* y power(x,n) -> mult(mult(y,y),x) | mod(n,s(s(0))) ->* s(z), power(x,div(n,s(s(0)))) ->* y -> Mace4 Output: ============================== Mace4 ================================= Mace4 (64) version 2009-11A, November 2009. Process 3441252 was started by sandbox2 on z018.star.cs.uiowa.edu, Tue Jul 30 09:59:55 2024 The command was "./mace4 -c -f /tmp/mace43441238-2.in". ============================== end of head =========================== ============================== INPUT ================================= % Reading from file /tmp/mace43441238-2.in assign(max_seconds,100). formulas(assumptions). ->(x1,y) -> ->(add(x1,x2),add(y,x2)) # label(congruence). ->(x2,y) -> ->(add(x1,x2),add(x1,y)) # label(congruence). ->(x1,y) -> ->(div(x1,x2),div(y,x2)) # label(congruence). ->(x2,y) -> ->(div(x1,x2),div(x1,y)) # label(congruence). ->(x1,y) -> ->(lte(x1,x2),lte(y,x2)) # label(congruence). ->(x2,y) -> ->(lte(x1,x2),lte(x1,y)) # label(congruence). ->(x1,y) -> ->(minus(x1,x2),minus(y,x2)) # label(congruence). ->(x2,y) -> ->(minus(x1,x2),minus(x1,y)) # label(congruence). ->(x1,y) -> ->(mod(x1,x2),mod(y,x2)) # label(congruence). ->(x2,y) -> ->(mod(x1,x2),mod(x1,y)) # label(congruence). ->(x1,y) -> ->(mult(x1,x2),mult(y,x2)) # label(congruence). ->(x2,y) -> ->(mult(x1,x2),mult(x1,y)) # label(congruence). ->(x1,y) -> ->(power(x1,x2),power(y,x2)) # label(congruence). ->(x2,y) -> ->(power(x1,x2),power(x1,y)) # label(congruence). ->(x1,y) -> ->(s(x1),s(y)) # label(congruence). ->(add(0,x1),x1) # label(replacement). ->(add(s(x1),x2),s(add(x1,x2))) # label(replacement). ->(div(0,s(x1)),0) # label(replacement). ->*(lte(s(x1),x2),true) -> ->(div(s(x1),s(x2)),0) # label(replacement). ->*(lte(s(x1),x2),false) & ->*(div(minus(x1,x2),s(x2)),x3) -> ->(div(s(x1),s(x2)),s(x3)) # label(replacement). ->(lte(0,x2),true) # label(replacement). ->(lte(s(x1),0),false) # label(replacement). ->(lte(s(x1),s(x2)),lte(x1,x2)) # label(replacement). ->(minus(0,s(x2)),0) # label(replacement). ->(minus(s(x1),s(x2)),minus(x1,x2)) # label(replacement). ->(minus(x1,0),x1) # label(replacement). ->(mod(0,x2),0) # label(replacement). ->(mod(x1,0),x1) # label(replacement). ->*(lte(s(x2),x1),true) -> ->(mod(x1,s(x2)),mod(minus(x1,s(x2)),s(x2))) # label(replacement). ->*(lte(s(x2),x1),false) -> ->(mod(x1,s(x2)),x1) # label(replacement). ->(mult(0,x2),0) # label(replacement). ->(mult(s(x1),x2),add(mult(x1,x2),x2)) # label(replacement). ->(power(x1,0),s(0)) # label(replacement). ->*(mod(x4,s(s(0))),0) & ->*(power(x1,div(x4,s(s(0)))),x2) -> ->(power(x1,x4),mult(mult(x2,x2),s(0))) # label(replacement). ->*(mod(x4,s(s(0))),s(x5)) & ->*(power(x1,div(x4,s(s(0)))),x2) -> ->(power(x1,x4),mult(mult(x2,x2),x1)) # label(replacement). ->*(x,x) # label(reflexivity). ->(x,y) & ->*(y,z) -> ->*(x,z) # label(transitivity). end_of_list. formulas(goals). (exists x7 exists x8 exists x9 (->*(mod(0,s(s(0))),s(x7)) & ->*(power(x8,div(0,s(s(0)))),x9))) # label(goal). end_of_list. ============================== end of input ========================== ============================== PROCESS NON-CLAUSAL FORMULAS ========== % Formulas that are not ordinary clauses: 1 ->(x1,y) -> ->(add(x1,x2),add(y,x2)) # label(congruence) # label(non_clause). [assumption]. 2 ->(x2,y) -> ->(add(x1,x2),add(x1,y)) # label(congruence) # label(non_clause). [assumption]. 3 ->(x1,y) -> ->(div(x1,x2),div(y,x2)) # label(congruence) # label(non_clause). [assumption]. 4 ->(x2,y) -> ->(div(x1,x2),div(x1,y)) # label(congruence) # label(non_clause). [assumption]. 5 ->(x1,y) -> ->(lte(x1,x2),lte(y,x2)) # label(congruence) # label(non_clause). [assumption]. 6 ->(x2,y) -> ->(lte(x1,x2),lte(x1,y)) # label(congruence) # label(non_clause). [assumption]. 7 ->(x1,y) -> ->(minus(x1,x2),minus(y,x2)) # label(congruence) # label(non_clause). [assumption]. 8 ->(x2,y) -> ->(minus(x1,x2),minus(x1,y)) # label(congruence) # label(non_clause). [assumption]. 9 ->(x1,y) -> ->(mod(x1,x2),mod(y,x2)) # label(congruence) # label(non_clause). [assumption]. 10 ->(x2,y) -> ->(mod(x1,x2),mod(x1,y)) # label(congruence) # label(non_clause). [assumption]. 11 ->(x1,y) -> ->(mult(x1,x2),mult(y,x2)) # label(congruence) # label(non_clause). [assumption]. 12 ->(x2,y) -> ->(mult(x1,x2),mult(x1,y)) # label(congruence) # label(non_clause). [assumption]. 13 ->(x1,y) -> ->(power(x1,x2),power(y,x2)) # label(congruence) # label(non_clause). [assumption]. 14 ->(x2,y) -> ->(power(x1,x2),power(x1,y)) # label(congruence) # label(non_clause). [assumption]. 15 ->(x1,y) -> ->(s(x1),s(y)) # label(congruence) # label(non_clause). [assumption]. 16 ->*(lte(s(x1),x2),true) -> ->(div(s(x1),s(x2)),0) # label(replacement) # label(non_clause). [assumption]. 17 ->*(lte(s(x1),x2),false) & ->*(div(minus(x1,x2),s(x2)),x3) -> ->(div(s(x1),s(x2)),s(x3)) # label(replacement) # label(non_clause). [assumption]. 18 ->*(lte(s(x2),x1),true) -> ->(mod(x1,s(x2)),mod(minus(x1,s(x2)),s(x2))) # label(replacement) # label(non_clause). [assumption]. 19 ->*(lte(s(x2),x1),false) -> ->(mod(x1,s(x2)),x1) # label(replacement) # label(non_clause). [assumption]. 20 ->*(mod(x4,s(s(0))),0) & ->*(power(x1,div(x4,s(s(0)))),x2) -> ->(power(x1,x4),mult(mult(x2,x2),s(0))) # label(replacement) # label(non_clause). [assumption]. 21 ->*(mod(x4,s(s(0))),s(x5)) & ->*(power(x1,div(x4,s(s(0)))),x2) -> ->(power(x1,x4),mult(mult(x2,x2),x1)) # label(replacement) # label(non_clause). [assumption]. 22 ->(x,y) & ->*(y,z) -> ->*(x,z) # label(transitivity) # label(non_clause). [assumption]. 23 (exists x7 exists x8 exists x9 (->*(mod(0,s(s(0))),s(x7)) & ->*(power(x8,div(0,s(s(0)))),x9))) # label(goal) # label(non_clause) # label(goal). [goal]. ============================== end of process non-clausal formulas === ============================== CLAUSES FOR SEARCH ==================== formulas(mace4_clauses). -->(x,y) | ->(add(x,z),add(y,z)) # label(congruence). -->(x,y) | ->(add(z,x),add(z,y)) # label(congruence). -->(x,y) | ->(div(x,z),div(y,z)) # label(congruence). -->(x,y) | ->(div(z,x),div(z,y)) # label(congruence). -->(x,y) | ->(lte(x,z),lte(y,z)) # label(congruence). -->(x,y) | ->(lte(z,x),lte(z,y)) # label(congruence). -->(x,y) | ->(minus(x,z),minus(y,z)) # label(congruence). -->(x,y) | ->(minus(z,x),minus(z,y)) # label(congruence). -->(x,y) | ->(mod(x,z),mod(y,z)) # label(congruence). -->(x,y) | ->(mod(z,x),mod(z,y)) # label(congruence). -->(x,y) | ->(mult(x,z),mult(y,z)) # label(congruence). -->(x,y) | ->(mult(z,x),mult(z,y)) # label(congruence). -->(x,y) | ->(power(x,z),power(y,z)) # label(congruence). -->(x,y) | ->(power(z,x),power(z,y)) # label(congruence). -->(x,y) | ->(s(x),s(y)) # label(congruence). ->(add(0,x),x) # label(replacement). ->(add(s(x),y),s(add(x,y))) # label(replacement). ->(div(0,s(x)),0) # label(replacement). -->*(lte(s(x),y),true) | ->(div(s(x),s(y)),0) # label(replacement). -->*(lte(s(x),y),false) | -->*(div(minus(x,y),s(y)),z) | ->(div(s(x),s(y)),s(z)) # label(replacement). ->(lte(0,x),true) # label(replacement). ->(lte(s(x),0),false) # label(replacement). ->(lte(s(x),s(y)),lte(x,y)) # label(replacement). ->(minus(0,s(x)),0) # label(replacement). ->(minus(s(x),s(y)),minus(x,y)) # label(replacement). ->(minus(x,0),x) # label(replacement). ->(mod(0,x),0) # label(replacement). ->(mod(x,0),x) # label(replacement). -->*(lte(s(x),y),true) | ->(mod(y,s(x)),mod(minus(y,s(x)),s(x))) # label(replacement). -->*(lte(s(x),y),false) | ->(mod(y,s(x)),y) # label(replacement). ->(mult(0,x),0) # label(replacement). ->(mult(s(x),y),add(mult(x,y),y)) # label(replacement). ->(power(x,0),s(0)) # label(replacement). -->*(mod(x,s(s(0))),0) | -->*(power(y,div(x,s(s(0)))),z) | ->(power(y,x),mult(mult(z,z),s(0))) # label(replacement). -->*(mod(x,s(s(0))),s(y)) | -->*(power(z,div(x,s(s(0)))),u) | ->(power(z,x),mult(mult(u,u),z)) # label(replacement). ->*(x,x) # label(reflexivity). -->(x,y) | -->*(y,z) | ->*(x,z) # label(transitivity). -->*(mod(0,s(s(0))),s(x)) | -->*(power(y,div(0,s(s(0)))),z) # label(goal). end_of_list. ============================== end of clauses for search ============= % There are no natural numbers in the input. ============================== DOMAIN SIZE 2 ========================= ============================== MODEL ================================= interpretation( 2, [number=1, seconds=0], [ function(false, [ 0 ]), function(true, [ 0 ]), function(0, [ 0 ]), function(s(_), [ 1, 1 ]), function(add(_,_), [ 0, 1, 1, 1 ]), function(div(_,_), [ 0, 0, 0, 1 ]), function(lte(_,_), [ 0, 0, 0, 0 ]), function(minus(_,_), [ 0, 0, 1, 1 ]), function(mod(_,_), [ 0, 0, 1, 1 ]), function(mult(_,_), [ 0, 0, 0, 1 ]), function(power(_,_), [ 1, 1, 1, 1 ]), relation(->*(_,_), [ 1, 0, 1, 1 ]), relation(->(_,_), [ 1, 0, 1, 1 ]) ]). ============================== end of model ========================== ============================== STATISTICS ============================ For domain size 2. Current CPU time: 0.00 seconds (total CPU time: 0.05 seconds). Ground clauses: seen=214, kept=210. Selections=7747, assignments=15477, propagations=7808, current_models=1. Rewrite_terms=409082, rewrite_bools=267189, indexes=11391. Rules_from_neg_clauses=7738, cross_offs=7738. ============================== end of statistics ===================== User_CPU=0.05, System_CPU=0.00, Wall_clock=0. Exiting with 1 model. Process 3441252 exit (max_models) Tue Jul 30 09:59:55 2024 The process finished Tue Jul 30 09:59:55 2024 Mace4 cooked interpretation: % number = 1 % seconds = 0 % Interpretation of size 2 false = 0. true = 0. 0 = 0. s(0) = 1. s(1) = 1. add(0,0) = 0. add(0,1) = 1. add(1,0) = 1. add(1,1) = 1. div(0,0) = 0. div(0,1) = 0. div(1,0) = 0. div(1,1) = 1. lte(0,0) = 0. lte(0,1) = 0. lte(1,0) = 0. lte(1,1) = 0. minus(0,0) = 0. minus(0,1) = 0. minus(1,0) = 1. minus(1,1) = 1. mod(0,0) = 0. mod(0,1) = 0. mod(1,0) = 1. mod(1,1) = 1. mult(0,0) = 0. mult(0,1) = 0. mult(1,0) = 0. mult(1,1) = 1. power(0,0) = 1. power(0,1) = 1. power(1,0) = 1. power(1,1) = 1. ->*(0,0). - ->*(0,1). ->*(1,0). ->*(1,1). ->(0,0). - ->(0,1). ->(1,0). ->(1,1). The problem is infeasible.