mirror of
https://github.com/Z3Prover/z3
synced 2025-08-06 03:10:25 +00:00
add note on current example
This commit is contained in:
parent
5ec11c591f
commit
99a078dd69
2 changed files with 20 additions and 0 deletions
|
@ -46,6 +46,25 @@ TODO:
|
||||||
- since we only track equations over variables/names, this might not lead to many further additions
|
- since we only track equations over variables/names, this might not lead to many further additions
|
||||||
- a question is how to track/handle the dependency on the assignment
|
- a question is how to track/handle the dependency on the assignment
|
||||||
- check Algorithm 2 of "Solving Bitvectors with MCSAT"; what is the difference to what we are doing now?
|
- check Algorithm 2 of "Solving Bitvectors with MCSAT"; what is the difference to what we are doing now?
|
||||||
|
- track equalities such as x = -y ?
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Current issue:
|
||||||
|
|
||||||
|
1. mk_extract v7 := v6[63:32]
|
||||||
|
2. solver assigns v7 := 1
|
||||||
|
3. solver assigns v6 := 1 by decision
|
||||||
|
|
||||||
|
This is a conflict, because v6[63:32] = 0, v7 = v6[63:32], v7 = 1.
|
||||||
|
|
||||||
|
Solution:
|
||||||
|
- when finding a viable value for v6 to make a decision,
|
||||||
|
call slicing::collect_fixed to find already fixed bits
|
||||||
|
- v7 is a subslice of v6, so we find v6[63:32] = 1
|
||||||
|
- viable can already deal with fixed bits
|
||||||
|
(needs some refactoring because of how justifications are tracked)
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
|
@ -986,6 +986,7 @@ namespace {
|
||||||
SASSERT(out_fbi.just_src[i].empty()); // since we don't get overlapping ranges from collect_fixed.
|
SASSERT(out_fbi.just_src[i].empty()); // since we don't get overlapping ranges from collect_fixed.
|
||||||
SASSERT(out_fbi.just_side_cond[i].empty());
|
SASSERT(out_fbi.just_side_cond[i].empty());
|
||||||
out_fbi.fixed[i] = to_lbool(fb.value.get_bit(i - fb.lo));
|
out_fbi.fixed[i] = to_lbool(fb.value.get_bit(i - fb.lo));
|
||||||
|
// TODO: can add an euf::enode_pair to the fixed_bits_info. then we do not have to call explain_fixed() here already.
|
||||||
// TODO: s.m_slicing.explain_fixed( ... ); with out_fbi.just_src[i].push_back(...)
|
// TODO: s.m_slicing.explain_fixed( ... ); with out_fbi.just_src[i].push_back(...)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue