Closed ghost closed 6 years ago
Hi tddsg,
We checked the two benchmarks manually as well. As you said, the results for dll-entl-05.smt2 and dll-entl-13.smt2 should be sat, namely, the entailment does not hold. There were a bug in the implementation of Comp-Spen. Thank you for pinpointing this.
Fixed on the GitHub.
qf_shidlia_entl/dll-entl-05.smt2
, I rewrite it in the format of our prover Songbird as follows:Now, suppose that we unfold all predicates
ldll(E1,E1_prime,x1,E3,E3_prime,x3) * ldll(E2,E2_prime,x2,E4,E4_prime,x4) * ldll(E3,E3_prime,x3,E4,E4_prime,x4) * ldll(E4,E4_prime,x4_prime,E3,E3_prime,x3_prime) * ldll(E3,E3_prime,x3,E5,E5_prime,x5) * ldll(E5,E5_prime,x5_prime,E3,E3_prime,x3_prime) *
by their base case, except that last oneldll(E4,E4_prime,x4,E6,E6_prime,x6)
to obtain a new entailment:which can be simplifed into:
According to their definition, the two predicates
ldll(E5,E5_prime,x2,E5,E5_prime,x2) * ldll(E5,E5_prime,x4_prime,E5,E5_prime,x4_prime)
in the RHS can only be unfolded by their base cases (otherwise, the induction case unfoldign will introduceE5!=E5, E5_prime!=E5_prime,x2!=x2...
, which can be normalized tofalse
)Therefore, the previous entailment can be transformed into:
which is invalid, because there is no constraint correlate
x5_prime
andx4_prime
, and the predicate in the LHS can be unfolded by the inductive case.qf_shidlia_entl/dll-entl-13.smt2
:By unfolding all predicates in the LHS, except the predciate
ldll(E5,E5_prime,x5_prime,E3,E9,x3_prime)
, by their base case, we obtain the following entailment:Here, heap predciates in their RHS can only be unfolded by base case to introduce the following entailment, which is invalid, because the LHS of the new entailment can be unfolded by the inductive case: