Problem
Formally, I want to know the relation between
forall I. I ? (f1∧f2∧f3)
and
(forall I. I ? f1) and (forall I. I ? f2) and (forall I. I ? f3)
.
Will the first holds true if the second holds true? Or vice versa?
Details
I want to check the validity of the First Order Logic formula (f1∧f2∧f3)
, using SMT solver, encode it as is ?(f1∧f2∧f3) UNSAT?
.
However, it takes too long time. So I consider to check the validity of each formulas f1
, f2
, and f3
, encode it as (is (?f1) UNSAT) and (is (?f2) UNSAT) and (is (?f3) UNSAT)?
. This calls the SMT solver 3 times, but the program can escape earlier if one of the SMT query returns "unknown" or "invalid".
Is it safe (and efficient) to use this method instead?
question from:
https://stackoverflow.com/questions/65867370/is-it-okay-to-decide-the-validity-of-formula-by-gathering-the-validity-of-subfor 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…