mirror of
https://github.com/Z3Prover/z3
synced 2025-04-07 09:55:19 +00:00
outline scheme
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
parent
f01d9d29d2
commit
ecf25a4fe2
|
@ -13,6 +13,24 @@ Author:
|
||||||
|
|
||||||
Nikolaj Bjorner (nbjorner) 2022-11-2.
|
Nikolaj Bjorner (nbjorner) 2022-11-2.
|
||||||
|
|
||||||
|
Notes:
|
||||||
|
|
||||||
|
extract_subst is inefficient.
|
||||||
|
It traverses the same sub-terms many times.
|
||||||
|
|
||||||
|
Outline of a presumably better scheme:
|
||||||
|
|
||||||
|
1. maintain map FV: term -> bit-set where bitset reprsents set of free variables. Assume the number of variables is bounded.
|
||||||
|
FV is built from initial terms.
|
||||||
|
2. maintain parent: term -> term-list of parent occurrences.
|
||||||
|
3. repeat
|
||||||
|
pick x = t, such that x not in FV(t)
|
||||||
|
orient x -> t
|
||||||
|
for p in parent*(x):
|
||||||
|
FV(p) := FV(p) u FV(t)
|
||||||
|
if y = s is processed and x in FV(s) order y < x
|
||||||
|
if y = s is processed and x in FV(t) order x < y
|
||||||
|
|
||||||
--*/
|
--*/
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue