Murphy Berzish
855037eed7
refactor process_concat_eq_type2 in theory_str; fixes unsat/big/8558
2016-11-17 16:25:53 -05:00
Murphy Berzish
d260218e2b
tabs to spaces test
2016-11-17 15:28:26 -05:00
Murphy Berzish
e2d05578d6
add extra trace message in smt_context for theory_str results change
2016-11-17 15:25:39 -05:00
Murphy Berzish
55ae83f47e
Revert "experimental modification to simplify_parent call in theory_str, WIP"
...
This reverts commit 9771428600
.
2016-11-16 13:00:05 -05:00
Murphy Berzish
9771428600
experimental modification to simplify_parent call in theory_str, WIP
2016-11-15 15:18:07 -05:00
Murphy Berzish
df6b461117
enhanced backpropagation in theory_str final_check for var=concat terms
...
fixes kaluza sat/big/709.smt2
2016-11-14 12:33:23 -05:00
Murphy Berzish
02aacab04e
add z3str2-style free variable check to theory_str
2016-11-11 17:52:18 -05:00
Murphy Berzish
fbaee080b2
fix performance regression introduced with theory_str str.from-int
...
more investigation is required to understand why this works.
2016-11-11 00:32:50 -05:00
Murphy Berzish
5635016205
theory_str str.from-int very WIP
2016-11-09 18:06:02 -05:00
Murphy Berzish
fff1fadf3b
add str.from-int in theory_str rewriter
2016-11-09 15:54:22 -05:00
Murphy Berzish
4aa2d965b3
Merge branch 'develop' of github.com:mtrberzi/z3 into develop
2016-11-09 14:05:38 -05:00
Murphy Berzish
61d1d5e8b0
add cache for length terms to theory_str, but it seems to slow things down so I disabled it
2016-11-08 15:20:47 -05:00
Murphy Berzish
521e0e175b
refresh reused split vars in theory_str
...
this fixes kaluza/unsat/big/7907, now SAT in ~30s
2016-11-08 14:23:10 -05:00
Murphy Berzish
3ae336fa6f
add experimental value tester caching to theory_str
2016-11-02 13:05:16 -04:00
Murphy Berzish
a61e1f17e8
fix crash in gen_len_test_options when fast length testers are disabled
2016-11-02 12:35:14 -04:00
Murphy Berzish
3da78f9d80
experimental cached length testers in theory_str
2016-11-01 20:35:01 -04:00
Murphy Berzish
a5b00641d8
Merge branch 'develop' of github.com:mtrberzi/z3 into develop
2016-11-01 13:02:59 -04:00
Murphy Berzish
452eed6626
move get_std_regex_str to str_util
2016-10-29 12:19:24 -04:00
Murphy Berzish
b06b9f9264
str.to-int WIP
2016-10-21 13:35:35 -04:00
Murphy Berzish
ef0f6f1de3
add str.to-int in theory_str WIP
2016-10-20 16:01:51 -04:00
Murphy Berzish
05dfa5509a
theory_str high-level and regex API
2016-10-20 15:36:54 -04:00
Murphy Berzish
d57c92f69e
theory_str api: concat, length
2016-10-20 12:25:52 -04:00
Murphy Berzish
ce53b36864
theory_str API started
2016-10-14 12:34:11 -04:00
Murphy Berzish
dc8062ba67
patch out contains check for substr reduction
...
fixes all regressions in release build, we may want to revisit this later
2016-09-22 20:14:42 -04:00
Murphy Berzish
1061cdf58a
fix value tester theory var reuse in theory_str
...
fixes release regression in charAt-007
2016-09-22 15:40:43 -04:00
Murphy Berzish
4433417b6e
faster push_scope in theory_str
2016-09-20 16:25:28 -04:00
Murphy Berzish
feef85c129
override scope check in theory_str::solve_concat_eq_str
...
fixes indexof2-009.smt2
2016-09-20 15:37:29 -04:00
Murphy Berzish
48eaa6159c
disable aggressive unroll testing in theory_str, it may be doing more harm than good
2016-09-20 01:10:27 -04:00
Murphy Berzish
447c6e4ce3
refresh length tester in theory_str::gen_len_val_options_for_free_var
...
fixes charAt-007.smt2
2016-09-20 00:28:29 -04:00
Murphy Berzish
f1d7ffcdce
fix regression regex-020
2016-09-20 00:14:38 -04:00
Murphy Berzish
9615b191de
theory_str hacking for theory var stuff WIP
2016-09-19 23:40:17 -04:00
Murphy Berzish
c38f63dd2a
fix eqc management and unroll test var gen in theory_str::final_check
2016-09-19 19:42:16 -04:00
Murphy Berzish
91b625768c
fix tracing in theory_str
2016-09-15 17:01:59 -04:00
Murphy Berzish
e7c0c29ae5
potentially fix out-of-scope infinite loop bug in theory_str gen_unroll_conditional_options
2016-09-15 15:59:56 -04:00
Murphy Berzish
8776b97841
variable scope correctness hack in theory_str
2016-09-14 22:08:40 -04:00
Murphy Berzish
bed40c45b8
cleanup
2016-09-14 21:48:27 -04:00
Murphy Berzish
ad7247df51
make calls to theory_str::dump_assignments depend on the correct trace flags
2016-09-14 19:32:14 -04:00
Murphy Berzish
15055c8041
use mk_int_var to make xor terms
2016-09-14 19:01:14 -04:00
Murphy Berzish
d334403720
remove relevancy testing experiment
2016-09-14 17:42:40 -04:00
Murphy Berzish
f22f4da023
remove unused variable
2016-09-14 17:33:47 -04:00
Murphy Berzish
9ee7326a19
tweaks to process_concat_eq_type_3
2016-09-14 17:26:52 -04:00
Murphy Berzish
a294c145dc
add theory_str::try_eval_concat to work around rewriter behaviour
...
this fixes a regression in concat-013.smt2
2016-09-14 16:18:03 -04:00
Murphy Berzish
e46fc7b0b6
fix expr-app conversion
2016-09-14 15:51:33 -04:00
Murphy Berzish
804009a757
use z3str2 eqc semantics for get_eqc_value
2016-09-14 15:37:48 -04:00
Murphy Berzish
50353168ef
fix semantics of get_concats_in_eqc and get_var_in_eqc
2016-09-14 15:36:36 -04:00
Murphy Berzish
87d61d6d6e
fix semantics of in_same_eqc
2016-09-14 15:35:37 -04:00
Murphy Berzish
ec9e1686f7
fix semantics of collect_eq_nodes and simplify_parent
2016-09-14 15:32:49 -04:00
Murphy Berzish
9481601b4b
restore z3str2 eqc semantics in theory_str::new_eq_check
2016-09-14 15:15:47 -04:00
Murphy Berzish
34dc655150
z3str2 eqc semantics for theory_str unroll checks
2016-09-13 18:24:59 -04:00
Murphy Berzish
8f636e1f57
fix typo'ed set reference in handle_equality
2016-09-13 18:16:21 -04:00
Murphy Berzish
aea0032aa7
manage our own union-find structure in theory_str
...
concat-086.smt2 passes with this, for the first time ever
2016-09-13 18:01:45 -04:00
Murphy Berzish
ca71a20ab7
add caching to theory_str::mk_concat, WIP
2016-09-12 17:17:17 -04:00
Murphy Berzish
015016c92b
disable variable scope check if not tracing in theory_str
2016-09-12 16:57:05 -04:00
Murphy Berzish
b3fddf4707
performance optimization in theory_str::classify_ast_by_type
2016-09-12 16:41:35 -04:00
Murphy Berzish
2c5569aa1f
change cut_var_map to obj_map
2016-09-12 15:43:58 -04:00
Murphy Berzish
82e07aae8c
disable deferred eqc check in theory_str
2016-09-08 19:55:08 -04:00
Murphy Berzish
c83e39d3b8
fix incorrect axiom in theory_str for Contains check
...
this partially fixes a regression in contains-034.smt2, which now
is at least not a SAT-as-UNSAT
2016-09-05 17:45:10 -04:00
Murphy Berzish
7b34efada7
add aggressive unroll test option to theory_str
2016-09-04 18:48:15 -04:00
Murphy Berzish
347f441517
add a check for variable scope to theory_str
2016-09-02 20:44:14 -04:00
Murphy Berzish
2b8f165cc4
patch UNSAT to UNKNOWN in cmd_context for theory_str
2016-09-02 19:04:20 -04:00
Murphy Berzish
d3062a8eff
omit out-of-scope length testers from axiom premise in theory_str::gen_len_test_options
...
this fixes a regression in charAt-007.smt2
2016-09-02 18:23:41 -04:00
Murphy Berzish
f9b4f21683
add rewrite for theory_str rewriter RegexPlus
...
fixes regex-013.smt2
2016-08-31 19:22:04 -04:00
Murphy Berzish
5e22bc57c8
theory_str cleanup
2016-08-31 19:19:23 -04:00
Murphy Berzish
89d5f4ffb4
add compute_contains check to theory_str
...
this may cause a crash in indexof-002.smt2 but
I cannot reproduce it
2016-08-21 21:37:46 -04:00
Murphy Berzish
2a199294a1
remove incorrect null pointer check from theory_str::gen_len_val_options_for_free_var
...
everything that calls this method knows that it can legally return null
2016-08-21 00:43:00 -04:00
Murphy Berzish
7b3203b48e
disable aggressive length/value testing in theory_str, it seems to be detrimental
2016-08-21 00:30:29 -04:00
Murphy Berzish
1a75781a3c
add experimental option to defer new_eq_check to final_check in theory_str
2016-08-20 23:09:08 -04:00
Murphy Berzish
481e97a274
propagate early in theory_str to set up contains/regex maps
...
this fixes an unsat-as-sat error in a regex test and flips around some timeouts
so more work will be required to track this down
2016-08-19 22:53:36 -04:00
Murphy Berzish
8598a48e3b
fix weird Contains rewriter behaviour in theory_str
2016-08-18 19:14:50 -04:00
Murphy Berzish
3c8b833eeb
fix expression dereference error in theory_str::gen_assign_unroll_Str2Reg
2016-08-18 17:03:32 -04:00
Murphy Berzish
54d7e4bbb5
remove the option to bypass check_regex_in in theory_str
2016-08-17 21:12:19 -04:00
Murphy Berzish
6263391c11
fix out-of-range integer comparison bug in string NFA
2016-08-17 20:58:57 -04:00
Murphy Berzish
71ad4d3a4a
add regex_in_bool_map to theory_str
2016-08-17 16:21:19 -04:00
Murphy Berzish
0834229b39
theory_str model validation for substr
2016-08-17 15:33:02 -04:00
Murphy Berzish
48081864b0
add regex validation in str_rewriter
2016-08-16 18:07:31 -04:00
Murphy Berzish
685edbb268
pull out incorrectly-used data structures in theory_str for contains check, this will need to be revisited
2016-08-15 18:58:36 -04:00
Murphy Berzish
d28ef1d471
add theory_str::check_contain_by_eq_nodes
2016-08-15 17:38:24 -04:00
Murphy Berzish
f48377e780
temporarily disable a third Contains check for testing purposes
2016-08-14 16:14:48 -04:00
Murphy Berzish
ee6f1eef69
add theory_str::check_contain_by_substr
2016-08-14 15:14:48 -04:00
Murphy Berzish
1f594b190a
add theory_str::check_contain_by_eqc_val
2016-08-14 14:55:29 -04:00
Murphy Berzish
6612971049
start adding Contains checks to theory_str
2016-08-14 14:15:29 -04:00
Murphy Berzish
f7ba3ff084
crash avoidance in theory_str search start, fixes length-001.smt2 regression
2016-08-09 20:11:25 -04:00
Murphy Berzish
3dff240bb3
theory_str model validation for Length
2016-08-07 15:50:41 -04:00
Murphy Berzish
cb566ad5ce
fix model validation for theory_str
2016-08-07 15:43:08 -04:00
Murphy Berzish
395ec4543c
avoid crash in theory_str, this leaks memory
2016-08-06 22:19:10 -04:00
Murphy Berzish
43b0cd5010
clean up unused variables in theory_str.cpp
2016-08-06 15:38:58 -04:00
Murphy Berzish
2c91f388df
add defensive double-non-concat check in theory_str::simplify_concat_equality()
2016-08-06 15:35:47 -04:00
Murphy Berzish
91c336d7ee
fix erroneous vector double-insert in theory_str::group_terms_by_eqc()
2016-08-06 15:32:37 -04:00
Murphy Berzish
0c4e725902
finish theory_str::mk_concat, no caching of generated terms yet
2016-08-04 16:40:05 -04:00
Murphy Berzish
bc91d182bf
mk_concat fixes WIP
2016-08-03 13:39:14 -04:00
Murphy Berzish
3c2fe497de
modify theory_str::get_value() to check EQC for a numeral
...
Instead of asking the arithmetic theory for the current assignment,
we return the (unique) numeral in the equivalence class of the term
whose length we want to know.
This is because the arithmetic theory may return a default / internal
value that doesn't correspond to anything actually asserted by the core solver.
2016-08-02 16:44:54 -04:00
Murphy Berzish
45c4954959
add debugging to theory_str::get_len_value in preparation for fixes
2016-08-02 14:52:44 -04:00
Murphy Berzish
a51ad07e3f
crash avoidance in propagation of basic string axioms and gen_len_test_options
2016-08-01 20:52:49 -04:00
Murphy Berzish
97f07a8a7c
fix debugging statements in theory_str::gen_len_test_options
...
this fixes charAt-007.smt2 and prevents two unique crashes
2016-08-01 18:14:56 -04:00
Murphy Berzish
ee1af96f1b
add opt_NoQuickReturn_IntegerTheory check in theory_str::new_eq_check()
...
This allows us to assert an "inconsistent length" axiom from the integer theory
while continuing in new_eq_handler(). Currently active when
opt_NoQuickReturn_IntegerTheory is 'true' but this may be necessary
here and in other places, in general, to fix integer theory integration.
2016-08-01 17:05:02 -04:00
Murphy Berzish
6e348720b1
add integer theory integration to theory_str::solve_concat_eq_str case 4
2016-07-31 18:12:57 -04:00
Murphy Berzish
778c0a5563
improve theory_str::group_terms_by_eqc now that we have simplify_concat
2016-07-31 16:55:17 -04:00
Murphy Berzish
9ceb2df28f
add integer integration to theory_str::simplify_parent
2016-07-31 16:51:35 -04:00
Murphy Berzish
41497f44c1
prevent checking scope of XOR variables in theory_str::process_concat_eq
2016-07-31 16:30:52 -04:00
Murphy Berzish
f5b82740c3
debugging length testers in theory_str::gen_len_val_options_for_free_var
2016-07-31 16:26:56 -04:00