z3 - Is there a theory for uninterpretable functions (congruence analysis)? -


i have set of symbolic variables:

int a, b, c, d, e; 

a set of unknown functions, constrained number of axioms:

f1(a, b) = f2(c, b) f1(d, e) = f1(e, d) f3(b, c, e) = f1(b, e) c = f1(a, b) b = d 

here functions f1, f2, f3 unknown, fixed. not theory of uninterpreted functions.

i want prove validity of following assertions:

c = f2(f1(a, b), b) f3(d, f2(c, b), e) = f1(e, b) 

using substitutions based on axiomatic equalities above.

is there theory, such theorems use provided equalities try combine answer, rather coming interpretation functions?

if so, name of theory, , smt solver support it?

can mixed other theories, linear arithmetic?

this still uninterpreted functions, because if there exist functions satisfy axioms sat in theory of uninterpreted functions. similarly, if such functions not exist, unsat in uninterpreted functions. picturing satisfiable if , if problem in uninterpreted functions satisfiable, 2 theories isomorphic, i.e. same.

given you're trying prove theorems valid based on axioms, shouldn't matter how solver represents satisfiable result, because sat results correspond invalid models. prove theorems using smt solver, should assert axioms, assert negation of theorem, , unsatisfiable result. see this question more detailed explanation of connection between satisfiability , validity.

to prove first theorem using z3, following suffices in smt-lib 2:

(declare-fun () int) (declare-fun b () int) (declare-fun c () int)  (declare-fun f1 (int int) int) (declare-fun f2 (int int) int)  (assert (= (f1 b) (f2 c b))) (assert (= c (f1 b))) (assert (not (= c (f2 (f1 b) b))))  (check-sat) 

Comments

Popular posts from this blog

amazon web services - S3 Pre-signed POST validate file type? -

c# - Check Keyboard Input Winforms -