Nikolaj Bjorner
c64d61bd0a
formatting updates
2023-05-02 12:17:32 -07:00
Nikolaj Bjorner
392266c278
fix processing of else expression for model table
2023-05-02 12:16:58 -07:00
Nikolaj Bjorner
d5231f8b33
fix regressions #6703
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-04-27 08:43:59 -07:00
Nikolaj Bjorner
c48dc69050
adding stubs to find fixed variables
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-04-26 19:39:42 -07:00
Nikolaj Bjorner
ef943347ee
ensure assume-eqs is invoked after check-lia statically
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-04-26 11:16:15 -07:00
Nikolaj Bjorner
d2e3e4895e
add instrumentation to theory_lra for shuffling final check
2023-04-26 10:05:00 -07:00
Nikolaj Bjorner
3029fb24a1
remove references to validating
2023-04-26 10:05:00 -07:00
Nikolaj Bjorner
50c855e2eb
count gcd conflicts, log row id in rows
2023-04-26 10:05:00 -07:00
Nikolaj Bjorner
59bc070268
count gcd conflicts
2023-04-26 10:05:00 -07:00
Nikolaj Bjorner
ace6e8eea1
add gcd-conflicts stats, formatting updates
2023-04-26 10:04:59 -07:00
Nikolaj Bjorner
8fb4515872
remove redundant function, add checker function to test missed propagations
2023-04-26 10:04:59 -07:00
Nikolaj Bjorner
e689dea99c
basic formatting updates
2023-04-26 10:04:59 -07:00
Nikolaj Bjorner
d4fa990b6e
return diagnostics
2023-04-26 10:04:59 -07:00
Nikolaj Bjorner
d8156aeff3
weird latent bug in wmax: init() succeeds and it returns undef
2023-04-24 21:14:42 -07:00
Nikolaj Bjorner
fdd5c923ed
use only maxres if there is a lexicographic objective, fix #6697
...
- maxlex.enable heuristic does not work if it is chained among multiple objectives. Only maxres is set up to commit the proper constraints.
2023-04-24 20:20:26 -07:00
Nikolaj Bjorner
7a689c3298
disable destructive equality resolution simplification if there are patterns
...
- regression from F\star
- reported by @mtzguido (stlc_min.smt2)
2023-04-24 17:59:41 -07:00
Nikolaj Bjorner
a2bac119d3
differentiate fixed from offset-eq in statistics
2023-04-18 08:40:51 -07:00
Nikolaj Bjorner
ec1480b12a
fix #6693
2023-04-18 08:40:29 -07:00
Nikolaj Bjorner
cb041c1b6d
fix #6689
2023-04-17 12:05:08 -07:00
Nikolaj Bjorner
1319b64bb0
fix #6692
2023-04-17 09:11:16 -07:00
Nikolaj Bjorner
97b66d13c0
fix soundness bug in disabled code
2023-04-15 17:09:05 -07:00
Nikolaj Bjorner
b75d81f3c2
fix #6690
2023-04-14 16:38:33 -07:00
Nikolaj Bjorner
624907823d
add tests for distribution utility and fix loose ends
2023-04-13 11:19:06 -07:00
Nikolaj Bjorner
1a70ac75df
fix #6687
2023-04-13 09:01:17 -07:00
Nikolaj Bjorner
b783879752
#6687
2023-04-13 08:45:17 -07:00
Nikolaj Bjorner
7cd8edce1f
perf and memory smash fixes to internal node count routine
2023-04-12 21:01:05 -07:00
Nikolaj Bjorner
f0afbcbb87
fix #6686
2023-04-12 20:13:24 -07:00
Nikolaj Bjorner
eba0732629
fix #6675
...
disable remove_unused_defs from pb-solver until it is integrated with model reconstruction.
2023-04-12 19:50:13 -07:00
Nikolaj Bjorner
e8222433c3
count internal nodes, use to block expanding use of hoist, #6683
2023-04-12 19:40:31 -07:00
Nikolaj Bjorner
444238bc53
formatting updates
2023-04-12 19:40:31 -07:00
Nikolaj Bjorner
f61168cd53
module for maintaining probability distributions
2023-04-12 19:40:31 -07:00
Nikolaj Bjorner
0b5c38dea5
fix #6676 get rid of rem0 declare it to be mod0 semantics to simplify code paths
2023-04-11 16:46:43 -07:00
Nikolaj Bjorner
58a2a9c79c
fix #6680
2023-04-11 14:42:47 -07:00
Nikolaj Bjorner
ccc4f2d382
fix #6682
2023-04-11 05:10:03 -07:00
Nikolaj Bjorner
368d60f553
add branch / cut selection heuristic from solver=2
...
disabled for testing.
2023-04-10 22:14:16 -07:00
Nikolaj Bjorner
bb44b91e45
fix #6677
2023-04-10 15:11:10 -07:00
Clemens Eisenhofer
98d3fabc24
Bugfix relevancy propagation + UP (old core) ( #6678 )
...
* Some UP bugfixes in the new core
* Bugfix relevancy propagation + UP (old core)
* Revert smt_context.cpp
2023-04-10 12:57:59 -07:00
Nikolaj Bjorner
4a142b0f81
fix #6623
2023-04-09 21:10:24 -07:00
Nikolaj Bjorner
e6ea81546e
fix #6662
2023-04-08 17:14:39 -07:00
Nikolaj Bjorner
af9c760a68
fix #6670
2023-04-08 16:55:23 -07:00
Nikolaj Bjorner
ccb250c32b
fix #6671
2023-04-08 16:39:40 -07:00
Clemens Eisenhofer
7b513b4a40
Some UP bugfixes in the new core ( #6673 )
2023-04-08 12:50:46 -07:00
Nikolaj Bjorner
84b9204616
inherit and reset rlimit counter on children limits
...
addresses rlimit leak reported by @mtzguido
2023-04-05 16:39:21 -07:00
Nikolaj Bjorner
f8242c58dd
fix regression from Grobner port
...
- scan_for_linear returns true if it finds a new linear equation. It then should break GB.
- if scan_for_linear returns false, it should still allow try_modify_eqs.
This behavior was masked by requiring scan_for_linear to always be true before
allowing try_to_modify_eqs.
based on repro from Guido Martinez @mtzguido
2023-04-04 22:29:22 -07:00
Nikolaj Bjorner
479f844200
fix #6661
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-04-02 11:14:20 -07:00
Nikolaj Bjorner
def83ed26e
fix #6661
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-04-02 11:13:37 -07:00
Nikolaj Bjorner
5b385bd2fe
fix #6665
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-04-02 10:58:21 -07:00
Hari Govind V K
6324db207b
Only print func-decl names for indexed parameters ( #6663 )
2023-04-02 10:39:13 -07:00
Nikolaj Bjorner
e0a066efa3
#6654
...
fix reflexivity for tree-order
2023-03-31 15:38:29 -07:00
Nikolaj Bjorner
7664429fda
remove cast expression
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-03-31 12:51:23 -07:00
Nikolaj Bjorner
a62e4b2893
extract multi-patterns when pattern can be decomposed
...
deals with fluke regression for F* reported by Guido Martinez
Background:
The automatic pattern inference facility looks for terms that contains all bound variables of a quantifier. It may end up with a term that contains all bound variables but the extracted term can be simplified.
Example. The pattern
(ApplyTT (ApplyTT @x3!1 (ApplyTT @x4!0 (:var 1))) (ApplyTT @x4!0 (:var 0)))
can be decomposed into a multi-pattern
(ApplyTT @x4!0 (:var 1))) (ApplyTT @x4!0 (:var 0))
The multi-pattern may enable a quantifier instantiation while the original pattern does not. The multi-pattern should be preferred.
The regression showed up based on a change that should not be considered harmful but turned out to be noticeable.
The change was a simplification of and-or expressions based on sorting. This played with the case split queue used by F* (smt.case_split = 3) that uses a top-level case split of clauses to avoid redundant branches. The net effect was that without sorting, the benchmarks would always choose the opportune branch that enabled matching against the larger term. With sorting it would mostly choose inopportune branches.
2023-03-31 12:45:51 -07:00
Nikolaj Bjorner
a849a29b4f
fix #6659
2023-03-31 10:31:18 -07:00
Nikolaj Bjorner
996e5b1755
fix #6655
2023-03-31 03:25:20 -07:00
Nikolaj Bjorner
b386b84f34
#6658
2023-03-31 02:56:44 -07:00
권승완
6670807103
update ocaml binding to support more string apis ( #6656 )
2023-03-29 05:49:33 -07:00
Lev Nachmanson
130400d76e
Remove non feasible costs ( #6653 )
...
* before rm lu
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* rm get_column_in_lu_mode
* rm lu
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* rm lu
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* rm_lp
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* rm_lu
* rm lu
* rm lu
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* rm lu
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* rm lu
* rm lu
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* rm lu
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* rm lu
* cleanup
* rm breakpoints
* rm dealing with doubles
* Revert "rm dealing with doubles"
This reverts commit 547254abe7
.
* rm lu
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* rm lu
* rm lu
* rm scaler
* rm square_sparse_matrix
* more cleanup
* rm dead code
* rp precise
* remove many methods dealing with double
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* rm lu related fields from lp_core_solver_base.h
* remove dead code
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* more dead code removal
* remove more dead code
* more dead code
* rm dead code
* more dead code
* fix lp_tst
* more dead code
* replace lp_assert(false) with UNREACHABLE
* rm non feas costs
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
* fix the build
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
---------
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2023-03-28 08:55:52 -07:00
Nikolaj Bjorner
fe348b84c9
fix #6652
2023-03-27 16:20:33 -07:00
Nikolaj Bjorner
adec937296
fix #6650
2023-03-27 14:02:23 -07:00
Nikolaj Bjorner
f366772f0c
use field 'm' for streamlined representation
2023-03-27 14:02:22 -07:00
Patrick LaFontaine
0a59617bac
Fix Ocaml bindings FuncEntry to_string ( #6639 )
...
Hello, I was looking at the different api string conversions for FuncEntry and I believe that the ml version is incorrect? Clearly we want the argument(`c`) to be comma separated from the accumulated string `p`. The current implementation just so happens to have most of the arguments separated, but the order is flipped and one of the commas is misplaced.
2023-03-27 13:04:32 -07:00
Nikolaj Bjorner
b4ad747e0b
fix #6644
2023-03-27 09:00:38 -07:00
Nikolaj Bjorner
8a3a3dc91b
fix #6648
2023-03-26 15:31:37 -07:00
Nikolaj Bjorner
ce501e0b6e
#6646
...
- always enable special-relations theory to deal with default setting and push
- fix bugs related to equality and transitivity.
2023-03-25 17:37:59 -07:00
Nikolaj Bjorner
cd2ea6b703
add parameter access to C++ API
2023-03-25 18:14:08 +01:00
Nikolaj Bjorner
9ca0faa091
enable interactive example
2023-03-25 18:13:44 +01:00
Nikolaj Bjorner
50bd6efea4
fix #6624
2023-03-22 14:00:09 +01:00
Nikolaj Bjorner
03a44803b6
fix #6635
2023-03-22 13:38:02 +01:00
Nikolaj Bjorner
2683a2d6ed
fix #6637
2023-03-22 08:49:33 +01:00
Nikolaj Bjorner
53ca65a62e
fix unsound rewrite
2023-03-20 18:55:40 +01:00
Nikolaj Bjorner
f075dc2882
remove experimental files
2023-03-20 17:07:48 +01:00
Nikolaj Bjorner
48de7c2da8
missing updates
2023-03-20 17:07:04 +01:00
Nikolaj Bjorner
c6e3fb446a
print lemmas2console faster
...
- add option pp.no_lets (default = false) to print formulas without let (used by the low-level SMT2 printer).
- print lemmas2console faster by using the low level printer
2023-03-20 17:07:04 +01:00
Nikolaj Bjorner
a9e6e567b0
make generation of "some" Boolean value fair
2023-03-20 17:07:04 +01:00
Nikolaj Bjorner
d1c7ff1a36
add unconstrained elimination for sequences
2023-03-20 17:07:04 +01:00
Nuno Lopes
a0f3727e90
BV: add missing neg internalizer
...
usually bvneg is eliminated during rewriting, but it can be left behind during e.g. a badly-timed timeout
2023-03-12 19:26:47 +00:00
Declan Hwang
cf4df08fd0
fix typo ( #6628 )
2023-03-09 09:29:30 -08:00
Bram V
1612b57e1a
Make all methods show in java API ( #6626 )
...
* Make all methods show in java API
* Add final modifier to all generic methods
2023-03-08 13:43:51 -08:00
igcontreras
4b3408696d
use uintptr_t instead of size_t (tptr) for portability ( #6627 )
2023-03-08 21:13:38 +00:00
Lev Nachmanson
8b0aa22631
replace lp_assert(false) with UNREACHABLE
2023-03-08 10:27:05 -08:00
Lev Nachmanson
3efe91c3e3
more dead code
2023-03-08 10:27:05 -08:00
Lev Nachmanson
1fb24ebc35
fix lp_tst
2023-03-08 10:27:05 -08:00
Lev Nachmanson
11eab94321
more dead code
2023-03-08 10:27:05 -08:00
Lev Nachmanson
13549aff66
rm dead code
2023-03-08 10:27:05 -08:00
Lev Nachmanson
c6be67bf3b
more dead code
2023-03-08 10:27:05 -08:00
Lev Nachmanson
c8c0a00190
remove more dead code
2023-03-08 10:27:05 -08:00
Lev Nachmanson
748c75275f
more dead code removal
2023-03-08 10:27:05 -08:00
Lev Nachmanson
e430f28813
remove dead code
...
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2023-03-08 10:27:05 -08:00
Lev Nachmanson
f6445891f3
rm lu related fields from lp_core_solver_base.h
2023-03-08 10:27:05 -08:00
Lev Nachmanson
f351eb3ab2
remove many methods dealing with double
...
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2023-03-08 10:27:05 -08:00
Lev Nachmanson
9ec82632a3
rp precise
2023-03-08 10:27:05 -08:00
Lev Nachmanson
569f5be91f
rm dead code
2023-03-08 10:27:05 -08:00
Lev Nachmanson
f33f8c265e
more cleanup
2023-03-08 10:27:05 -08:00
Lev Nachmanson
0fb65dea3f
rm square_sparse_matrix
2023-03-08 10:27:05 -08:00
Lev Nachmanson
178135486c
rm scaler
2023-03-08 10:27:05 -08:00
Lev Nachmanson
6eedbd4f35
rm lu
2023-03-08 10:27:05 -08:00
Lev Nachmanson
e04e726f45
rm lu
2023-03-08 10:27:05 -08:00
Lev Nachmanson
2e9dc3d090
rm lu
...
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2023-03-08 10:27:05 -08:00
Lev Nachmanson
d00fcc87c9
Revert "rm dealing with doubles"
...
This reverts commit 547254abe7
.
2023-03-08 10:27:05 -08:00
Lev Nachmanson
a4189186cc
rm dealing with doubles
2023-03-08 10:27:05 -08:00
Lev Nachmanson
6201eda055
rm breakpoints
2023-03-08 10:27:05 -08:00
Lev Nachmanson
73224adc48
cleanup
2023-03-08 10:27:05 -08:00
Lev Nachmanson
377ceba6d5
rm lu
2023-03-08 10:27:05 -08:00
Lev Nachmanson
6132bf93f7
rm lu
...
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2023-03-08 10:27:05 -08:00
Lev Nachmanson
bfe73c01a6
rm lu
...
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2023-03-08 10:27:05 -08:00
Lev Nachmanson
1da4c018e4
rm lu
2023-03-08 10:27:05 -08:00
Lev Nachmanson
62bd3bd1e6
rm lu
...
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2023-03-08 10:27:05 -08:00
Lev Nachmanson
5f03c93270
rm lu
...
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2023-03-08 10:27:05 -08:00
Lev Nachmanson
9a7c99da33
rm lu
2023-03-08 10:27:05 -08:00
Lev Nachmanson
c251151d66
rm_lu
2023-03-08 10:27:05 -08:00
Lev Nachmanson
25f103db1a
rm_lp
...
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2023-03-08 10:27:05 -08:00
Lev Nachmanson
527f0d1242
rm lu
...
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2023-03-08 10:27:05 -08:00
Lev Nachmanson
a38be43264
rm lu
...
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2023-03-08 10:27:05 -08:00
Lev Nachmanson
97c1ba4641
rm get_column_in_lu_mode
2023-03-08 10:27:05 -08:00
Lev Nachmanson
ea16f6608c
before rm lu
...
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2023-03-08 10:27:05 -08:00
Hari Govind V K
f7c9c9ef72
fix unsound slice criteria ( #6625 )
...
* rename for readability
* bug fix #6617 . Don't slice op args that are values
2023-03-06 19:28:22 -08:00
Nikolaj Bjorner
42076a3c13
bug fixes to new core, elim_predicates and elim_unconstrained
2023-03-05 22:26:37 -08:00
Nuno Lopes
b9a87e493b
minor code simplifications
2023-03-05 19:08:41 +00:00
Lev Nachmanson
92fe8c5968
restore the previous state
...
Signed-off-by: Lev Nachmanson <levnach@hotmail.com>
2023-03-03 18:30:17 -08:00
Lev Nachmanson
ff1dc0424c
rm lp_solver
2023-03-03 16:32:49 -08:00
Lev Nachmanson
5e4bca3d26
small removals
2023-03-03 15:58:25 -08:00
Lev Nachmanson
2dd30fa350
rm lp_primal_simplex
2023-03-03 15:44:50 -08:00
Lev Nachmanson
8989e10e71
rm lp_dual_simplex
2023-03-03 15:41:30 -08:00
Lev Nachmanson
d2e8297d41
remove includes of lp_dual_simplex
2023-03-03 15:38:47 -08:00
Lev Nachmanson
2ec09944d7
removals
2023-03-03 15:32:44 -08:00
Lev Nachmanson
a44772424c
more removals
2023-03-03 15:30:15 -08:00
Lev Nachmanson
8db2f1409b
lp_dual_simplex.cpp removed from CMakeLists.txt
2023-03-03 15:27:57 -08:00
Lev Nachmanson
cd24c99739
remove a lp_primal_simplex.cpp from CMakeLists
2023-03-03 15:26:06 -08:00
Lev Nachmanson
f986ac6a75
remove mps_reader
2023-03-03 14:50:10 -08:00
Hari Govind V K
55d45e0c0c
bug fix. Prevent resetting gg stats #6062 ( #6618 )
2023-03-03 12:32:23 -08:00
Nikolaj Bjorner
b82d177276
fix build
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-03-03 11:26:13 -08:00
Nikolaj Bjorner
aa75ba8a6b
remove parenthesis
2023-03-01 21:03:41 -08:00
Nikolaj Bjorner
fd97be0e3e
move sat.smt.proof.check_rup into solver.proof.check_rup #6616
2023-03-01 21:03:27 -08:00
Nikolaj Bjorner
94b79eefea
add back max_occs parameter dependency to solve-eqs
2023-03-01 20:40:22 -08:00
Nikolaj Bjorner
acd2eaa390
add (disabled) code path to enable nested conjunctions
...
for experiments with disabling flat-and-or dependency
2023-03-01 20:39:39 -08:00
Nikolaj Bjorner
46d37b6e30
fix #6615
...
make rewriting exception safe (for cancelation).
The state during restart in smt_context is not exception safe.
2023-03-01 17:30:07 -08:00
Nikolaj Bjorner
027770930e
fix bug in quasi macro identification: require quantifiers
2023-03-01 17:03:15 -08:00
Nikolaj Bjorner
25d45a3500
fixes and tests for arith-sls
2023-02-28 17:40:09 -08:00
Nikolaj Bjorner
e87fa1c299
remove stale file
2023-02-28 17:40:08 -08:00
Nikolaj Bjorner
79d47eb302
add preprocessor parameter whether to use bound simplifier
2023-02-28 17:40:08 -08:00
Nikolaj Bjorner
76aad689c6
Update smt_context_pp.cpp
...
print units in statistics
2023-02-28 17:40:08 -08:00
Nikolaj Bjorner
5974a2dc58
remove m_b from lar_core_solver
...
the column vector is pure overhead for the way the lar solver uses lp.
Some other solver modules use column vectors b and integrate with the lp_core_solver_base. The interaction model should be reviewed.
Unused solvers should be removed to make it easier to maintain this code.
2023-02-28 17:40:08 -08:00
Julian Parsert
6e7d80633d
Documentation on how to add z3 to CMake project using FetchContent and documentation to recdef function. ( #6613 )
...
* Added overloaded versions of context::recfun in the c++ api that allow for the declaration of recursive functions where the domain is given by a z3::sort_vector instead of an arity and sort*
* added documentation to recdef function
* added a section in the README-CMake.md that explains how z3 can be added to a CMake project as a dependency
---------
Co-authored-by: Julian Parsert <julian.parsert@uibk.ac.at>
2023-02-28 11:44:21 -08:00
hgvk94
828fff9684
fix #6543 . don't assume order on bindings
2023-02-23 17:35:55 -05:00
Nikolaj Bjorner
146f0eae06
wip - arith local search
2023-02-20 12:17:14 -08:00
Nikolaj Bjorner
4aa05b2b57
remove limiting error mode #6600
2023-02-20 12:16:43 -08:00
Nikolaj Bjorner
755b517001
fix #6600
...
ensure that semantics of last-indexof(t,"") = len(t)
2023-02-19 14:02:37 -08:00
Nikolaj Bjorner
0758c93086
fix #6591
...
- add check for lambdas similar to as-array in context of quantifiers. MBQI is not a decision procedure for this combination and can then incorrectly conclude satisfiabiltiy.
Scenario
The formula contains assertions
- bv = (map or (lambda ..) t)
- forall y (not (select bv (pair s y)))
Since bv is extensionally equal to a term that depends on a lambda, MBQI cannot just take the current finite approximation of bv when checking the quantifier for satisfiability.
2023-02-19 11:09:52 -08:00
Nikolaj Bjorner
6454e7fa3f
apply rewriting if result of destructive equality resolution is simplified
2023-02-19 11:03:04 -08:00
Nikolaj Bjorner
bc6037464d
clean up build warnings
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-02-19 10:08:31 -08:00
Nikolaj Bjorner
9b6ac45e02
compile warnings
...
Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
2023-02-19 10:03:38 -08:00