From d0cf2ef57be63ab2534e2175b01c32584c3ff92b Mon Sep 17 00:00:00 2001 From: dehnert Date: Fri, 4 Aug 2017 23:01:17 +0200 Subject: [PATCH] update to version 1.4.0 of sylvan --- resources/3rdparty/sylvan/.travis.yml | 6 +- resources/3rdparty/sylvan/CHANGELOG.md | 48 + resources/3rdparty/sylvan/CMakeLists.txt | 13 +- resources/3rdparty/sylvan/cmake/FindGMP.cmake | 7 +- resources/3rdparty/sylvan/docs/index.rst | 268 ++++-- resources/3rdparty/sylvan/examples/ldd2bdd.c | 328 ++++--- resources/3rdparty/sylvan/examples/lddmc.c | 834 ++++++++++++------ resources/3rdparty/sylvan/examples/mc.c | 558 +++++++++--- .../3rdparty/sylvan/models/anderson.4.bdd | Bin 0 -> 38400 bytes .../3rdparty/sylvan/models/anderson.4.ldd | Bin 0 -> 4448 bytes .../3rdparty/sylvan/models/anderson.6.ldd | Bin 0 -> 7528 bytes .../3rdparty/sylvan/models/anderson.8.ldd | Bin 0 -> 9248 bytes .../3rdparty/sylvan/models/at.5.8-rgs.bdd | Bin 50448 -> 0 bytes .../3rdparty/sylvan/models/at.6.8-rgs.bdd | Bin 50128 -> 0 bytes .../3rdparty/sylvan/models/at.7.8-rgs.bdd | Bin 59144 -> 0 bytes resources/3rdparty/sylvan/models/bakery.4.bdd | Bin 0 -> 75016 bytes resources/3rdparty/sylvan/models/bakery.4.ldd | Bin 0 -> 27136 bytes resources/3rdparty/sylvan/models/bakery.5.ldd | Bin 0 -> 200720 bytes resources/3rdparty/sylvan/models/bakery.6.ldd | Bin 0 -> 83712 bytes resources/3rdparty/sylvan/models/bakery.7.ldd | Bin 0 -> 696944 bytes resources/3rdparty/sylvan/models/blocks.2.ldd | Bin 14616 -> 11036 bytes resources/3rdparty/sylvan/models/blocks.3.ldd | Bin 0 -> 22676 bytes resources/3rdparty/sylvan/models/blocks.4.ldd | Bin 41000 -> 39292 bytes .../sylvan/models/collision.4.9-rgs.bdd | Bin 73696 -> 0 bytes .../3rdparty/sylvan/models/collision.4.bdd | Bin 0 -> 40924 bytes .../3rdparty/sylvan/models/collision.4.ldd | Bin 0 -> 8148 bytes .../sylvan/models/collision.5.9-rgs.bdd | Bin 73760 -> 0 bytes .../3rdparty/sylvan/models/collision.5.bdd | Bin 0 -> 43968 bytes .../3rdparty/sylvan/models/collision.5.ldd | Bin 0 -> 8664 bytes .../3rdparty/sylvan/models/collision.6.bdd | Bin 0 -> 58532 bytes .../3rdparty/sylvan/models/collision.6.ldd | Bin 0 -> 10800 bytes resources/3rdparty/sylvan/models/lifts.6.bdd | Bin 0 -> 394508 bytes resources/3rdparty/sylvan/models/lifts.6.ldd | Bin 0 -> 96516 bytes resources/3rdparty/sylvan/models/lifts.7.bdd | Bin 0 -> 409772 bytes resources/3rdparty/sylvan/models/lifts.7.ldd | Bin 0 -> 99124 bytes .../sylvan/models/schedule_world.2.8-rgs.bdd | Bin 73472 -> 0 bytes .../sylvan/models/schedule_world.2.bdd | Bin 0 -> 18556 bytes .../sylvan/models/schedule_world.2.ldd | Bin 0 -> 4728 bytes .../sylvan/models/schedule_world.3.8-rgs.bdd | Bin 97456 -> 0 bytes .../sylvan/models/schedule_world.3.bdd | Bin 0 -> 24264 bytes .../sylvan/models/schedule_world.3.ldd | Bin 0 -> 5516 bytes resources/3rdparty/sylvan/src/CMakeLists.txt | 8 +- resources/3rdparty/sylvan/src/avl.h | 2 +- resources/3rdparty/sylvan/src/lace.c | 406 ++++++--- resources/3rdparty/sylvan/src/lace.h | 424 +++++---- resources/3rdparty/sylvan/src/sylvan.h | 37 +- resources/3rdparty/sylvan/src/sylvan_bdd.c | 22 +- resources/3rdparty/sylvan/src/sylvan_bdd.h | 41 +- .../3rdparty/sylvan/src/sylvan_bdd_storm.h | 8 + resources/3rdparty/sylvan/src/sylvan_cache.c | 13 +- resources/3rdparty/sylvan/src/sylvan_cache.h | 14 +- resources/3rdparty/sylvan/src/sylvan_common.c | 2 +- resources/3rdparty/sylvan/src/sylvan_common.h | 4 +- resources/3rdparty/sylvan/src/sylvan_gmp.c | 7 +- resources/3rdparty/sylvan/src/sylvan_gmp.h | 10 +- resources/3rdparty/sylvan/src/sylvan_int.h | 134 +-- resources/3rdparty/sylvan/src/sylvan_ldd.c | 248 +++++- resources/3rdparty/sylvan/src/sylvan_ldd.h | 140 +-- .../3rdparty/sylvan/src/sylvan_ldd_int.h | 27 +- resources/3rdparty/sylvan/src/sylvan_mt.c | 7 +- resources/3rdparty/sylvan/src/sylvan_mt.h | 6 +- resources/3rdparty/sylvan/src/sylvan_mtbdd.c | 394 +++++++-- resources/3rdparty/sylvan/src/sylvan_mtbdd.h | 425 ++++++--- .../3rdparty/sylvan/src/sylvan_mtbdd_int.h | 49 +- .../3rdparty/sylvan/src/sylvan_mtbdd_storm.c | 10 +- .../3rdparty/sylvan/src/sylvan_mtbdd_storm.h | 8 + .../3rdparty/sylvan/src/sylvan_obj_storm.cpp | 1 + resources/3rdparty/sylvan/src/sylvan_refs.c | 11 +- resources/3rdparty/sylvan/src/sylvan_refs.h | 5 +- resources/3rdparty/sylvan/src/sylvan_sl.c | 8 +- resources/3rdparty/sylvan/src/sylvan_sl.h | 2 +- resources/3rdparty/sylvan/src/sylvan_stats.c | 17 +- resources/3rdparty/sylvan/src/sylvan_stats.h | 10 +- resources/3rdparty/sylvan/src/sylvan_table.c | 201 ++++- resources/3rdparty/sylvan/src/sylvan_table.h | 31 +- resources/3rdparty/sylvan/src/sylvan_tls.h | 3 - .../storage/dd/sylvan/InternalSylvanBdd.cpp | 2 +- src/storm/utility/sylvan.h | 1 + 78 files changed, 3272 insertions(+), 1528 deletions(-) mode change 100755 => 100644 resources/3rdparty/sylvan/CMakeLists.txt create mode 100644 resources/3rdparty/sylvan/models/anderson.4.bdd create mode 100644 resources/3rdparty/sylvan/models/anderson.4.ldd create mode 100644 resources/3rdparty/sylvan/models/anderson.6.ldd create mode 100644 resources/3rdparty/sylvan/models/anderson.8.ldd delete mode 100755 resources/3rdparty/sylvan/models/at.5.8-rgs.bdd delete mode 100755 resources/3rdparty/sylvan/models/at.6.8-rgs.bdd delete mode 100755 resources/3rdparty/sylvan/models/at.7.8-rgs.bdd create mode 100644 resources/3rdparty/sylvan/models/bakery.4.bdd create mode 100644 resources/3rdparty/sylvan/models/bakery.4.ldd create mode 100644 resources/3rdparty/sylvan/models/bakery.5.ldd create mode 100644 resources/3rdparty/sylvan/models/bakery.6.ldd create mode 100644 resources/3rdparty/sylvan/models/bakery.7.ldd create mode 100644 resources/3rdparty/sylvan/models/blocks.3.ldd delete mode 100755 resources/3rdparty/sylvan/models/collision.4.9-rgs.bdd create mode 100644 resources/3rdparty/sylvan/models/collision.4.bdd create mode 100644 resources/3rdparty/sylvan/models/collision.4.ldd delete mode 100755 resources/3rdparty/sylvan/models/collision.5.9-rgs.bdd create mode 100644 resources/3rdparty/sylvan/models/collision.5.bdd create mode 100644 resources/3rdparty/sylvan/models/collision.5.ldd create mode 100644 resources/3rdparty/sylvan/models/collision.6.bdd create mode 100644 resources/3rdparty/sylvan/models/collision.6.ldd create mode 100644 resources/3rdparty/sylvan/models/lifts.6.bdd create mode 100644 resources/3rdparty/sylvan/models/lifts.6.ldd create mode 100644 resources/3rdparty/sylvan/models/lifts.7.bdd create mode 100644 resources/3rdparty/sylvan/models/lifts.7.ldd delete mode 100755 resources/3rdparty/sylvan/models/schedule_world.2.8-rgs.bdd create mode 100644 resources/3rdparty/sylvan/models/schedule_world.2.bdd create mode 100644 resources/3rdparty/sylvan/models/schedule_world.2.ldd delete mode 100755 resources/3rdparty/sylvan/models/schedule_world.3.8-rgs.bdd create mode 100644 resources/3rdparty/sylvan/models/schedule_world.3.bdd create mode 100644 resources/3rdparty/sylvan/models/schedule_world.3.ldd mode change 100755 => 100644 resources/3rdparty/sylvan/src/CMakeLists.txt diff --git a/resources/3rdparty/sylvan/.travis.yml b/resources/3rdparty/sylvan/.travis.yml index 835aaf383..e85d3b077 100755 --- a/resources/3rdparty/sylvan/.travis.yml +++ b/resources/3rdparty/sylvan/.travis.yml @@ -58,12 +58,12 @@ install: script: - ${CC} --version - ${CXX} --version -- cmake . -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DSYLVAN_STATS=${SYLVAN_STATS} -DWITH_COVERAGE=${COVERAGE} -DSYLVAN_BUILD_DOCS=${SYLVAN_BUILD_DOCS} +- cmake . -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DSYLVAN_STATS=${SYLVAN_STATS} -DWITH_COVERAGE=${COVERAGE} -DSYLVAN_BUILD_DOCS=${SYLVAN_BUILD_DOCS} -DSYLVAN_BUILD_EXAMPLES=ON - make -j 2 - make test - examples/simple -- examples/mc models/schedule_world.2.8-rgs.bdd -w 2 | tee /dev/fd/2 | grep -q "1,570,340" -- examples/lddmc models/blocks.2.ldd -w 2 | tee /dev/fd/2 | grep -q "7057 states" +- examples/mc models/schedule_world.2.bdd -w 2 | tee /dev/fd/2 | grep -q "1,570,340" +- examples/lddmc models/blocks.2.ldd -w 2 | tee /dev/fd/2 | grep -q "7,057 states" notifications: email: false diff --git a/resources/3rdparty/sylvan/CHANGELOG.md b/resources/3rdparty/sylvan/CHANGELOG.md index e4d58ae65..7cc6e1228 100755 --- a/resources/3rdparty/sylvan/CHANGELOG.md +++ b/resources/3rdparty/sylvan/CHANGELOG.md @@ -2,12 +2,60 @@ All notable changes to Sylvan will be documented in this file. ## [Unreleased] +### Changed +- We now implement twisted tabulation as the hash function for the nodes table. The old hash function is still available and the default behavior can be changed in `sylvan_table.h`. + +## [1.4.0] - 2017-07-12 +### Added +- Function `mtbdd_cmpl` that computes the complement for MTBDDs. (0 becomes 1, non-0 becomes 0) + +### Changed +- Changed file formats used by the examples to match the changes in LTSmin. +- Function `mtbdd_satcount` now does not count assignments leading to 0. Perhaps in the future we make this configurable. (Like in CuDD.) +- Slightly improved C++ support by wrapping header files in the namespace sylvan. + +### Fixed +- There was a bug where Lace tasks are overwritten during SYNC, which causes problems during garbage collection. Lace reusing the bucket during SYNC is by design and is difficult to change. We fix the issue by checking during garbage collection if the stored task is still the same function, which in the worst case marks more nodes than needed. +- Band-aid patch for hashing; very similar nodes were hashing to similar positions and strides, causing early garbage collections and full tables. The patch works for now, but we need a more robust solution. + +### Removed +- Removed support for HWLOC (pinning on NUMA machines). Planning to bring this back as an option, but in its current form it prevents multiple Sylvan programs from running simultaneously on the same machine. + +## [1.3.3] - 2017-06-03 +### Changed +- Changed file format for .bdd files in the MC example. + +### Fixed +- A major bug in `lddmc_match_sat_par` has been fixed. +- A bug in the saturation algorithm in the model checking example has been fixed. +- A major bug in the hash table rehashing implementation has been fixed. + +## [1.3.2] - 2017-05-23 +### Added +- Now implements `lddmc_protect` and `lddmc_unprotect` for external pointer references. +- Now implements `lddmc_refs_pushptr` and `lddmc_refs_popptr` for internal pointer references + +### Changed +- New version of Lace has slightly different API for manually created threads. + +## [1.3.1] - 2017-05-22 +### Fixed +- A bug in `mtbdd_refs_ptrs_up` caused a segfault. This has been fixed. + +## [1.3.0] - 2017-05-16 ### Added - The embedded work-stealing framework now explicitly checks for stack overflows and aborts with an appropriate error message written to stderr. - New functions `sylvan_project` and `sylvan_and_project` for BDDs, a dual of existential quantification, where instead of the variables to remove, the given set of variables are the variables to keep. +- New functions `mtbdd_refs_pushptr` and `mtbdd_refs_popptr` allow thread-specific referencing of pointers. ### Changed - Rewritten initialization of Sylvan. Before the call to `sylvan_init_package`, table sizes must be initialized either using `sylvan_set_sizes` or with the new function `sylvan_set_limits`. This new function allows the user to set a maximum number of bytes allocated for the nodes table and for the operation cache. +- Rewritten MTBDD referencing system. +- Rewritten MTBDD map and set functions (no API change except renaming `mtbdd_map_addall` to `mtbdd_map_update` with backward compatibility) +- The lock-free unique table now uses double hashing instead of rehashing. This can improve the performance for custom leaves and improves the hash spread. + +### Fixed +- A bug in `llmsset_lookup` affecting custom leaves has been fixed. ## [1.2.0] - 2017-02-03 ### Added diff --git a/resources/3rdparty/sylvan/CMakeLists.txt b/resources/3rdparty/sylvan/CMakeLists.txt old mode 100755 new mode 100644 index a251eadec..7332217d3 --- a/resources/3rdparty/sylvan/CMakeLists.txt +++ b/resources/3rdparty/sylvan/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required(VERSION 3.1) -project(sylvan LANGUAGES C CXX VERSION 1.2.0) +project(sylvan LANGUAGES C CXX VERSION 1.4.0) set(PROJECT_DESCRIPTION "Sylvan, a parallel decision diagram library") set(PROJECT_URL "https://github.com/trolando/sylvan") @@ -25,8 +25,8 @@ set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake/") option(SYLVAN_PORTABLE "If set, the created library will be portable." OFF) option(USE_CARL "Sets whether carl should be included." ON) -set(CMAKE_C_FLAGS "-O2 -Wextra -Wall -fno-strict-aliasing -fPIC ${CMAKE_C_FLAGS}") -set(CMAKE_CXX_FLAGS "-O2 -Wextra -Wall -fno-strict-aliasing -Wno-deprecated -fPIC ${CMAKE_CXX_FLAGS}") +set(CMAKE_C_FLAGS "-O2 -Wextra -Wall -fno-strict-aliasing ${CMAKE_C_FLAGS}") +set(CMAKE_CXX_FLAGS "-O2 -Wextra -Wall -fno-strict-aliasing -Wno-deprecated ${CMAKE_CXX_FLAGS}") if (NOT SYLVAN_PORTABLE) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=native") @@ -73,18 +73,17 @@ include_directories("${PROJECT_BINARY_DIR}/../../../include") include_directories(src) add_subdirectory(src) -option(SYLVAN_BUILD_TESTS "Build example tools" ON) +option(SYLVAN_BUILD_TESTS "Build example tests" ON) if(SYLVAN_BUILD_TESTS) add_subdirectory(test) endif() - -option(SYLVAN_BUILD_EXAMPLES "Build example tools" ON) +option(SYLVAN_BUILD_EXAMPLES "Build example tools" OFF) if(SYLVAN_BUILD_EXAMPLES) add_subdirectory(examples) endif() -option(SYLVAN_BUILD_DOCS "Build documentation" ON) +option(SYLVAN_BUILD_DOCS "Build documentation" OFF) if(SYLVAN_BUILD_DOCS) configure_file("docs/conf.py.in" "docs/conf.py" @ONLY) find_package(Sphinx REQUIRED) diff --git a/resources/3rdparty/sylvan/cmake/FindGMP.cmake b/resources/3rdparty/sylvan/cmake/FindGMP.cmake index 7d787a84d..7dcd75afd 100755 --- a/resources/3rdparty/sylvan/cmake/FindGMP.cmake +++ b/resources/3rdparty/sylvan/cmake/FindGMP.cmake @@ -8,16 +8,13 @@ find_package(PkgConfig) pkg_check_modules(PC_GMP QUIET gmp) -set(GMP_INCLUDE "" CACHE PATH "include dir") -set(GMP_LOCATION "" CACHE PATH "location dir") - set(GMP_DEFINITIONS ${PC_GMP_CFLAGS_OTHER}) find_path(GMP_INCLUDE_DIR gmp.h - HINTS ${GMP_INCLUDE} ${PC_GMP_INCLUDEDIR} ${PC_GMP_INCLUDE_DIRS}) + HINTS ${PC_GMP_INCLUDEDIR} ${PC_GMP_INCLUDE_DIRS}) find_library(GMP_LIBRARIES NAMES gmp libgmp - HINTS ${GMP_LOCATION} ${PC_GMP_LIBDIR} ${PC_GMP_LIBRARY_DIRS} NO_CMAKE_PATH NO_CMAKE_ENVIRONMENT_PATH) + HINTS ${PC_GMP_LIBDIR} ${PC_GMP_LIBRARY_DIRS}) include(FindPackageHandleStandardArgs) # handle the QUIETLY and REQUIRED arguments and set GMP_FOUND to TRUE diff --git a/resources/3rdparty/sylvan/docs/index.rst b/resources/3rdparty/sylvan/docs/index.rst index cb2a33aa7..f15c2e85e 100755 --- a/resources/3rdparty/sylvan/docs/index.rst +++ b/resources/3rdparty/sylvan/docs/index.rst @@ -31,15 +31,19 @@ Bindings for other languages than C/C++ also exist: Dependencies ------------ -Sylvan has the following required dependencies: +Sylvan has the following dependencies: - **CMake** for compiling. - **gmp** (``libgmp-dev``) for the GMP leaves in MTBDDs. -- **hwloc** (``libhwloc-dev``) for pinning worker threads to processors. +- **Sphinx** if you want to build the documentation. Sylvan depends on the `work-stealing framework Lace `__ for its implementation. Lace is embedded in the Sylvan distribution. +Lace requires one additional library: + +- **hwloc** (``libhwloc-dev``) for pinning worker threads to processors. + Building -------- @@ -71,14 +75,12 @@ To use Sylvan, the library and its dependency Lace must be initialized: lace_init(n_workers, 0); lace_startup(0, NULL, NULL); - size_t nodes_minsize = 1LL<<22; - size_t nodes_maxsize = 1LL<<26; - size_t cache_minsize = 1LL<<23; - size_t cache_maxsize = 1LL<<27; - sylvan_init_package(nodes_minsize, nodes_maxsize, cache_minsize, cache_maxsize); + // use at most 512 MB, nodes:cache ratio 2:1, initial size 1/32 of maximum + sylvan_set_limits(512*1024*1024, 1, 5); + sylvan_init_package(); sylvan_init_mtbdd(); - ... + /* ... do stuff ... */ sylvan_stats_report(stdout); sylvan_quit(); @@ -90,19 +92,20 @@ for work-stealing. The parameter ``n_workers`` can be set to 0 for auto-detectio function ``lace_startup`` then creates all other worker threads. The worker threads run until ``lace_exit`` is called. Lace must be started before Sylvan can be initialized. -Sylvan is initialized with a call to ``sylvan_init_package``. Here we choose the initial -and maximum sizes of the nodes table and the operation cache. In the example, we choose a maximum -nodes table size of 2^26 and a maximum cache size of 2^27. The initial sizes are -set to 2^22 and 2^23, respectively. The sizes must be powers of 2. -Sylvan allocates memory for the maximum sizes *in virtual memory* but only uses the space -needed for the initial sizes. The sizes are doubled during garbage collection, until the maximum -size has been reached. +Sylvan is initialized with a call to ``sylvan_init_package``. Before this call, Sylvan needs to know +how much memory to allocate for the nodes table and the operation cache. In this example, we use the +``sylvan_set_limits`` function to tell Sylvan that it may allocate at most 512 MB for these tables. +The second parameter indicates the ratio of the nodes table and the operation cache, with each +higher number doubling the size of the nodes table. Negative numbers double the size of the operation +cache instead. In the example, we want the nodes table to be twice as big as the operation cache. +The third parameter controls how often garbage collection doubles the table sizes before +their maximum size is reached. The value 5 means that the initial tables are 32x as small as the maximum size. +By default, every execution of garbage collection doubles the table sizes. -After ``sylvan_init_package``, the subpackages ``mtbdd`` and ``ldd`` can be initialized with -``sylvan_init_mtbdd`` and ``sylvan_init_ldd``. This mainly allocates auxiliary datastructures for -garbage collection. +After ``sylvan_init_package``, subpackages like ``mtbdd`` and ``ldd`` can be initialized with +``sylvan_init_mtbdd`` and ``sylvan_init_ldd``. This allocates auxiliary datastructures. -If you enable statistics generation (via CMake) then you can use ``sylvan_stats_report`` to report +If you enabled statistics generation (via CMake), then you can use ``sylvan_stats_report`` to report the obtained statistics to a given ``FILE*``. The Lace framework @@ -110,7 +113,7 @@ The Lace framework Sylvan uses the Lace framework to offer 'automatic' parallelization of decision diagram operations. Many functions in Sylvan are Lace tasks. To call a Lace task, the variables -``__lace_worker`` and ``__lace_dq_head`` must be initialized **locally**. +``__lace_worker`` and ``__lace_dq_head`` must be initialized as **local** variables of the current function. Use the macro ``LACE_ME`` to initialize the variables in every function that calls Sylvan functions and is not itself a Lace task. @@ -121,98 +124,207 @@ Like all decision diagram implementations, Sylvan performs garbage collection. Garbage collection is triggered when trying to insert a new node and no empty space can be found in the table within a reasonable upper bound. +Garbage collection can be disabled with ``sylvan_gc_disable`` and enabled again with ``sylvan_gc_enable``. +Call ``sylvan_gc`` to manually trigger garbage collection. + To ensure that no decision diagram nodes are overwritten, you must ensure that Sylvan knows which decision diagrams you care about. -The easiest way to do this is with ``sylvan_protect`` and ``sylvan_unprotect`` to protect -a given pointer. -These functions protect the decision diagram referenced to by that pointer at the time -that garbage collection is performed. -Unlike some other implementations of decision diagrams, -you can modify the variable between the calls to ``sylvan_protect`` and ``sylvan_unprotect`` -without explicitly changing the reference. - -To manually trigger garbage collection, call ``sylvan_gc``. -You can use ``sylvan_gc_disable`` and ``sylvan_gc_enable`` to disable garbage collection or -enable it again. If garbage collection is disabled, the program will abort when the nodes table -is full. +Each subpackage implements mechanisms to store references to decision diagrams that must be kept. +For example, the *mtbdd* subpackage implements ``mtbdd_protect`` and ``mtbdd_unprotect`` to store pointers to +MTBDD variables. + +.. code:: c + + MTBDD* allocate_var() { + MTBDD* my_var = (MTBDD*)calloc(sizeof(MTBDD), 1); + mtbdd_protect(my_var); + return my_var; + } + + free_var(MTBDD* my_var) { + mtbdd_unprotect(my_var); + free(my_var); + } + +If you use ``mtbdd_protect`` you do not need to update the reference every time the value changes. + +The *mtbdd* subpackage also implements thread-local stacks to temporarily store pointers and results of tasks: + +.. code:: c + + MTBDD some_thing = ...; + mtbdd_refs_pushptr(&some_thing); + MTBDD result_param1 = mtbdd_false, result_param2 = mtbdd_false; + mtbdd_refs_pushptr(&result_param1); + mtbdd_refs_pushptr(&result_param2); + while (some_condition) { + mtbdd_refs_spawn(SPAWN(an_operation, some_thing, param1)); + result_param2 = CALL(an_operation, some_thing, param2); + result_param1 = mtbdd_refs_sync(SYNC(an_operation)); + some_thing = CALL(another_operation, result1, result2); + } + mtbdd_refs_popptr(3); + return some_thing; + +It is recommended to use the thread-local stacks for local variables, and to use the ``protect`` and ``unprotect`` +functions for other variables. Every SPAWN and SYNC of a Lace task that returns an MTBDD must be decorated with +``mtbdd_refs_stack`` and ``mtbdd_refs_sync`` as in the above example. + +References to decision diagrams must be added before a worker may cooperate on garbage collection. +Workers can cooperate on garbage collection during ``SYNC`` and when functions create nodes or use ``sylvan_gc_test`` to test whether to assist in garbage collection. +Functions for adding or removing references never perform garbage collection. +Furthermore, only the ``mtbdd_makenode`` function (and other node making primitives) implicitly reference their parameters; all other functions do not reference their parameters. +Nesting Sylvan functions (including ``sylvan_ithvar``) is bad practice and should be avoided. + **Warning**: Sylvan is a multi-threaded library and all workers must cooperate for garbage collection. If you use locking mechanisms in your code, beware of deadlocks! +You can explicitly cooperate on garbage collection with ``sylvan_gc_test()``. + +Basic BDD/MTBDD functionality +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Basic BDD functionality -~~~~~~~~~~~~~~~~~~~~~~~ +In Sylvan, BDDs are special cases of MTBDDs. +Several functions are specific for BDDs and they start with ``sylvan_``, whereas generic MTBDD functions start +with ``mtbdd_``. To create new BDDs, you can use: -- ``sylvan_true``: representation of constant ``true``. -- ``sylvan_false``: representation of constant ``false``. +- ``mtbdd_true``: representation of constant ``true``. +- ``mtbdd_false``: representation of constant ``false``. - ``sylvan_ithvar(var)``: representation of literal (negated: ``sylvan_nithvar(var)``) To follow the BDD edges and obtain the variable at the root of a BDD, -you can use (only for internal nodes, not for leaves ``sylvan_true`` and ``sylvan_false``): +you can use (only for internal nodes, not for leaves ``mtbdd_true`` and ``mtbdd_false``): -- ``sylvan_var(bdd)``: obtain the variable of the root node of . -- ``sylvan_high(bdd)``: follow the high edge of . -- ``sylvan_low(bdd)``: follow the low edge of . +- ``mtbdd_getvar(bdd)``: obtain the variable of the root node of . +- ``mtbdd_gethigh(bdd)``: follow the high edge of . +- ``mtbdd_getlow(bdd)``: follow the low edge of . You need to manually reference BDDs that you want to keep during garbage -collection: +collection (see the above explanation): -- ``sylvan_protect(bddptr)``: add a pointer reference to . -- ``sylvan_unprotect(bddptr)``: remove a pointer reference to . -- ``sylvan_ref(bdd)``: add a reference to . -- ``sylvan_deref(bdd)``: remove a reference to . +- ``mtbdd_protect(bddptr)``: add a pointer reference to . +- ``mtbdd_unprotect(bddptr)``: remove a pointer reference to . +- ``mtbdd_refs_pushptr(bddptr)``: add a local pointer reference to . +- ``mtbdd_refs_popptr(amount)``: remove the last local pointer references. +- ``mtbdd_refs_spawn(SPAWN(...))``: spawn a task that returns a BDD/MTBDD. +- ``mtbdd_refs_sync(SYNC(...))``: sync a task that returns a BDD/MTBDD. -It is recommended to use ``sylvan_protect`` and ``sylvan_unprotect``. +It is recommended to use ``mtbdd_protect`` and ``mtbdd_unprotect``. The C++ objects (defined in ``sylvan_obj.hpp``) handle this automatically. +For local variables, we recommend ``mtbdd_refs_pushptr`` and ``mtbdd_refs_popptr``. -The following basic operations are implemented: +The following basic BDD operations are implemented: - ``sylvan_not(bdd)``: compute the negation of . - ``sylvan_ite(a,b,c)``: compute 'if then else '. -- ``sylvan_and(a, b)``: compute ' and ' -- ``sylvan_or(a, b)``: compute ' or ' -- ``sylvan_nand(a, b)``: compute 'not ( and )' -- ``sylvan_nor(a, b)``: compute 'not ( or )' -- ``sylvan_imp(a, b)``: compute ' then ' -- ``sylvan_invimp(a, b)``: compute ' then ' -- ``sylvan_xor(a, b)``: compute ' xor ' -- ``sylvan_equiv(a, b)``: compute ' = ' -- ``sylvan_diff(a, b)``: compute ' and not ' -- ``sylvan_less(a, b)``: compute ' and not ' +- ``sylvan_and(a, b)``: compute ' and '. +- ``sylvan_or(a, b)``: compute ' or '. +- ``sylvan_nand(a, b)``: compute 'not ( and )'. +- ``sylvan_nor(a, b)``: compute 'not ( or )'. +- ``sylvan_imp(a, b)``: compute ' then '. +- ``sylvan_invimp(a, b)``: compute ' then '. +- ``sylvan_xor(a, b)``: compute ' xor '. +- ``sylvan_equiv(a, b)``: compute ' = '. +- ``sylvan_diff(a, b)``: compute ' and not '. +- ``sylvan_less(a, b)``: compute ' and not '. - ``sylvan_exists(bdd, vars)``: existential quantification of with respect to variables . - ``sylvan_forall(bdd, vars)``: universal quantification of with respect to variables . +- ``sylvan_project(bdd, vars)``: the dual of ``sylvan_exists``, projects the to the variable domain . A set of variables (like above) is a BDD representing the conjunction of the variables. - -Other BDD operations -~~~~~~~~~~~~~~~~~~~~ - -See ``src/sylvan_bdd.h`` for other operations on BDDs, especially operations -that are relevant for model checking. - -Basic MTBDD functionality -~~~~~~~~~~~~~~~~~~~~~~~~~ - -See ``src/sylvan_mtbdd.h`` for operations on multi-terminal BDDs. - -Basic LDD functionality -~~~~~~~~~~~~~~~~~~~~~~~ - -See ``src/sylvan_ldd.h`` for operations on List DDs. +A number of convencience functions are defined to manipulate sets of variables: + +- ``mtbdd_set_empty()``: obtain an empty set. +- ``mtbdd_set_isempty(set)``: compute whether the set is empty. +- ``mtbdd_set_first(set)``: obtain the first variable of the set. +- ``mtbdd_set_next(set)``: obtain the subset without the first variable. +- ``mtbdd_set_from_array(arr, len)``: create a set from a given array. +- ``mtbdd_set_to_array(set, arr)``: write the set to the given array. +- ``mtbdd_set_add(set, var)``: compute the set plus the variable. +- ``mtbdd_set_union(set1, set2)``: compute the union of two sets. +- ``mtbdd_set_remove(set, var)``: compute the set minus the variable. +- ``mtbdd_set_minus(set1, set2)``: compute the set minus the variables in . +- ``mtbdd_set_count(set)``: compute the number of variables in the set. +- ``mtbdd_set_contains(set, var)``: compute whether the set contains the variable. + +Sylvan also implements composition and substitution/variable renaming using a "MTBDD map". An MTBDD map is a special structure +implemented with special MTBDD nodes to store a mapping from variables (uint32_t) to MTBDDs. Like sets of variables and MTBDDs, MTBDD maps must +also be referenced for garbage collection. The following functions are related to MTBDD maps: + +- ``mtbdd_compose(dd, map)``: apply the map to the given decision diagram, transforming every node with a variable that is associated with some function F in the map by ``if then else ``. +- ``sylvan_compose(dd, map)``: same as ``mtbdd_compose``, but assumes the decision diagram only has Boolean leaves. +- ``mtbdd_map_empty()``: obtain an empty map. +- ``mtbdd_map_isempty(map)``: compute whether the map is empty. +- ``mtbdd_map_key(map)``: obtain the key of the first pair of the map. +- ``mtbdd_map_value(map)``: obtain the value of the first pair of the map. +- ``mtbdd_map_next(map)``: obtain the submap without the first pair. +- ``mtbdd_map_add(map, key, value)``: compute the map plus the given key-value pair. +- ``mtbdd_map_update(map1, map2)``: compute the union of two maps, with priority to map2 if both maps share variables. +- ``mtbdd_map_remove(map, var)``: compute the map minus the variable. +- ``mtbdd_map_removeall(map, set)``: compute the map minus the given variables. +- ``mtbdd_map_count(set)``: compute the number of pairs in the map. +- ``mtbdd_map_contains(map, var)``: compute whether the map contains the variable. + +Sylvan implements a number of counting operations: + +- ``mtbdd_satcount(bdd, number_of_vars)``: compute the number of minterms (assignments that lead to True) for a function with variables; we don't need to know the exact variables that may be in the BDD, just how many there are. +- ``sylvan_pathcount(bdd)``: compute the number of distinct paths to True. +- ``mtbdd_nodecount(bdd)``: compute the number of nodes (and leaves) in the BDD. +- ``mtbdd_nodecount_more(array, length)``: compute the number of nodes (and leaves) in the array of BDDs. + +Sylvan implements various advanced operations: + +- ``sylvan_and_exists(bdd_a, bdd_b, vars)``: compute ``sylvan_exists(sylvan_and(bdd_a, bdd_b), vars)`` in one step. +- ``sylvan_and_project(bdd_a, bdd_b, vars)``: compute ``sylvan_project(sylvan_and(bdd_a, bdd_b), vars)`` in one step. +- ``sylvan_cube(vars, values)``: compute a cube (to leaf True) of the given variables, where the array values indicates for each variable whether to use it in negative form (value 0) or positive form (value 1) or to skip it (as dont-care, value 2). +- ``sylvan_union_cube(set, vars, values)``: compute ``sylvan_or(set, sylvan_cube(vars, values))`` in one step. +- ``sylvan_constrain(bdd_f, bdd_c)``: compute the generic cofactor of F constrained by C, i.e, set F to False for all assignments not in C. +- ``sylvan_restrict(bdd_f, bdd_c)``: compute Coudert and Madre's restrict algorithm, which tries to minimize bdd_f according to a care set C using sibling substitution; the invariant is ``restrict(f, c) \and c == f \and c``; the result of this algorithm is often but not always smaller than the original. +- ``sylvan_pick_cube(bdd)`` or ``sylvan_sat_one_bdd(bdd)``: extract a single path to True from the BDD (returns the BDD of this path) +- ``sylvan_pick_single_cube(bdd, vars)`` or ``sylvan_sat_single(bdd, vars)`` extracts a single minterm from the BDD (returns the BDD of this assignment) +- ``sylvan_sat_one(bdd, vars, array)``: extract a single minterm from the BDD given the set of variables and write the values of the variables in order to the given array, with 0 when it is negative, 1 when it is positive, and 2 when it is dontcare. + +Sylvan implements several operations for transition systems. These operations assume an interleaved variable ordering, such that *source* or *unprimed* variables have even parity (0, 2, 4...) and matching *target* or *primed* variables have odd parity (1, 3, 5...). +The transition relations may be partial transition relations that only manipulate a subset of variables; hence, the operations also require the set of variables. + +- ``sylvan_relnext(set, relation, vars)``: apply the (partial) relation on the given variables to the set. +- ``sylvan_relprev(relation, set, vars)``: apply the (partial) relation in reverse to the set; this computes predecessors but can also concatenate relations as follows: ``sylvan_relprev(rel1, rel2, rel1_vars)``. +- ``sylvan_closure(relation)``: compute the transitive closure of the given set recursively (see Matsunaga et al, DAC 1993) + +See ``src/sylvan_bdd.h`` and ``src/mtbdd.h`` for other operations on BDDs and MTBDDs. + +Custom leaves +~~~~~~~~~~~~~ + +See ``src/sylvan_mt.h`` and the example in ``src/sylvan_gmp.h`` and ``src/sylvan_gmp.c`` for custom leaves in MTBDDs. + +Custom decision diagram operations +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Adding custom decision diagram operations is easy. Include ``sylvan_int.h`` for the internal functions. See ``sylvan_cache.h`` +for how to use the operation cache. + +List decision diagrams +~~~~~~~~~~~~~~~~~~~~~~ + +See ``src/sylvan_ldd.h`` for operations on list decision diagrams. + +File I/O +~~~~~~~~ + +You can store and load BDDs using a number of methods, which are documented in the header files ``sylvan_mtbdd.h`` and ``sylvan_ldd.h``. Support for C++ ~~~~~~~~~~~~~~~ See ``src/sylvan_obj.hpp`` for the C++ interface. -.. Adding custom decision diagram operations -.. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Table resizing ~~~~~~~~~~~~~~ During garbage collection, it is possible to resize the nodes table and -the cache. Sylvan provides two default implementations: an aggressive -version that resizes every time garbage collection is performed, and a +the cache. By default, Sylvan doubles the table sizes during every garbage +collection until the maximum table size has been reached. There is also a less aggressive version that only resizes when at least half the table is full. This can be configured in ``src/sylvan_config.h``. It is not possible to decrease the size of the nodes table and the cache. diff --git a/resources/3rdparty/sylvan/examples/ldd2bdd.c b/resources/3rdparty/sylvan/examples/ldd2bdd.c index 545be9792..b23311bd2 100755 --- a/resources/3rdparty/sylvan/examples/ldd2bdd.c +++ b/resources/3rdparty/sylvan/examples/ldd2bdd.c @@ -13,15 +13,15 @@ static int workers = 0; // autodetect static int verbose = 0; static char* model_filename = NULL; // filename of model static char* bdd_filename = NULL; // filename of output BDD -static char* sizes = "22,27,21,26"; // default sizes static int check_results = 0; +static int no_reachable = 0; /* argp configuration */ static struct argp_option options[] = { {"workers", 'w', "", 0, "Number of workers (default=0: autodetect)", 0}, - {"table-sizes", 1, ",,,", 0, "Sizes of nodes table and operation cache as powers of 2", 0}, - {"check-results", 2, 0, 0, "Check new transition relations ", 0}, + {"check-results", 2, 0, 0, "Check new transition relations", 0}, + {"no-reachable", 1, 0, 0, "Do not write reachabile states", 0}, {"verbose", 'v', 0, 0, "Set verbose", 0}, {0, 0, 0, 0, 0, 0} }; @@ -37,7 +37,7 @@ parse_opt(int key, char *arg, struct argp_state *state) verbose = 1; break; case 1: - sizes = arg; + no_reachable = 1; break; case 2: check_results = 1; @@ -58,67 +58,112 @@ parse_opt(int key, char *arg, struct argp_state *state) static struct argp argp = { options, parse_opt, " []", 0, 0, 0, 0 }; -/* Globals */ +/** + * Types (set and relation) + */ typedef struct set { - MDD mdd; - MDD proj; + MDD dd; } *set_t; typedef struct relation { - MDD mdd; - MDD meta; + MDD dd; + MDD meta; // for relprod + int r_k, w_k, *r_proj, *w_proj; } *rel_t; -static size_t vector_size; // size of vector +static int vector_size; // size of vector static int next_count; // number of partitions of the transition relation static rel_t *next; // each partition of the transition relation static int actionbits = 0; static int has_actions = 0; -#define Abort(...) { fprintf(stderr, __VA_ARGS__); exit(-1); } +#define Abort(...) { fprintf(stderr, __VA_ARGS__); fprintf(stderr, "Abort at line %d!\n", __LINE__); exit(-1); } /* Load a set from file */ #define set_load(f) CALL(set_load, f) TASK_1(set_t, set_load, FILE*, f) { - lddmc_serialize_fromfile(f); - - size_t mdd; - size_t proj; - int size; + set_t set = (set_t)malloc(sizeof(struct set)); - if (fread(&mdd, sizeof(size_t), 1, f) != 1) Abort("Invalid input file!\n"); - if (fread(&proj, sizeof(size_t), 1, f) != 1) Abort("Invalid input file!\n"); - if (fread(&size, sizeof(int), 1, f) != 1) Abort("Invalid input file!\n"); + int k; + if (fread(&k, sizeof(int), 1, f) != 1) Abort("Invalid input file!"); + if (k != -1) Abort("Invalid input file!"); - set_t set = (set_t)malloc(sizeof(struct set)); - set->mdd = lddmc_ref(lddmc_serialize_get_reversed(mdd)); - set->proj = lddmc_ref(lddmc_serialize_get_reversed(proj)); + lddmc_serialize_fromfile(f); + size_t dd; + if (fread(&dd, sizeof(size_t), 1, f) != 1) Abort("Invalid input file!"); + set->dd = lddmc_serialize_get_reversed(dd); + lddmc_protect(&set->dd); return set; } /* Load a relation from file */ -#define rel_load(f) CALL(rel_load, f) -TASK_1(rel_t, rel_load, FILE*, f) +#define rel_load_proj(f) CALL(rel_load_proj, f) +TASK_1(rel_t, rel_load_proj, FILE*, f) { - lddmc_serialize_fromfile(f); + int r_k, w_k; + if (fread(&r_k, sizeof(int), 1, f) != 1) Abort("Invalid file format."); + if (fread(&w_k, sizeof(int), 1, f) != 1) Abort("Invalid file format."); - size_t mdd; - size_t meta; + rel_t rel = (rel_t)malloc(sizeof(struct relation)); + rel->r_k = r_k; + rel->w_k = w_k; + rel->r_proj = (int*)malloc(sizeof(int[rel->r_k])); + rel->w_proj = (int*)malloc(sizeof(int[rel->w_k])); + + if (fread(rel->r_proj, sizeof(int), rel->r_k, f) != (size_t)rel->r_k) Abort("Invalid file format."); + if (fread(rel->w_proj, sizeof(int), rel->w_k, f) != (size_t)rel->w_k) Abort("Invalid file format."); + + int *r_proj = rel->r_proj; + int *w_proj = rel->w_proj; + + /* Compute the meta */ + uint32_t meta[vector_size*2+2]; + memset(meta, 0, sizeof(uint32_t[vector_size*2+2])); + int r_i=0, w_i=0, i=0, j=0; + for (;;) { + int type = 0; + if (r_i < r_k && r_proj[r_i] == i) { + r_i++; + type += 1; // read + } + if (w_i < w_k && w_proj[w_i] == i) { + w_i++; + type += 2; // write + } + if (type == 0) meta[j++] = 0; + else if (type == 1) { meta[j++] = 3; } + else if (type == 2) { meta[j++] = 4; } + else if (type == 3) { meta[j++] = 1; meta[j++] = 2; } + if (r_i == r_k && w_i == w_k) { + meta[j++] = 5; // action label + meta[j++] = (uint32_t)-1; + break; + } + i++; + } - if (fread(&mdd, sizeof(size_t), 1, f) != 1) Abort("Invalid input file!\n"); - if (fread(&meta, sizeof(size_t), 1, f) != 1) Abort("Invalid input file!\n"); + rel->meta = lddmc_cube((uint32_t*)meta, j); + rel->dd = lddmc_false; - rel_t rel = (rel_t)malloc(sizeof(struct relation)); - rel->mdd = lddmc_ref(lddmc_serialize_get_reversed(mdd)); - rel->meta = lddmc_ref(lddmc_serialize_get_reversed(meta)); + lddmc_protect(&rel->meta); + lddmc_protect(&rel->dd); return rel; } +#define rel_load(f, rel) CALL(rel_load, f, rel) +VOID_TASK_2(rel_load, FILE*, f, rel_t, rel) +{ + lddmc_serialize_fromfile(f); + size_t dd; + if (fread(&dd, sizeof(size_t), 1, f) != 1) Abort("Invalid input file!"); + rel->dd = lddmc_serialize_get_reversed(dd); +} + /** * Compute the highest value for each variable level. * This method is called for the set of reachable states. @@ -199,7 +244,7 @@ VOID_TASK_3(compute_highest_action, MDD, dd, MDD, meta, uint32_t*, target) */ static uint64_t bdd_from_ldd_id; #define bdd_from_ldd(dd, bits, firstvar) CALL(bdd_from_ldd, dd, bits, firstvar) -TASK_3(MTBDD, bdd_from_ldd, MDD, dd, MDD, bits_mdd, uint32_t, firstvar) +TASK_3(MTBDD, bdd_from_ldd, MDD, dd, MDD, bits_dd, uint32_t, firstvar) { /* simple for leaves */ if (dd == lddmc_false) return mtbdd_false; @@ -208,16 +253,16 @@ TASK_3(MTBDD, bdd_from_ldd, MDD, dd, MDD, bits_mdd, uint32_t, firstvar) MTBDD result; /* get from cache */ /* note: some assumptions about the encoding... */ - if (cache_get3(bdd_from_ldd_id, dd, bits_mdd, firstvar, &result)) return result; + if (cache_get3(bdd_from_ldd_id, dd, bits_dd, firstvar, &result)) return result; mddnode_t n = LDD_GETNODE(dd); - mddnode_t nbits = LDD_GETNODE(bits_mdd); + mddnode_t nbits = LDD_GETNODE(bits_dd); int bits = (int)mddnode_getvalue(nbits); - /* spawn right, same bits_mdd and firstvar */ - mtbdd_refs_spawn(SPAWN(bdd_from_ldd, mddnode_getright(n), bits_mdd, firstvar)); + /* spawn right, same bits_dd and firstvar */ + mtbdd_refs_spawn(SPAWN(bdd_from_ldd, mddnode_getright(n), bits_dd, firstvar)); - /* call down, with next bits_mdd and firstvar */ + /* call down, with next bits_dd and firstvar */ MTBDD down = CALL(bdd_from_ldd, mddnode_getdown(n), mddnode_getdown(nbits), firstvar + 2*bits); /* encode current value */ @@ -239,7 +284,7 @@ TASK_3(MTBDD, bdd_from_ldd, MDD, dd, MDD, bits_mdd, uint32_t, firstvar) mtbdd_refs_pop(2); /* put in cache */ - cache_put3(bdd_from_ldd_id, dd, bits_mdd, firstvar, result); + cache_put3(bdd_from_ldd_id, dd, bits_dd, firstvar, result); return result; } @@ -249,7 +294,7 @@ TASK_3(MTBDD, bdd_from_ldd, MDD, dd, MDD, bits_mdd, uint32_t, firstvar) */ static uint64_t bdd_from_ldd_rel_id; #define bdd_from_ldd_rel(dd, bits, firstvar, meta) CALL(bdd_from_ldd_rel, dd, bits, firstvar, meta) -TASK_4(MTBDD, bdd_from_ldd_rel, MDD, dd, MDD, bits_mdd, uint32_t, firstvar, MDD, meta) +TASK_4(MTBDD, bdd_from_ldd_rel, MDD, dd, MDD, bits_dd, uint32_t, firstvar, MDD, meta) { if (dd == lddmc_false) return mtbdd_false; if (dd == lddmc_true) return mtbdd_true; @@ -266,11 +311,11 @@ TASK_4(MTBDD, bdd_from_ldd_rel, MDD, dd, MDD, bits_mdd, uint32_t, firstvar, MDD, MTBDD result; /* note: assumptions */ - if (cache_get4(bdd_from_ldd_rel_id, dd, bits_mdd, firstvar, meta, &result)) return result; + if (cache_get4(bdd_from_ldd_rel_id, dd, bits_dd, firstvar, meta, &result)) return result; const mddnode_t n = LDD_GETNODE(dd); const mddnode_t nmeta = LDD_GETNODE(meta); - const mddnode_t nbits = LDD_GETNODE(bits_mdd); + const mddnode_t nbits = LDD_GETNODE(bits_dd); const int bits = (int)mddnode_getvalue(nbits); const uint32_t vmeta = mddnode_getvalue(nmeta); @@ -285,10 +330,10 @@ TASK_4(MTBDD, bdd_from_ldd_rel, MDD, dd, MDD, bits_mdd, uint32_t, firstvar, MDD, assert(mddnode_getright(n) != mtbdd_true); /* spawn right */ - mtbdd_refs_spawn(SPAWN(bdd_from_ldd_rel, mddnode_getright(n), bits_mdd, firstvar, meta)); + mtbdd_refs_spawn(SPAWN(bdd_from_ldd_rel, mddnode_getright(n), bits_dd, firstvar, meta)); /* compute down with same bits / firstvar */ - MTBDD down = bdd_from_ldd_rel(mddnode_getdown(n), bits_mdd, firstvar, mddnode_getdown(nmeta)); + MTBDD down = bdd_from_ldd_rel(mddnode_getdown(n), bits_dd, firstvar, mddnode_getdown(nmeta)); mtbdd_refs_push(down); /* encode read value */ @@ -319,7 +364,7 @@ TASK_4(MTBDD, bdd_from_ldd_rel, MDD, dd, MDD, bits_mdd, uint32_t, firstvar, MDD, /* spawn right */ assert(mddnode_getright(n) != mtbdd_true); - mtbdd_refs_spawn(SPAWN(bdd_from_ldd_rel, mddnode_getright(n), bits_mdd, firstvar, meta)); + mtbdd_refs_spawn(SPAWN(bdd_from_ldd_rel, mddnode_getright(n), bits_dd, firstvar, meta)); /* get recursive result */ MTBDD down = CALL(bdd_from_ldd_rel, mddnode_getdown(n), mddnode_getdown(nbits), firstvar + 2*bits, mddnode_getdown(nmeta)); @@ -358,7 +403,7 @@ TASK_4(MTBDD, bdd_from_ldd_rel, MDD, dd, MDD, bits_mdd, uint32_t, firstvar, MDD, assert(!mddnode_getcopy(n)); // do not process read copy nodes /* spawn right */ - mtbdd_refs_spawn(SPAWN(bdd_from_ldd_rel, mddnode_getright(n), bits_mdd, firstvar, meta)); + mtbdd_refs_spawn(SPAWN(bdd_from_ldd_rel, mddnode_getright(n), bits_dd, firstvar, meta)); /* get recursive result */ MTBDD down = CALL(bdd_from_ldd_rel, mddnode_getdown(n), mddnode_getdown(nbits), firstvar + 2*bits, mddnode_getdown(nmeta)); @@ -402,7 +447,7 @@ TASK_4(MTBDD, bdd_from_ldd_rel, MDD, dd, MDD, bits_mdd, uint32_t, firstvar, MDD, assert(vmeta <= 5); } - cache_put4(bdd_from_ldd_rel_id, dd, bits_mdd, firstvar, meta, result); + cache_put4(bdd_from_ldd_rel_id, dd, bits_dd, firstvar, meta, result); return result; } @@ -411,7 +456,7 @@ TASK_4(MTBDD, bdd_from_ldd_rel, MDD, dd, MDD, bits_mdd, uint32_t, firstvar, MDD, * Compute the BDD equivalent of the meta variable (to a variables cube) */ MTBDD -meta_to_bdd(MDD meta, MDD bits_mdd, uint32_t firstvar) +meta_to_bdd(MDD meta, MDD bits_dd, uint32_t firstvar) { if (meta == lddmc_false || meta == lddmc_true) return mtbdd_true; @@ -430,10 +475,10 @@ meta_to_bdd(MDD meta, MDD bits_mdd, uint32_t firstvar) if (vmeta == 1) { /* return recursive result, don't go down on bits */ - return meta_to_bdd(mddnode_getdown(nmeta), bits_mdd, firstvar); + return meta_to_bdd(mddnode_getdown(nmeta), bits_dd, firstvar); } - const mddnode_t nbits = LDD_GETNODE(bits_mdd); + const mddnode_t nbits = LDD_GETNODE(bits_dd); const int bits = (int)mddnode_getvalue(nbits); /* compute recursive result */ @@ -450,16 +495,6 @@ meta_to_bdd(MDD meta, MDD bits_mdd, uint32_t firstvar) return res; } -static char* -to_h(double size, char *buf) -{ - const char* units[] = {"B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"}; - int i = 0; - for (;size>1024;size/=1024) i++; - sprintf(buf, "%.*f %s", i, size, units[i]); - return buf; -} - VOID_TASK_0(gc_start) { printf("Starting garbage collection\n"); @@ -475,37 +510,13 @@ main(int argc, char **argv) { argp_parse(&argp, argc, argv, 0, 0, 0); - // Parse table sizes - int tablesize, maxtablesize, cachesize, maxcachesize; - if (sscanf(sizes, "%d,%d,%d,%d", &tablesize, &maxtablesize, &cachesize, &maxcachesize) != 4) { - Abort("Invalid string for --table-sizes, try e.g. --table-sizes=23,28,22,27"); - } - if (tablesize < 10 || maxtablesize < 10 || cachesize < 10 || maxcachesize < 10 || - tablesize > 40 || maxtablesize > 40 || cachesize > 40 || maxcachesize > 40) { - Abort("Invalid string for --table-sizes, must be between 10 and 40"); - } - if (tablesize > maxtablesize) { - Abort("Invalid string for --table-sizes, tablesize is larger than maxtablesize"); - } - if (cachesize > maxcachesize) { - Abort("Invalid string for --table-sizes, cachesize is larger than maxcachesize"); - } - - // Report table sizes - char buf[32]; - to_h((1ULL<mdd)); - for (i=0; imdd)); + printf("Initial states: %zu LDD nodes\n", lddmc_nodecount(initial->dd)); + for (int i=0; idd)); } } @@ -600,28 +594,18 @@ main(int argc, char **argv) // Compute highest value at each level (from reachable states) uint32_t highest[vector_size]; - for (size_t i=0; imdd, highest); + for (int i=0; idd, highest); // Compute highest action label value (from transition relations) uint32_t highest_action = 0; for (int i=0; imdd, next[i]->meta, &highest_action); - } - - // Report highest integers - /* - printf("Highest integer per level: "); - for (size_t i=0; i0) printf(", "); - printf("%u", highest[i]); + compute_highest_action(next[i]->dd, next[i]->meta, &highest_action); } - printf("\n"); - */ // Compute number of bits for each level int bits[vector_size]; - for (size_t i=0; i0) printf(", "); printf("%d", bits[i]); } @@ -650,15 +634,15 @@ main(int argc, char **argv) } // Compute bits MDD - MDD bits_mdd = lddmc_true; - for (size_t i=0; imdd, bits_mdd, 0); - assert((size_t)mtbdd_satcount(new_initial, totalbits) == (size_t)lddmc_satcount_cached(initial->mdd)); + MTBDD new_initial = bdd_from_ldd(initial->dd, bits_dd, 0); + assert((size_t)mtbdd_satcount(new_initial, totalbits) == (size_t)lddmc_satcount_cached(initial->dd)); mtbdd_refs_push(new_initial); { - size_t a = sylvan_serialize_add(new_initial); - size_t b = sylvan_serialize_add(state_vars); - size_t s = totalbits; - sylvan_serialize_tofile(f); - fwrite(&a, sizeof(size_t), 1, f); - fwrite(&s, sizeof(size_t), 1, f); - fwrite(&b, sizeof(size_t), 1, f); + int k = -1; + fwrite(&k, sizeof(int), 1, f); + mtbdd_writer_tobinary(f, &new_initial, 1); } // Custom operation that converts to BDD given number of bits for each level - MTBDD new_states = bdd_from_ldd(states->mdd, bits_mdd, 0); - assert((size_t)mtbdd_satcount(new_states, totalbits) == (size_t)lddmc_satcount_cached(states->mdd)); + MTBDD new_states = bdd_from_ldd(states->dd, bits_dd, 0); + assert((size_t)mtbdd_satcount(new_states, totalbits) == (size_t)lddmc_satcount_cached(states->dd)); mtbdd_refs_push(new_states); // Report size of BDD @@ -710,51 +689,52 @@ main(int argc, char **argv) // Write number of transitions fwrite(&next_count, sizeof(int), 1, f); - // Write transitions + // Write meta for each transition + for (int i=0; ir_k, sizeof(int), 1, f); + fwrite(&next[i]->w_k, sizeof(int), 1, f); + fwrite(next[i]->r_proj, sizeof(int), next[i]->r_k, f); + fwrite(next[i]->w_proj, sizeof(int), next[i]->w_k, f); + } + + // Write BDD for each transition for (int i=0; imdd, bits_mdd, 0, next[i]->meta); + MTBDD new_rel = bdd_from_ldd_rel(next[i]->dd, bits_dd, 0, next[i]->meta); mtbdd_refs_push(new_rel); + mtbdd_writer_tobinary(f, &new_rel, 1); - // Compute new for the current transition relation - MTBDD new_vars = meta_to_bdd(next[i]->meta, bits_mdd, 0); - mtbdd_refs_push(new_vars); + // Report number of nodes + if (verbose) printf("Transition %d: %zu BDD nodes\n", i, mtbdd_nodecount(new_rel)); if (check_results) { + // Compute new for the current transition relation + MTBDD new_vars = meta_to_bdd(next[i]->meta, bits_dd, 0); + mtbdd_refs_push(new_vars); + // Test if the transition is correctly converted MTBDD test = sylvan_relnext(new_states, new_rel, new_vars); mtbdd_refs_push(test); - MDD succ = lddmc_relprod(states->mdd, next[i]->mdd, next[i]->meta); + MDD succ = lddmc_relprod(states->dd, next[i]->dd, next[i]->meta); lddmc_refs_push(succ); - MTBDD test2 = bdd_from_ldd(succ, bits_mdd, 0); + MTBDD test2 = bdd_from_ldd(succ, bits_dd, 0); if (test != test2) Abort("Conversion error!\n"); - mtbdd_refs_pop(1); lddmc_refs_pop(1); + mtbdd_refs_pop(2); } - // Report number of nodes - if (verbose) printf("Transition %d: %zu BDD nodes\n", i, mtbdd_nodecount(new_rel)); - - size_t a = sylvan_serialize_add(new_rel); - size_t b = sylvan_serialize_add(new_vars); - sylvan_serialize_tofile(f); - fwrite(&a, sizeof(size_t), 1, f); - fwrite(&b, sizeof(size_t), 1, f); + mtbdd_refs_pop(1); } // Write reachable states - has_reachable = 1; + if (no_reachable) has_reachable = 0; fwrite(&has_reachable, sizeof(int), 1, f); - - { - size_t a = sylvan_serialize_add(new_states); - size_t b = sylvan_serialize_add(state_vars); - size_t s = totalbits; - sylvan_serialize_tofile(f); - fwrite(&a, sizeof(size_t), 1, f); - fwrite(&s, sizeof(size_t), 1, f); - fwrite(&b, sizeof(size_t), 1, f); + if (has_reachable) { + int k = -1; + fwrite(&k, sizeof(int), 1, f); + mtbdd_writer_tobinary(f, &new_states, 1); } + mtbdd_refs_pop(1); // new_states // Write action labels fwrite(&action_labels_count, sizeof(int), 1, f); diff --git a/resources/3rdparty/sylvan/examples/lddmc.c b/resources/3rdparty/sylvan/examples/lddmc.c index 0035420c1..52fdb5033 100755 --- a/resources/3rdparty/sylvan/examples/lddmc.c +++ b/resources/3rdparty/sylvan/examples/lddmc.c @@ -1,6 +1,6 @@ #include -#include #include +#include #include #include #include @@ -11,18 +11,19 @@ #endif #include -#include -#include -/* Configuration */ +#include + +/* Configuration (via argp) */ static int report_levels = 0; // report states at start of every level static int report_table = 0; // report table size at end of every level -static int strategy = 1; // set to 1 = use PAR strategy; set to 0 = use BFS strategy -static int check_deadlocks = 0; // set to 1 to check for deadlocks -static int print_transition_matrix = 1; // print transition relation matrix +static int report_nodes = 0; // report number of nodes of LDDs +static int strategy = 2; // 0 = BFS, 1 = PAR, 2 = SAT, 3 = CHAINING +static int check_deadlocks = 0; // set to 1 to check for deadlocks on-the-fly +static int print_transition_matrix = 0; // print transition relation matrix static int workers = 0; // autodetect static char* model_filename = NULL; // filename of model -static char* out_filename = NULL; // filename of output BDD +static char* out_filename = NULL; // filename of output #ifdef HAVE_PROFILER static char* profile_filename = NULL; // filename for profiling #endif @@ -31,13 +32,15 @@ static char* profile_filename = NULL; // filename for profiling static struct argp_option options[] = { {"workers", 'w', "", 0, "Number of workers (default=0: autodetect)", 0}, - {"strategy", 's', "", 0, "Strategy for reachability (default=par)", 0}, + {"strategy", 's', "", 0, "Strategy for reachability (default=par)", 0}, #ifdef HAVE_PROFILER {"profiler", 'p', "", 0, "Filename for profiling", 0}, #endif {"deadlocks", 3, 0, 0, "Check for deadlocks", 1}, + {"count-nodes", 5, 0, 0, "Report #nodes for LDDs", 1}, {"count-states", 1, 0, 0, "Report #states at each level", 1}, {"count-table", 2, 0, 0, "Report table usage at each level", 1}, + {"print-matrix", 4, 0, 0, "Print transition matrix", 1}, {0, 0, 0, 0, 0, 0} }; @@ -52,8 +55,12 @@ parse_opt(int key, char *arg, struct argp_state *state) if (strcmp(arg, "bfs")==0) strategy = 0; else if (strcmp(arg, "par")==0) strategy = 1; else if (strcmp(arg, "sat")==0) strategy = 2; + else if (strcmp(arg, "chaining")==0) strategy = 3; else argp_usage(state); break; + case 4: + print_transition_matrix = 1; + break; case 3: check_deadlocks = 1; break; @@ -63,6 +70,9 @@ parse_opt(int key, char *arg, struct argp_state *state) case 2: report_table = 1; break; + case 5: + report_nodes = 1; + break; #ifdef HAVE_PROFILER case 'p': profile_filename = arg; @@ -84,119 +94,214 @@ parse_opt(int key, char *arg, struct argp_state *state) static struct argp argp = { options, parse_opt, " []", 0, 0, 0, 0 }; -/* Globals */ +/** + * Types (set and relation) + */ typedef struct set { - MDD mdd; - MDD proj; - int size; + MDD dd; } *set_t; typedef struct relation { - MDD mdd; - MDD meta; - int size; + MDD dd; + MDD meta; // for relprod + int r_k, w_k, *r_proj, *w_proj; + int firstvar; // for saturation/chaining + MDD topmeta; // for saturation } *rel_t; -static size_t vector_size; // size of vector +static int vector_size; // size of vector in integers static int next_count; // number of partitions of the transition relation static rel_t *next; // each partition of the transition relation -#define Abort(...) { fprintf(stderr, __VA_ARGS__); exit(-1); } +/** + * Obtain current wallclock time + */ +static double +wctime() +{ + struct timeval tv; + gettimeofday(&tv, NULL); + return (tv.tv_sec + 1E-6 * tv.tv_usec); +} + +static double t_start; +#define INFO(s, ...) fprintf(stdout, "[% 8.2f] " s, wctime()-t_start, ##__VA_ARGS__) +#define Abort(...) { fprintf(stderr, __VA_ARGS__); fprintf(stderr, "Abort at line %d!\n", __LINE__); exit(-1); } -/* Load a set from file */ +/** + * Load a set from file + */ static set_t set_load(FILE* f) { - lddmc_serialize_fromfile(f); - - size_t mdd; - size_t proj; - int size; - - if (fread(&mdd, sizeof(size_t), 1, f) != 1) Abort("Invalid input file!\n"); - if (fread(&proj, sizeof(size_t), 1, f) != 1) Abort("Invalid input file!\n"); - if (fread(&size, sizeof(int), 1, f) != 1) Abort("Invalid input file!\n"); + set_t set = (set_t)malloc(sizeof(struct set)); - LACE_ME; + /* read projection (actually we don't support projection) */ + int k; + if (fread(&k, sizeof(int), 1, f) != 1) Abort("Invalid input file!\n"); + if (k != -1) Abort("Invalid input file!\n"); // only support full vector - set_t set = (set_t)malloc(sizeof(struct set)); - set->mdd = lddmc_ref(lddmc_serialize_get_reversed(mdd)); - set->proj = lddmc_ref(lddmc_serialize_get_reversed(proj)); - set->size = size; + /* read dd */ + lddmc_serialize_fromfile(f); + size_t dd; + if (fread(&dd, sizeof(size_t), 1, f) != 1) Abort("Invalid input file!\n"); + set->dd = lddmc_serialize_get_reversed(dd); + lddmc_protect(&set->dd); return set; } -/* Save a set to file */ +/** + * Save a set to file + */ static void set_save(FILE* f, set_t set) { - size_t mdd = lddmc_serialize_add(set->mdd); - size_t proj = lddmc_serialize_add(set->proj); + int k = -1; + fwrite(&k, sizeof(int), 1, f); + size_t dd = lddmc_serialize_add(set->dd); lddmc_serialize_tofile(f); - fwrite(&mdd, sizeof(size_t), 1, f); - fwrite(&proj, sizeof(size_t), 1, f); - fwrite(&set->size, sizeof(int), 1, f);; + fwrite(&dd, sizeof(size_t), 1, f); +} + +/** + * Load a relation from file + */ +#define rel_load_proj(f) CALL(rel_load_proj, f) +TASK_1(rel_t, rel_load_proj, FILE*, f) +{ + int r_k, w_k; + if (fread(&r_k, sizeof(int), 1, f) != 1) Abort("Invalid file format."); + if (fread(&w_k, sizeof(int), 1, f) != 1) Abort("Invalid file format."); + + rel_t rel = (rel_t)malloc(sizeof(struct relation)); + rel->r_k = r_k; + rel->w_k = w_k; + rel->r_proj = (int*)malloc(sizeof(int[rel->r_k])); + rel->w_proj = (int*)malloc(sizeof(int[rel->w_k])); + + if (fread(rel->r_proj, sizeof(int), rel->r_k, f) != (size_t)rel->r_k) Abort("Invalid file format."); + if (fread(rel->w_proj, sizeof(int), rel->w_k, f) != (size_t)rel->w_k) Abort("Invalid file format."); + + int *r_proj = rel->r_proj; + int *w_proj = rel->w_proj; + + rel->firstvar = -1; + + /* Compute the meta */ + uint32_t meta[vector_size*2+2]; + memset(meta, 0, sizeof(uint32_t[vector_size*2+2])); + int r_i=0, w_i=0, i=0, j=0; + for (;;) { + int type = 0; + if (r_i < r_k && r_proj[r_i] == i) { + r_i++; + type += 1; // read + } + if (w_i < w_k && w_proj[w_i] == i) { + w_i++; + type += 2; // write + } + if (type == 0) meta[j++] = 0; + else if (type == 1) { meta[j++] = 3; } + else if (type == 2) { meta[j++] = 4; } + else if (type == 3) { meta[j++] = 1; meta[j++] = 2; } + if (type != 0 && rel->firstvar == -1) rel->firstvar = i; + if (r_i == r_k && w_i == w_k) { + meta[j++] = 5; // action label + meta[j++] = (uint32_t)-1; + break; + } + i++; + } + + rel->meta = lddmc_cube((uint32_t*)meta, j); + lddmc_protect(&rel->meta); + if (rel->firstvar != -1) { + rel->topmeta = lddmc_cube((uint32_t*)meta+rel->firstvar, j-rel->firstvar); + lddmc_protect(&rel->topmeta); + } + rel->dd = lddmc_false; + lddmc_protect(&rel->dd); + + return rel; +} + +#define rel_load(f, rel) CALL(rel_load, f, rel) +VOID_TASK_2(rel_load, FILE*, f, rel_t, rel) +{ + lddmc_serialize_fromfile(f); + size_t dd; + if (fread(&dd, sizeof(size_t), 1, f) != 1) Abort("Invalid input file!"); + rel->dd = lddmc_serialize_get_reversed(dd); +} + +/** + * Save a relation to file + */ +static void +rel_save_proj(FILE* f, rel_t rel) +{ + fwrite(&rel->r_k, sizeof(int), 1, f); + fwrite(&rel->w_k, sizeof(int), 1, f); + fwrite(rel->r_proj, sizeof(int), rel->r_k, f); + fwrite(rel->w_proj, sizeof(int), rel->w_k, f); } static void rel_save(FILE* f, rel_t rel) { - size_t mdd = lddmc_serialize_add(rel->mdd); - size_t meta = lddmc_serialize_add(rel->meta); + size_t dd = lddmc_serialize_add(rel->dd); lddmc_serialize_tofile(f); - fwrite(&mdd, sizeof(size_t), 1, f); - fwrite(&meta, sizeof(size_t), 1, f); + fwrite(&dd, sizeof(size_t), 1, f); } +/** + * Clone a set + */ static set_t set_clone(set_t source) { set_t set = (set_t)malloc(sizeof(struct set)); - set->mdd = lddmc_ref(source->mdd); - set->proj = lddmc_ref(source->proj); - set->size = source->size; + set->dd = source->dd; + lddmc_protect(&set->dd); return set; } -static int -calculate_size(MDD meta) +static char* +to_h(double size, char *buf) { - int result = 0; - uint32_t val = lddmc_getvalue(meta); - while (val != (uint32_t)-1) { - if (val != 0) result += 1; - meta = lddmc_follow(meta, val); - assert(meta != lddmc_true && meta != lddmc_false); - val = lddmc_getvalue(meta); - } - return result; + const char* units[] = {"B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"}; + int i = 0; + for (;size>1024;size/=1024) i++; + sprintf(buf, "%.*f %s", i, size, units[i]); + return buf; } -/* Load a relation from file */ -static rel_t -rel_load(FILE* f) +static void +print_memory_usage(void) { - lddmc_serialize_fromfile(f); - - size_t mdd; - size_t meta; - - if (fread(&mdd, sizeof(size_t), 1, f) != 1) Abort("Invalid input file!\n"); - if (fread(&meta, sizeof(size_t), 1, f) != 1) Abort("Invalid input file!\n"); - - LACE_ME; - - rel_t rel = (rel_t)malloc(sizeof(struct relation)); - rel->mdd = lddmc_ref(lddmc_serialize_get_reversed(mdd)); - rel->meta = lddmc_ref(lddmc_serialize_get_reversed(meta)); - rel->size = calculate_size(rel->meta); + char buf[32]; + to_h(getCurrentRSS(), buf); + INFO("Memory usage: %s\n", buf); +} - return rel; +/** + * Get the first variable of the transition relation + */ +static int +get_first(MDD meta) +{ + uint32_t val = lddmc_getvalue(meta); + if (val != 0) return 0; + return 1+get_first(lddmc_follow(meta, val)); } +/** + * Print a single example of a set to stdout + */ static void print_example(MDD example) { @@ -205,9 +310,8 @@ print_example(MDD example) uint32_t vec[vector_size]; lddmc_sat_one(example, vec, vector_size); - size_t i; printf("["); - for (i=0; i0) printf(","); printf("%" PRIu32, vec[i]); } @@ -232,154 +336,176 @@ print_matrix(size_t size, MDD meta) } } -static char* -to_h(double size, char *buf) -{ - const char* units[] = {"B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"}; - int i = 0; - for (;size>1024;size/=1024) i++; - sprintf(buf, "%.*f %s", i, size, units[i]); - return buf; -} - -static int -get_first(MDD meta) -{ - uint32_t val = lddmc_getvalue(meta); - if (val != 0) return 0; - return 1+get_first(lddmc_follow(meta, val)); -} - -/* Straight-forward implementation of parallel reduction */ +/** + * Implement parallel strategy (that performs the relprod operations in parallel) + */ TASK_5(MDD, go_par, MDD, cur, MDD, visited, size_t, from, size_t, len, MDD*, deadlocks) { if (len == 1) { // Calculate NEW successors (not in visited) - MDD succ = lddmc_ref(lddmc_relprod(cur, next[from]->mdd, next[from]->meta)); + MDD succ = lddmc_relprod(cur, next[from]->dd, next[from]->meta); + lddmc_refs_push(succ); if (deadlocks) { // check which MDDs in deadlocks do not have a successor in this relation - MDD anc = lddmc_ref(lddmc_relprev(succ, next[from]->mdd, next[from]->meta, cur)); - *deadlocks = lddmc_ref(lddmc_minus(*deadlocks, anc)); - lddmc_deref(anc); + MDD anc = lddmc_relprev(succ, next[from]->dd, next[from]->meta, cur); + lddmc_refs_push(anc); + *deadlocks = lddmc_minus(*deadlocks, anc); + lddmc_refs_pop(1); } - MDD result = lddmc_ref(lddmc_minus(succ, visited)); - lddmc_deref(succ); + MDD result = lddmc_minus(succ, visited); + lddmc_refs_pop(1); return result; - } else { - MDD deadlocks_left; - MDD deadlocks_right; - if (deadlocks) { - deadlocks_left = *deadlocks; - deadlocks_right = *deadlocks; - } - - // Recursively calculate left+right - SPAWN(go_par, cur, visited, from, (len+1)/2, deadlocks ? &deadlocks_left: NULL); - MDD right = CALL(go_par, cur, visited, from+(len+1)/2, len/2, deadlocks ? &deadlocks_right : NULL); - MDD left = SYNC(go_par); + } else if (deadlocks != NULL) { + MDD deadlocks_left = *deadlocks; + MDD deadlocks_right = *deadlocks; + lddmc_refs_pushptr(&deadlocks_left); + lddmc_refs_pushptr(&deadlocks_right); + + // Recursively compute left+right + lddmc_refs_spawn(SPAWN(go_par, cur, visited, from, len/2, &deadlocks_left)); + MDD right = CALL(go_par, cur, visited, from+len/2, len-len/2, &deadlocks_right); + lddmc_refs_push(right); + MDD left = lddmc_refs_sync(SYNC(go_par)); + lddmc_refs_push(left); // Merge results of left+right - MDD result = lddmc_ref(lddmc_union(left, right)); - lddmc_deref(left); - lddmc_deref(right); + MDD result = lddmc_union(left, right); + lddmc_refs_pop(2); - if (deadlocks) { - *deadlocks = lddmc_ref(lddmc_intersect(deadlocks_left, deadlocks_right)); - lddmc_deref(deadlocks_left); - lddmc_deref(deadlocks_right); - } + // Intersect deadlock sets + lddmc_refs_push(result); + *deadlocks = lddmc_intersect(deadlocks_left, deadlocks_right); + lddmc_refs_pop(1); + lddmc_refs_popptr(2); + + // Return result + return result; + } else { + // Recursively compute left+right + lddmc_refs_spawn(SPAWN(go_par, cur, visited, from, len/2, NULL)); + MDD right = CALL(go_par, cur, visited, from+len/2, len-len/2, NULL); + lddmc_refs_push(right); + MDD left = lddmc_refs_sync(SYNC(go_par)); + lddmc_refs_push(left); + // Merge results of left+right + MDD result = lddmc_union(left, right); + lddmc_refs_pop(2); + + // Return result return result; } } -/* PAR strategy, parallel strategy (operations called in parallel *and* parallelized by Sylvan) */ +/** + * Implementation of the PAR strategy + */ VOID_TASK_1(par, set_t, set) { - MDD visited = set->mdd; - MDD new = lddmc_ref(visited); - size_t counter = 1; - do { - char buf[32]; - to_h(getCurrentRSS(), buf); - printf("Memory usage: %s\n", buf); - printf("Level %zu... ", counter++); - if (report_levels) { - printf("%zu states... ", (size_t)lddmc_satcount_cached(visited)); - } - fflush(stdout); - - // calculate successors in parallel - MDD cur = new; - MDD deadlocks = cur; - new = CALL(go_par, cur, visited, 0, next_count, check_deadlocks ? &deadlocks : NULL); - lddmc_deref(cur); + /* Prepare variables */ + MDD visited = set->dd; + MDD front = visited; + lddmc_refs_pushptr(&visited); + lddmc_refs_pushptr(&front); + int iteration = 1; + do { if (check_deadlocks) { - printf("found %zu deadlock states... ", (size_t)lddmc_satcount_cached(deadlocks)); + // compute successors in parallel + MDD deadlocks = front; + lddmc_refs_pushptr(&deadlocks); + front = CALL(go_par, front, visited, 0, next_count, &deadlocks); + lddmc_refs_popptr(1); + if (deadlocks != lddmc_false) { + INFO("Found %'0.0f deadlock states... ", lddmc_satcount_cached(deadlocks)); printf("example: "); print_example(deadlocks); - printf("... "); + printf("\n"); check_deadlocks = 0; } + } else { + // compute successors in parallel + front = CALL(go_par, front, visited, 0, next_count, NULL); } - // visited = visited + new - MDD old_visited = visited; - visited = lddmc_ref(lddmc_union(visited, new)); - lddmc_deref(old_visited); + // visited = visited + front + visited = lddmc_union(visited, front); + INFO("Level %d done", iteration); + if (report_levels) { + printf(", %'0.0f states explored", lddmc_satcount_cached(visited)); + } if (report_table) { size_t filled, total; sylvan_table_usage(&filled, &total); - printf("done, table: %0.1f%% full (%zu nodes).\n", 100.0*(double)filled/total, filled); - } else { - printf("done.\n"); + printf(", table: %0.1f%% full (%'zu nodes)", 100.0*(double)filled/total, filled); } - } while (new != lddmc_false); - lddmc_deref(new); - set->mdd = visited; + char buf[32]; + to_h(getCurrentRSS(), buf); + printf(", rss=%s.\n", buf); + iteration++; + } while (front != lddmc_false); + + set->dd = visited; + lddmc_refs_popptr(2); } -/* Sequential version of merge-reduction */ +/** + * Implement sequential strategy (that performs the relprod operations one by one) + */ TASK_5(MDD, go_bfs, MDD, cur, MDD, visited, size_t, from, size_t, len, MDD*, deadlocks) { if (len == 1) { // Calculate NEW successors (not in visited) - MDD succ = lddmc_ref(lddmc_relprod(cur, next[from]->mdd, next[from]->meta)); + MDD succ = lddmc_relprod(cur, next[from]->dd, next[from]->meta); + lddmc_refs_push(succ); if (deadlocks) { // check which MDDs in deadlocks do not have a successor in this relation - MDD anc = lddmc_ref(lddmc_relprev(succ, next[from]->mdd, next[from]->meta, cur)); - *deadlocks = lddmc_ref(lddmc_minus(*deadlocks, anc)); - lddmc_deref(anc); + MDD anc = lddmc_relprev(succ, next[from]->dd, next[from]->meta, cur); + lddmc_refs_push(anc); + *deadlocks = lddmc_minus(*deadlocks, anc); + lddmc_refs_pop(1); } - MDD result = lddmc_ref(lddmc_minus(succ, visited)); - lddmc_deref(succ); + MDD result = lddmc_minus(succ, visited); + lddmc_refs_pop(1); return result; - } else { - MDD deadlocks_left; - MDD deadlocks_right; - if (deadlocks) { - deadlocks_left = *deadlocks; - deadlocks_right = *deadlocks; - } - - // Recursively calculate left+right - MDD left = CALL(go_bfs, cur, visited, from, (len+1)/2, deadlocks ? &deadlocks_left : NULL); - MDD right = CALL(go_bfs, cur, visited, from+(len+1)/2, len/2, deadlocks ? &deadlocks_right : NULL); + } else if (deadlocks != NULL) { + MDD deadlocks_left = *deadlocks; + MDD deadlocks_right = *deadlocks; + lddmc_refs_pushptr(&deadlocks_left); + lddmc_refs_pushptr(&deadlocks_right); + + // Recursively compute left+right + MDD left = CALL(go_par, cur, visited, from, len/2, &deadlocks_left); + lddmc_refs_push(left); + MDD right = CALL(go_par, cur, visited, from+len/2, len-len/2, &deadlocks_right); + lddmc_refs_push(right); // Merge results of left+right - MDD result = lddmc_ref(lddmc_union(left, right)); - lddmc_deref(left); - lddmc_deref(right); + MDD result = lddmc_union(left, right); + lddmc_refs_pop(2); - if (deadlocks) { - *deadlocks = lddmc_ref(lddmc_intersect(deadlocks_left, deadlocks_right)); - lddmc_deref(deadlocks_left); - lddmc_deref(deadlocks_right); - } + // Intersect deadlock sets + lddmc_refs_push(result); + *deadlocks = lddmc_intersect(deadlocks_left, deadlocks_right); + lddmc_refs_pop(1); + lddmc_refs_popptr(2); + // Return result + return result; + } else { + // Recursively compute left+right + MDD left = CALL(go_par, cur, visited, from, len/2, NULL); + lddmc_refs_push(left); + MDD right = CALL(go_par, cur, visited, from+len/2, len-len/2, NULL); + lddmc_refs_push(right); + + // Merge results of left+right + MDD result = lddmc_union(left, right); + lddmc_refs_pop(2); + + // Return result return result; } } @@ -387,160 +513,330 @@ TASK_5(MDD, go_bfs, MDD, cur, MDD, visited, size_t, from, size_t, len, MDD*, dea /* BFS strategy, sequential strategy (but operations are parallelized by Sylvan) */ VOID_TASK_1(bfs, set_t, set) { - MDD visited = set->mdd; - MDD new = lddmc_ref(visited); - size_t counter = 1; - do { - char buf[32]; - to_h(getCurrentRSS(), buf); - printf("Memory usage: %s\n", buf); - printf("Level %zu... ", counter++); - if (report_levels) { - printf("%zu states... ", (size_t)lddmc_satcount_cached(visited)); - } - fflush(stdout); - - MDD cur = new; - MDD deadlocks = cur; - new = CALL(go_bfs, cur, visited, 0, next_count, check_deadlocks ? &deadlocks : NULL); - lddmc_deref(cur); + /* Prepare variables */ + MDD visited = set->dd; + MDD front = visited; + lddmc_refs_pushptr(&visited); + lddmc_refs_pushptr(&front); + int iteration = 1; + do { if (check_deadlocks) { - printf("found %zu deadlock states... ", (size_t)lddmc_satcount_cached(deadlocks)); + // compute successors + MDD deadlocks = front; + lddmc_refs_pushptr(&deadlocks); + front = CALL(go_bfs, front, visited, 0, next_count, &deadlocks); + lddmc_refs_popptr(1); + if (deadlocks != lddmc_false) { + INFO("Found %'0.0f deadlock states... ", lddmc_satcount_cached(deadlocks)); printf("example: "); print_example(deadlocks); - printf("... "); + printf("\n"); check_deadlocks = 0; } + } else { + // compute successors + front = CALL(go_bfs, front, visited, 0, next_count, NULL); } - // visited = visited + new - MDD old_visited = visited; - visited = lddmc_ref(lddmc_union(visited, new)); - lddmc_deref(old_visited); + // visited = visited + front + visited = lddmc_union(visited, front); + INFO("Level %d done", iteration); + if (report_levels) { + printf(", %'0.0f states explored", lddmc_satcount_cached(visited)); + } if (report_table) { size_t filled, total; sylvan_table_usage(&filled, &total); - printf("done, table: %0.1f%% full (%zu nodes).\n", 100.0*(double)filled/total, filled); - } else { - printf("done.\n"); + printf(", table: %0.1f%% full (%'zu nodes)", 100.0*(double)filled/total, filled); } - } while (new != lddmc_false); - lddmc_deref(new); - set->mdd = visited; + char buf[32]; + to_h(getCurrentRSS(), buf); + printf(", rss=%s.\n", buf); + iteration++; + } while (front != lddmc_false); + + set->dd = visited; + lddmc_refs_popptr(2); } -/* Obtain current wallclock time */ -static double -wctime() +/** + * Implementation of (parallel) saturation + * (assumes relations are ordered on first variable) + */ +TASK_3(MDD, go_sat, MDD, set, int, idx, int, depth) { - struct timeval tv; - gettimeofday(&tv, NULL); - return (tv.tv_sec + 1E-6 * tv.tv_usec); + /* Terminal cases */ + if (set == lddmc_false) return lddmc_false; + if (idx == next_count) return set; + + /* Consult the cache */ + MDD result; + const MDD _set = set; + if (cache_get3(201LL<<40, _set, idx, 0, &result)) return result; + lddmc_refs_pushptr(&_set); + + /** + * Possible improvement: cache more things (like intermediate results?) + * and chain-apply more of the current level before going deeper? + */ + + /* Check if the relation should be applied */ + const int var = next[idx]->firstvar; + assert(depth <= var); + if (depth == var) { + /* Count the number of relations starting here */ + int n = 1; + while ((idx + n) < next_count && var == next[idx + n]->firstvar) n++; + /* + * Compute until fixpoint: + * - SAT deeper + * - chain-apply all current level once + */ + MDD prev = lddmc_false; + lddmc_refs_pushptr(&set); + lddmc_refs_pushptr(&prev); + while (prev != set) { + prev = set; + // SAT deeper + set = CALL(go_sat, set, idx + n, depth); + // chain-apply all current level once + for (int i=0; idd, next[idx+i]->topmeta, set); + } + } + lddmc_refs_popptr(2); + result = set; + } else { + /* Recursive computation */ + lddmc_refs_spawn(SPAWN(go_sat, lddmc_getright(set), idx, depth)); + MDD down = lddmc_refs_push(CALL(go_sat, lddmc_getdown(set), idx, depth+1)); + MDD right = lddmc_refs_sync(SYNC(go_sat)); + lddmc_refs_pop(1); + result = lddmc_makenode(lddmc_getvalue(set), down, right); + } + + /* Store in cache */ + cache_put3(201LL<<40, _set, idx, 0, result); + lddmc_refs_popptr(1); + return result; +} + +/** + * Wrapper for the Saturation strategy + */ +VOID_TASK_1(sat, set_t, set) +{ + set->dd = CALL(go_sat, set->dd, 0, 0); +} + +/** + * Implementation of the Chaining strategy (does not support deadlock detection) + */ +VOID_TASK_1(chaining, set_t, set) +{ + MDD visited = set->dd; + MDD front = visited; + MDD succ = sylvan_false; + + lddmc_refs_pushptr(&visited); + lddmc_refs_pushptr(&front); + lddmc_refs_pushptr(&succ); + + int iteration = 1; + do { + // calculate successors in parallel + for (int i=0; idd, next[i]->meta); + front = lddmc_union(front, succ); + succ = lddmc_false; // reset, for gc + } + + // front = front - visited + // visited = visited + front + front = lddmc_minus(front, visited); + visited = lddmc_union(visited, front); + + INFO("Level %d done", iteration); + if (report_levels) { + printf(", %'0.0f states explored", lddmc_satcount_cached(visited)); + } + if (report_table) { + size_t filled, total; + sylvan_table_usage(&filled, &total); + printf(", table: %0.1f%% full (%'zu nodes)", 100.0*(double)filled/total, filled); + } + char buf[32]; + to_h(getCurrentRSS(), buf); + printf(", rss=%s.\n", buf); + iteration++; + } while (front != lddmc_false); + + set->dd = visited; + lddmc_refs_popptr(3); +} + +VOID_TASK_0(gc_start) +{ + char buf[32]; + to_h(getCurrentRSS(), buf); + INFO("(GC) Starting garbage collection... (rss: %s)\n", buf); +} + +VOID_TASK_0(gc_end) +{ + char buf[32]; + to_h(getCurrentRSS(), buf); + INFO("(GC) Garbage collection done. (rss: %s)\n", buf); } int main(int argc, char **argv) { + /** + * Parse command line, set locale, set startup time for INFO messages. + */ argp_parse(&argp, argc, argv, 0, 0, 0); + setlocale(LC_NUMERIC, "en_US.utf-8"); + t_start = wctime(); + + /** + * Initialize Lace. + * + * First: setup with given number of workers (0 for autodetect) and some large size task queue. + * Second: start all worker threads with default settings. + * Third: setup local variables using the LACE_ME macro. + */ + lace_init(workers, 1000000); + lace_startup(0, NULL, NULL); + LACE_ME; + + /** + * Initialize Sylvan. + * + * First: set memory limits + * - 2 GB memory, nodes table twice as big as cache, initial size halved 6x + * (that means it takes 6 garbage collections to get to the maximum nodes&cache size) + * Second: initialize package and subpackages + * Third: add hooks to report garbage collection + */ + sylvan_set_limits(2LL<<30, 1, 6); + sylvan_init_package(); + sylvan_init_ldd(); + sylvan_gc_hook_pregc(TASK(gc_start)); + sylvan_gc_hook_postgc(TASK(gc_end)); + + /** + * Read the model from file + */ FILE *f = fopen(model_filename, "r"); if (f == NULL) { - fprintf(stderr, "Cannot open file '%s'!\n", model_filename); + Abort("Cannot open file '%s'!\n", model_filename); return -1; } - // Init Lace - lace_init(workers, 1000000); // auto-detect number of workers, use a 1,000,000 size task queue - lace_startup(0, NULL, NULL); // auto-detect program stack, do not use a callback for startup - - // Init Sylvan LDDmc - // Nodes table size: 24 bytes * 2**N_nodes - // Cache table size: 36 bytes * 2**N_cache - // With: N_nodes=25, N_cache=24: 1.3 GB memory - sylvan_set_sizes(1LL<<21, 1LL<<27, 1LL<<20, 1LL<<26); - sylvan_init_package(); - sylvan_init_ldd(); - sylvan_init_mtbdd(); - - // Read and report domain info (integers per vector and bits per integer) - if (fread(&vector_size, sizeof(size_t), 1, f) != 1) Abort("Invalid input file!\n"); - - printf("Vector size: %zu\n", vector_size); + /* Read domain data */ + if (fread(&vector_size, sizeof(int), 1, f) != 1) Abort("Invalid input file!\n"); - // Read initial state - printf("Loading initial state... "); - fflush(stdout); + /* Read initial state */ set_t initial = set_load(f); - set_t states = set_clone(initial); - printf("done.\n"); - // Read transitions + /* Read number of transition relations */ if (fread(&next_count, sizeof(int), 1, f) != 1) Abort("Invalid input file!\n"); next = (rel_t*)malloc(sizeof(rel_t) * next_count); - printf("Loading transition relations... "); - fflush(stdout); - int i; - for (i=0; imdd)); - for (i=0; imdd)); + + /** + * Pre-processing and some statistics reporting + */ + + if (strategy == 2 || strategy == 3) { + // for SAT and CHAINING, sort the transition relations (gnome sort because I like gnomes) + int i = 1, j = 2; + rel_t t; + while (i < next_count) { + rel_t *p = &next[i], *q = p-1; + if ((*q)->firstvar > (*p)->firstvar) { + t = *q; + *q = *p; + *p = t; + if (--i) continue; + } + i = j++; + } } + INFO("Read file '%s'\n", model_filename); + INFO("%d integers per state, %d transition groups\n", vector_size, next_count); + if (print_transition_matrix) { - for (i=0; imeta); printf(" (%d)\n", get_first(next[i]->meta)); } } - LACE_ME; + set_t states = set_clone(initial); #ifdef HAVE_PROFILER if (profile_filename != NULL) ProfilerStart(profile_filename); #endif - if (strategy == 1) { + + if (strategy == 0) { + double t1 = wctime(); + CALL(bfs, states); + double t2 = wctime(); + INFO("BFS Time: %f\n", t2-t1); + } else if (strategy == 1) { double t1 = wctime(); CALL(par, states); double t2 = wctime(); - printf("PAR Time: %f\n", t2-t1); - } else { + INFO("PAR Time: %f\n", t2-t1); + } else if (strategy == 2) { double t1 = wctime(); - CALL(bfs, states); + CALL(sat, states); double t2 = wctime(); - printf("BFS Time: %f\n", t2-t1); + INFO("SAT Time: %f\n", t2-t1); + } else if (strategy == 3) { + double t1 = wctime(); + CALL(chaining, states); + double t2 = wctime(); + INFO("CHAINING Time: %f\n", t2-t1); + } else { + Abort("Invalid strategy set?!\n"); } + #ifdef HAVE_PROFILER if (profile_filename != NULL) ProfilerStop(); #endif // Now we just have states - printf("Final states: %zu states\n", (size_t)lddmc_satcount_cached(states->mdd)); - printf("Final states: %zu MDD nodes\n", lddmc_nodecount(states->mdd)); + INFO("Final states: %'0.0f states\n", lddmc_satcount_cached(states->dd)); + if (report_nodes) { + INFO("Final states: %'zu MDD nodes\n", lddmc_nodecount(states->dd)); + } if (out_filename != NULL) { - printf("Writing to %s.\n", out_filename); + INFO("Writing to %s.\n", out_filename); // Create LDD file FILE *f = fopen(out_filename, "w"); lddmc_serialize_reset(); // Write domain... - fwrite(&vector_size, sizeof(size_t), 1, f); + fwrite(&vector_size, sizeof(int), 1, f); // Write initial state... set_save(f, initial); @@ -549,9 +845,8 @@ main(int argc, char **argv) fwrite(&next_count, sizeof(int), 1, f); // Write transitions - for (int i=0; i #endif +#include + #include -#include +#include -/* Configuration */ +/* Configuration (via argp) */ static int report_levels = 0; // report states at end of every level static int report_table = 0; // report table size at end of every level static int report_nodes = 0; // report number of nodes of BDDs -static int strategy = 1; // set to 1 = use PAR strategy; set to 0 = use BFS strategy -static int check_deadlocks = 0; // set to 1 to check for deadlocks +static int strategy = 2; // 0 = BFS, 1 = PAR, 2 = SAT, 3 = CHAINING +static int check_deadlocks = 0; // set to 1 to check for deadlocks on-the-fly (only bfs/par) static int merge_relations = 0; // merge relations to 1 relation static int print_transition_matrix = 0; // print transition relation matrix static int workers = 0; // autodetect @@ -31,7 +33,7 @@ static char* profile_filename = NULL; // filename for profiling static struct argp_option options[] = { {"workers", 'w', "", 0, "Number of workers (default=0: autodetect)", 0}, - {"strategy", 's', "", 0, "Strategy for reachability (default=par)", 0}, + {"strategy", 's', "", 0, "Strategy for reachability (default=sat)", 0}, #ifdef HAVE_PROFILER {"profiler", 'p', "", 0, "Filename for profiling", 0}, #endif @@ -54,6 +56,7 @@ parse_opt(int key, char *arg, struct argp_state *state) if (strcmp(arg, "bfs")==0) strategy = 0; else if (strcmp(arg, "par")==0) strategy = 1; else if (strcmp(arg, "sat")==0) strategy = 2; + else if (strcmp(arg, "chaining")==0) strategy = 3; else argp_usage(state); break; case 4: @@ -93,7 +96,9 @@ parse_opt(int key, char *arg, struct argp_state *state) } static struct argp argp = { options, parse_opt, "", 0, 0, 0, 0 }; -/* Globals */ +/** + * Types (set and relation) + */ typedef struct set { BDD bdd; @@ -104,15 +109,19 @@ typedef struct relation { BDD bdd; BDD variables; // all variables in the relation (used by relprod) + int r_k, w_k, *r_proj, *w_proj; } *rel_t; -static int vector_size; // size of vector -static int statebits, actionbits; // number of bits for state, number of bits for action -static int bits_per_integer; // number of bits per integer in the vector +static int vectorsize; // size of vector in integers +static int *statebits; // number of bits for each state integer +static int actionbits; // number of bits for action label +static int totalbits; // total number of bits static int next_count; // number of partitions of the transition relation static rel_t *next; // each partition of the transition relation -/* Obtain current wallclock time */ +/** + * Obtain current wallclock time + */ static double wctime() { @@ -123,66 +132,171 @@ wctime() static double t_start; #define INFO(s, ...) fprintf(stdout, "[% 8.2f] " s, wctime()-t_start, ##__VA_ARGS__) -#define Abort(...) { fprintf(stderr, __VA_ARGS__); exit(-1); } +#define Abort(...) { fprintf(stderr, __VA_ARGS__); fprintf(stderr, "Abort at line %d!\n", __LINE__); exit(-1); } -/* Load a set from file */ -#define set_load(f) CALL(set_load, f) -TASK_1(set_t, set_load, FILE*, f) +static char* +to_h(double size, char *buf) { - sylvan_serialize_fromfile(f); + const char* units[] = {"B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"}; + int i = 0; + for (;size>1024;size/=1024) i++; + sprintf(buf, "%.*f %s", i, size, units[i]); + return buf; +} - size_t set_bdd, set_vector_size, set_state_vars; - if ((fread(&set_bdd, sizeof(size_t), 1, f) != 1) || - (fread(&set_vector_size, sizeof(size_t), 1, f) != 1) || - (fread(&set_state_vars, sizeof(size_t), 1, f) != 1)) { - Abort("Invalid input file!\n"); - } +static void +print_memory_usage(void) +{ + char buf[32]; + to_h(getCurrentRSS(), buf); + INFO("Memory usage: %s\n", buf); +} +/** + * Load a set from file + * The expected binary format: + * - int k : projection size, or -1 for full state + * - int[k] proj : k integers specifying the variables of the projection + * - MTBDD[1] BDD (mtbdd binary format) + */ +#define set_load(f) CALL(set_load, f) +TASK_1(set_t, set_load, FILE*, f) +{ + // allocate set set_t set = (set_t)malloc(sizeof(struct set)); - set->bdd = sylvan_serialize_get_reversed(set_bdd); - set->variables = sylvan_support(sylvan_serialize_get_reversed(set_state_vars)); - + set->bdd = sylvan_false; + set->variables = sylvan_true; sylvan_protect(&set->bdd); sylvan_protect(&set->variables); + // read k + int k; + if (fread(&k, sizeof(int), 1, f) != 1) Abort("Invalid input file!\n"); + + if (k == -1) { + // create variables for a full state vector + uint32_t vars[totalbits]; + for (int i=0; ivariables = sylvan_set_fromarray(vars, totalbits); + } else { + // read proj + int proj[k]; + if (fread(proj, sizeof(int), k, f) != (size_t)k) Abort("Invalid input file!\n"); + // create variables for a short/projected state vector + uint32_t vars[totalbits]; + uint32_t cv = 0; + int j = 0, n = 0; + for (int i=0; ivariables = sylvan_set_fromarray(vars, n); + } + + // read bdd + if (mtbdd_reader_frombinary(f, &set->bdd, 1) != 0) Abort("Invalid input file!\n"); + return set; } -/* Load a relation from file */ -#define rel_load(f) CALL(rel_load, f) -TASK_1(rel_t, rel_load, FILE*, f) +/** + * Load a relation from file + * This part just reads the r_k, w_k, r_proj and w_proj variables. + */ +#define rel_load_proj(f) CALL(rel_load_proj, f) +TASK_1(rel_t, rel_load_proj, FILE*, f) { - sylvan_serialize_fromfile(f); - - size_t rel_bdd, rel_vars; - if ((fread(&rel_bdd, sizeof(size_t), 1, f) != 1) || - (fread(&rel_vars, sizeof(size_t), 1, f) != 1)) { - Abort("Invalid input file!\n"); - } - rel_t rel = (rel_t)malloc(sizeof(struct relation)); - rel->bdd = sylvan_serialize_get_reversed(rel_bdd); - rel->variables = sylvan_support(sylvan_serialize_get_reversed(rel_vars)); - + int r_k, w_k; + if (fread(&r_k, sizeof(int), 1, f) != 1) Abort("Invalid file format."); + if (fread(&w_k, sizeof(int), 1, f) != 1) Abort("Invalid file format."); + rel->r_k = r_k; + rel->w_k = w_k; + int *r_proj = (int*)malloc(sizeof(int[r_k])); + int *w_proj = (int*)malloc(sizeof(int[w_k])); + if (fread(r_proj, sizeof(int), r_k, f) != (size_t)r_k) Abort("Invalid file format."); + if (fread(w_proj, sizeof(int), w_k, f) != (size_t)w_k) Abort("Invalid file format."); + rel->r_proj = r_proj; + rel->w_proj = w_proj; + + rel->bdd = sylvan_false; sylvan_protect(&rel->bdd); + + /* Compute a_proj the union of r_proj and w_proj, and a_k the length of a_proj */ + int a_proj[r_k+w_k]; + int r_i = 0, w_i = 0, a_i = 0; + for (;r_i < r_k || w_i < w_k;) { + if (r_i < r_k && w_i < w_k) { + if (r_proj[r_i] < w_proj[w_i]) { + a_proj[a_i++] = r_proj[r_i++]; + } else if (r_proj[r_i] > w_proj[w_i]) { + a_proj[a_i++] = w_proj[w_i++]; + } else /* r_proj[r_i] == w_proj[w_i] */ { + a_proj[a_i++] = w_proj[w_i++]; + r_i++; + } + } else if (r_i < r_k) { + a_proj[a_i++] = r_proj[r_i++]; + } else if (w_i < w_k) { + a_proj[a_i++] = w_proj[w_i++]; + } + } + const int a_k = a_i; + + /* Compute all_variables, which are all variables the transition relation is defined on */ + uint32_t all_vars[totalbits * 2]; + uint32_t curvar = 0; // start with variable 0 + int i=0, j=0, n=0; + for (; ivariables = sylvan_set_fromarray(all_vars, n); sylvan_protect(&rel->variables); return rel; } +/** + * Load a relation from file + * This part just reads the bdd of the relation + */ +#define rel_load(rel, f) CALL(rel_load, rel, f) +VOID_TASK_2(rel_load, rel_t, rel, FILE*, f) +{ + if (mtbdd_reader_frombinary(f, &rel->bdd, 1) != 0) Abort("Invalid file format!\n"); +} + +/** + * Print a single example of a set to stdout + * Assumption: the example is a full vector and variables contains all state variables... + */ #define print_example(example, variables) CALL(print_example, example, variables) VOID_TASK_2(print_example, BDD, example, BDDSET, variables) { - uint8_t str[vector_size * bits_per_integer]; + uint8_t str[totalbits]; if (example != sylvan_false) { sylvan_sat_one(example, variables, str); + int x=0; printf("["); - for (int i=0; i0) printf(","); printf("%" PRIu32, res); @@ -191,7 +305,84 @@ VOID_TASK_2(print_example, BDD, example, BDDSET, variables) } } -/* Straight-forward implementation of parallel reduction */ +/** + * Implementation of (parallel) saturation + * (assumes relations are ordered on first variable) + */ +TASK_2(BDD, go_sat, BDD, set, int, idx) +{ + /* Terminal cases */ + if (set == sylvan_false) return sylvan_false; + if (idx == next_count) return set; + + /* Consult the cache */ + BDD result; + const BDD _set = set; + if (cache_get3(200LL<<40, _set, idx, 0, &result)) return result; + mtbdd_refs_pushptr(&_set); + + /** + * Possible improvement: cache more things (like intermediate results?) + * and chain-apply more of the current level before going deeper? + */ + + /* Check if the relation should be applied */ + const uint32_t var = sylvan_var(next[idx]->variables); + if (set == sylvan_true || var <= sylvan_var(set)) { + /* Count the number of relations starting here */ + int count = idx+1; + while (count < next_count && var == sylvan_var(next[count]->variables)) count++; + count -= idx; + /* + * Compute until fixpoint: + * - SAT deeper + * - chain-apply all current level once + */ + BDD prev = sylvan_false; + BDD step = sylvan_false; + mtbdd_refs_pushptr(&set); + mtbdd_refs_pushptr(&prev); + mtbdd_refs_pushptr(&step); + while (prev != set) { + prev = set; + // SAT deeper + set = CALL(go_sat, set, idx+count); + // chain-apply all current level once + for (int i=0;ibdd, next[idx+i]->variables); + set = sylvan_or(set, step); + step = sylvan_false; // unset, for gc + } + } + mtbdd_refs_popptr(3); + result = set; + } else { + /* Recursive computation */ + mtbdd_refs_spawn(SPAWN(go_sat, sylvan_low(set), idx)); + BDD high = mtbdd_refs_push(CALL(go_sat, sylvan_high(set), idx)); + BDD low = mtbdd_refs_sync(SYNC(go_sat)); + mtbdd_refs_pop(1); + result = sylvan_makenode(sylvan_var(set), low, high); + } + + /* Store in cache */ + cache_put3(200LL<<40, _set, idx, 0, result); + mtbdd_refs_popptr(1); + return result; +} + +/** + * Wrapper for the Saturation strategy + */ +VOID_TASK_1(sat, set_t, set) +{ + set->bdd = CALL(go_sat, set->bdd, 0); +} + +/** + * Implement parallel strategy (that performs the relnext operations in parallel) + * This function does one level... + */ TASK_5(BDD, go_par, BDD, cur, BDD, visited, size_t, from, size_t, len, BDD*, deadlocks) { if (len == 1) { @@ -239,7 +430,9 @@ TASK_5(BDD, go_par, BDD, cur, BDD, visited, size_t, from, size_t, len, BDD*, dea } } -/* PAR strategy, parallel strategy (operations called in parallel *and* parallelized by Sylvan) */ +/** + * Implementation of the PAR strategy + */ VOID_TASK_1(par, set_t, set) { BDD visited = set->bdd; @@ -301,7 +494,10 @@ VOID_TASK_1(par, set_t, set) sylvan_unprotect(&deadlocks); } -/* Sequential version of merge-reduction */ +/** + * Implement sequential strategy (that performs the relnext operations one by one) + * This function does one level... + */ TASK_5(BDD, go_bfs, BDD, cur, BDD, visited, size_t, from, size_t, len, BDD*, deadlocks) { if (len == 1) { @@ -350,7 +546,9 @@ TASK_5(BDD, go_bfs, BDD, cur, BDD, visited, size_t, from, size_t, len, BDD*, dea } } -/* BFS strategy, sequential strategy (but operations are parallelized by Sylvan) */ +/** + * Implementation of the BFS strategy + */ VOID_TASK_1(bfs, set_t, set) { BDD visited = set->bdd; @@ -412,26 +610,77 @@ VOID_TASK_1(bfs, set_t, set) sylvan_unprotect(&deadlocks); } +/** + * Implementation of the Chaining strategy (does not support deadlock detection) + */ +VOID_TASK_1(chaining, set_t, set) +{ + BDD visited = set->bdd; + BDD next_level = visited; + BDD succ = sylvan_false; + + bdd_refs_pushptr(&visited); + bdd_refs_pushptr(&next_level); + bdd_refs_pushptr(&succ); + + int iteration = 1; + do { + // calculate successors in parallel + for (int i=0; ibdd, next[i]->variables); + next_level = sylvan_or(next_level, succ); + succ = sylvan_false; // reset, for gc + } + + // new = new - visited + // visited = visited + new + next_level = sylvan_diff(next_level, visited); + visited = sylvan_or(visited, next_level); + + if (report_table && report_levels) { + size_t filled, total; + sylvan_table_usage(&filled, &total); + INFO("Level %d done, %'0.0f states explored, table: %0.1f%% full (%'zu nodes)\n", + iteration, sylvan_satcount(visited, set->variables), + 100.0*(double)filled/total, filled); + } else if (report_table) { + size_t filled, total; + sylvan_table_usage(&filled, &total); + INFO("Level %d done, table: %0.1f%% full (%'zu nodes)\n", + iteration, + 100.0*(double)filled/total, filled); + } else if (report_levels) { + INFO("Level %d done, %'0.0f states explored\n", iteration, sylvan_satcount(visited, set->variables)); + } else { + INFO("Level %d done\n", iteration); + } + iteration++; + } while (next_level != sylvan_false); + + set->bdd = visited; + bdd_refs_popptr(3); +} + /** * Extend a transition relation to a larger domain (using s=s') */ #define extend_relation(rel, vars) CALL(extend_relation, rel, vars) -TASK_2(BDD, extend_relation, BDD, relation, BDDSET, variables) +TASK_2(BDD, extend_relation, MTBDD, relation, MTBDD, variables) { /* first determine which state BDD variables are in rel */ - int has[statebits]; - for (int i=0; i= (unsigned)statebits) break; // action labels + uint32_t v = sylvan_set_first(s); + if (v/2 >= (unsigned)totalbits) break; // action labels has[v/2] = 1; s = sylvan_set_next(s); } /* create "s=s'" for all variables not in rel */ BDD eq = sylvan_true; - for (int i=statebits-1; i>=0; i--) { + for (int i=totalbits-1; i>=0; i--) { if (has[i]) continue; BDD low = sylvan_makenode(2*i+1, eq, sylvan_false); bdd_refs_push(low); @@ -463,148 +712,209 @@ TASK_2(BDD, big_union, int, first, int, count) return result; } +/** + * Print one row of the transition matrix (for vars) + */ static void -print_matrix(BDD vars) +print_matrix_row(rel_t rel) { - for (int i=0; i= next_s) break; - } - } else { - fprintf(stdout, "-"); - } + int r_i = 0, w_i = 0; + for (int i=0; ir_k && rel->r_proj[r_i] == i) { + s |= 1; + r_i++; + } + if (w_i < rel->w_k && rel->w_proj[w_i] == i) { + s |= 2; + w_i++; } + if (s == 0) fprintf(stdout, "-"); + else if (s == 1) fprintf(stdout, "r"); + else if (s == 2) fprintf(stdout, "w"); + else if (s == 3) fprintf(stdout, "+"); } } VOID_TASK_0(gc_start) { - INFO("(GC) Starting garbage collection...\n"); + char buf[32]; + to_h(getCurrentRSS(), buf); + INFO("(GC) Starting garbage collection... (rss: %s)\n", buf); } VOID_TASK_0(gc_end) { - INFO("(GC) Garbage collection done.\n"); + char buf[32]; + to_h(getCurrentRSS(), buf); + INFO("(GC) Garbage collection done. (rss: %s)\n", buf); } int main(int argc, char **argv) { + /** + * Parse command line, set locale, set startup time for INFO messages. + */ argp_parse(&argp, argc, argv, 0, 0, 0); setlocale(LC_NUMERIC, "en_US.utf-8"); t_start = wctime(); - FILE *f = fopen(model_filename, "r"); - if (f == NULL) { - fprintf(stderr, "Cannot open file '%s'!\n", model_filename); - return -1; - } - - // Init Lace - lace_init(workers, 1000000); // auto-detect number of workers, use a 1,000,000 size task queue - lace_startup(0, NULL, NULL); // auto-detect program stack, do not use a callback for startup - + /** + * Initialize Lace. + * + * First: setup with given number of workers (0 for autodetect) and some large size task queue. + * Second: start all worker threads with default settings. + * Third: setup local variables using the LACE_ME macro. + */ + lace_init(workers, 1000000); + lace_startup(0, NULL, NULL); LACE_ME; - // Init Sylvan - // Nodes table size: 24 bytes * 2**N_nodes - // Cache table size: 36 bytes * 2**N_cache - // With: N_nodes=25, N_cache=24: 1.3 GB memory - sylvan_set_sizes(1LL<<21, 1LL<<27, 1LL<<20, 1LL<<26); + /** + * Initialize Sylvan. + * + * First: set memory limits + * - 2 GB memory, nodes table twice as big as cache, initial size halved 6x + * (that means it takes 6 garbage collections to get to the maximum nodes&cache size) + * Second: initialize package and subpackages + * Third: add hooks to report garbage collection + */ + sylvan_set_limits(2LL<<30, 1, 6); sylvan_init_package(); - sylvan_set_granularity(6); // granularity 6 is decent default value - 1 means "use cache for every operation" sylvan_init_bdd(); sylvan_gc_hook_pregc(TASK(gc_start)); sylvan_gc_hook_postgc(TASK(gc_end)); - /* Load domain information */ - if ((fread(&vector_size, sizeof(int), 1, f) != 1) || - (fread(&statebits, sizeof(int), 1, f) != 1) || - (fread(&actionbits, sizeof(int), 1, f) != 1)) { - Abort("Invalid input file!\n"); - } + /** + * Read the model from file + */ - bits_per_integer = statebits; - statebits *= vector_size; + /* Open the file */ + FILE *f = fopen(model_filename, "r"); + if (f == NULL) Abort("Cannot open file '%s'!\n", model_filename); - // Read initial state + /* Read domain data */ + if (fread(&vectorsize, sizeof(int), 1, f) != 1) Abort("Invalid input file!\n"); + statebits = (int*)malloc(sizeof(int[vectorsize])); + if (fread(statebits, sizeof(int), vectorsize, f) != (size_t)vectorsize) Abort("Invalid input file!\n"); + if (fread(&actionbits, sizeof(int), 1, f) != 1) Abort("Invalid input file!\n"); + totalbits = 0; + for (int i=0; ivariables); - fprintf(stdout, "\n"); + /** + * Pre-processing and some statistics reporting + */ + + if (strategy == 2 || strategy == 3) { + // for SAT and CHAINING, sort the transition relations (gnome sort because I like gnomes) + int i = 1, j = 2; + rel_t t; + while (i < next_count) { + rel_t *p = &next[i], *q = p-1; + if (sylvan_var((*q)->variables) > sylvan_var((*p)->variables)) { + t = *q; + *q = *p; + *p = t; + if (--i) continue; + } + i = j++; } } - // Report statistics INFO("Read file '%s'\n", model_filename); - INFO("%d integers per state, %d bits per integer, %d transition groups\n", vector_size, bits_per_integer, next_count); + INFO("%d integers per state, %d bits per state, %d transition groups\n", vectorsize, totalbits, next_count); - if (merge_relations) { - BDD prime_variables = sylvan_set_empty(); - for (int i=statebits-1; i>=0; i--) { - bdd_refs_push(prime_variables); - prime_variables = sylvan_set_add(prime_variables, i*2+1); - bdd_refs_pop(1); + /* if requested, print the transition matrix */ + if (print_transition_matrix) { + for (int i=0; i=0; i--) { + newvars = sylvan_set_add(newvars, i*2+1); + newvars = sylvan_set_add(newvars, i*2); + } INFO("Extending transition relations to full domain.\n"); for (int i=0; ibdd = extend_relation(next[i]->bdd, next[i]->variables); - next[i]->variables = prime_variables; + next[i]->variables = newvars; } + bdd_refs_popptr(1); + INFO("Taking union of all transition relations.\n"); next[0]->bdd = big_union(0, next_count); + + for (int i=1; ibdd = sylvan_false; + next[i]->variables = sylvan_true; + } next_count = 1; } if (report_nodes) { INFO("BDD nodes:\n"); INFO("Initial states: %zu BDD nodes\n", sylvan_nodecount(states->bdd)); - for (i=0; ibdd)); } } + print_memory_usage(); + #ifdef HAVE_PROFILER if (profile_filename != NULL) ProfilerStart(profile_filename); #endif - if (strategy == 1) { + + if (strategy == 0) { + double t1 = wctime(); + CALL(bfs, states); + double t2 = wctime(); + INFO("BFS Time: %f\n", t2-t1); + } else if (strategy == 1) { double t1 = wctime(); CALL(par, states); double t2 = wctime(); INFO("PAR Time: %f\n", t2-t1); - } else { + } else if (strategy == 2) { double t1 = wctime(); - CALL(bfs, states); + CALL(sat, states); double t2 = wctime(); - INFO("BFS Time: %f\n", t2-t1); + INFO("SAT Time: %f\n", t2-t1); + } else if (strategy == 3) { + double t1 = wctime(); + CALL(chaining, states); + double t2 = wctime(); + INFO("CHAINING Time: %f\n", t2-t1); + } else { + Abort("Invalid strategy set?!\n"); } + #ifdef HAVE_PROFILER if (profile_filename != NULL) ProfilerStop(); #endif @@ -615,6 +925,8 @@ main(int argc, char **argv) INFO("Final states: %'zu BDD nodes\n", sylvan_nodecount(states->bdd)); } + print_memory_usage(); + sylvan_stats_report(stdout); return 0; diff --git a/resources/3rdparty/sylvan/models/anderson.4.bdd b/resources/3rdparty/sylvan/models/anderson.4.bdd new file mode 100644 index 0000000000000000000000000000000000000000..317d7200db38105c7f716fd6d6b76deb579162b6 GIT binary patch literal 38400 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

5un# zn*R81)bz)DJkWodU*GOWeK&%B**XTez7w56AL3E%EDjJ4*>VD(ljE~#Gua%T%MS68 z<(Lil{22Xn@9`j>7w7ph7SBuQuy|fdZ1KE|*y4FPvBk3^ws>AaZ1KF381cM{wi@Dj zb&Y8eziSd-L~Hl+wZw>5?T69l&-I)){x=XC{~L*o|4qck|7K$2e+#kk*JmK`zm5KC z;9vLa?eu|v#dnn7ot!s*cM%)EyNQk8J;cWEUSi{SAF=VfpBVfepsfae57w9#{2oet z2QA|JaAFz6_mRZc(PBStoA^;$?7xivxaYy+oNxN#J)Wj7-s5Td;ys?GFW%#6`r9jiwb|L5s#@gK+UMa~<)mxztu%f!a-6=LJ}DzWiFut z14j>jZzX<#7V)no-zIMRJKp1I_h-DvWBlLa@y7psV&ne-vGMkBPzm z6I$b6@%@xui|^?3=yT2+zb}Z5-C_cgKc`-a%~eM<~}-_aVs?*m5FTN9PKxec?Y1SY6J5f0612NFz z^h_W5&eQltt!sSaZ_rzfea4FQjIW;M8;6_yvg|fu7i~G34HLjD&!O>Mff#(Nt;hlR zu2c?M@Lf6a613|oZ5(y%#y;?3xGFLDqAa#%e6hWH@zwS-zS^F~SKHV4YI}q4u&v&{ zaKJZ#e(;^>^WZxv@hY_Iv}cOk7Vjx^fd5oYWM}-R(Pi<*QoVTNQoVSCN-y5p3Knk- z;WUZ8FH{Nz7PSzGe^Hps^+8Jey7B@3tt?>P_^W)>$(U04v&Hf8rN>|2QH@k;yH^Le0HF%h9vBm=NP8baP<8g1RABcH6$YUQ23Crh1;zEf1vUas+iTZYNTz5 zKXL-Z7O4Yh5yM3tTMQSY-(t8pvBhu+V$1Q8#E79R$85k$$0%whVp?q(4iHn>assP1 z0xwISZseF$jYN!98^fi7z!+C->smS8$M8BB>1(ai z@c&?+WenoV&{$0|n9n}T7{pBSG{Mk>D4nCdi6}J^^ntEZ8N=kCRsX=ncm67&^v{;n(3WNAM{SEIa=toTenw7 zaEtfqh)RO#Mak&t)s*E|p=$Y!5(T}uWNWygK}l@_dn>A_U#Y4|xTpWkA26Al)xGn#>l;vMkEFLOHmVa$!i-(@Y77sm(E&nsg z!X6^Ch!Kw+XsaO}JLb4PqcB9X)Awr~7q*l69qMY*jP)QqWsR$&lHURt@7J~f$9rJN z!Dw9#x>;Y5gC)vAiyZW7iseAH#d5GTj|T}0qkbS*mi}tsU(YVN+8&D9()dSBY5b$6 zfPb&1)CR_4swv>VN?nT<{8x2s{8yvD@gI9`sg~591z*(?U~Qkqw^MCtd^^>a#Dq{A~t@iE#Q|m zrQ@^*Pjv;=Qn&o3(`k;5enxlo@{T-X$1L(JW97v3O$a2gE zd~l3@pZCC^KX0*k52)#n_rRL|?kHZj>5uoop#PZQ)5)0rW9fkY<1~>S^dIlo^q)Y# z=|7PedaGU?L2Ud^A~t>}6C1x%h{5kKwDYM~r_u|4r_ojeztd|>Yy8e22EQ|D(P}@Q z74Wyc2WI@w<$1>cJYwU2J~8-TKsz7)7t#y<7tvM&|BGu(Yy2-Ew)kF3jQD07m;cK- zVf;E`<97uy_+3dmAAVQS3w~GARs+9lYD{bVt|bP)>uAv`zSjr*|M?zR+b{7RSj$KJ z?W5%*{`P@;9D)UoB`G5T%4JWky1$M{{u_&v#ajsI)J z#{YF<@PC80n(=>=KJb65=4iqHZO6v{9r`W4?-C=vRqspB`}Cu|#}0Zvphc_a-G>2x z+k0S^uTOZM>HU=0^nOMRy`R%oGreEX2fbg`94+*I<=FIoO~2{=h8TJ`r9~^f-v#{F zeGhEA6o8tzAcyz>wote_nQi{(zvsnr`MaLwWKm8aC)F0?06D3)I0wkd66K&pPL_0x zoGcKylYyS4ecnD$E<-=`R9lt<+he-dY>zF^dD~<9T@QP#+KL>Qo|TAA&&tH6XBA@T zS(Ub$?XlJ9gC5zM2VNt`+H<(4)=az% zHhoiwP2W^v=$l4c4f^z5s4(>Cvo7%3^g++`nxloD^%Ac|TVk+3wJ%%#I$X;0*NIBg z*NJM=*GWp#*J;@Fb-K5kzWAM`>5Jc4a8cE=`V3+D+nju$PnKgg;G(bvG4xgwRp@P$ zF#}u@wKbu?wy-XRAXL8VdKsc|@tDC2wZ*%c#6<@DXAxUGb|AKR>_}|!m`!Z)*oheN zm_uvvm>W2H=&$cY+tUO6wSRXZhTf%VaemdGfcf8Zs$gJ#9w!tO9ntMhWBT?WHhp^% zo4&n>P2b+crf(l&)2Hu5(3jtdI!=52*`FBtD*mJV^lUVK2l060cQCQ>JA~Ny9ZGEc z4kI>xhZBR}5wsTnBLhbden%xffEMvTI5uoon*MkXtm%*Uz?%N}Zq)S0dtlIinqS}U$J6PDe%U$(_{>9MgZMs@_&Qqb$9g_IN{s!N@$Yac zkAL?#anl#?fi->c9$3>C?}0Ua@g7*y7w>^JeeoU`F8Um=WA&)wukS`J{^R()$g_-} zz8e|8mpO0zULiJquM!)-*NBbZ>%`#q2CeaXGjR0a_g3N;Xc7N46TeN{_V>8w(Yu^C z{_hbR|M!WF{|Cgz|3hNq{}HkA|Ckv3KcO}L72i+kwfN2>ZuejJIkEBkg4phR3#NhWGt?~OlaP;8!L*mb95#JvZ%OJi#C4Pq%`}^m_GT7h0Bz}w* S9~%CeSZ0C$`aQ5Z^gjWfXp8dz literal 0 HcmV?d00001 diff --git a/resources/3rdparty/sylvan/models/anderson.4.ldd b/resources/3rdparty/sylvan/models/anderson.4.ldd new file mode 100644 index 0000000000000000000000000000000000000000..42d5ad9c23abd8c519dac1a38e9e9df31096d01f GIT binary patch literal 4448 zcmcJRYlv1=6oyZhHcj3$5eXYqL_~%Vkq{9P2@w%d2`efQGf`2IE)q5lA~i`D5mOQo zk^V#x5#5N4pokE<5dDaVppX!xhzO#H@;vW8>zwynh4rTmXYKb{Ywfi!XU}(LTvb(n z)oone_qI`nSJnC&W8|2`eTn-Mk4-#2@x;WF6HiGzHSx5>)5S3hQC7@OX!NZ3y82xg;jW4?&x`aU*ta!*dI z*EMU8T>QB1Aq9?xpu7mN;$E1YF=AE z++s9+%pdGI#CT#%^yF{{;JhAcMqSn$WBw^G)_$d&8|xaqjh%X%;ZW-VV^%rSn3I@o z%nIfh6Q66$_yJ?&d}Hzljj4Bwc%Cf0K&lw(<@GMIIPz9w>Mu5?-V*UbS?Vp7Du#Sc zKN|VV11%z5Lh zs?)OU&2J3rJ)=l5tnaKb=kdIFedFaD+}nCrR8=qZhN~A7zhumMUN&aFSB#PD!Q1N& zwSLo>^}l6|eA}4$-Vwhl%l_Y$Du(fI7$e_L{DCp`J`}$v%lMC^ih*APG^-QsP#HSiFU!Ua@pRV{cS>iWYKJ$A%@d3qW$P%Av z`J9jE6Q85_Y+2%SEuZu9eB$#JpC?OvFy$Ysef57$@?sWP9NAB}TG)CQNtNGsg=FIX zP3T;W8cCkTZKV=eVvJmB%=(uZBR!uAD->TY%l>Xl`FXxo7H9lw@k&|DniS99({+lk zZL>B=#aCuBCELdP^6wp~8{3g3?XJXkC%)I1^Vnoeg*y`8m-v2T^9`+8JRNKqfe?1YQ;I`6k4--#8Zdg1DRM@?&nfzdX;vfV zbUd*!C&qtDbxOoH@DzE)P%rP#G}CdXC!UdbrZM$zHm2Sz@l;vr-6pRX z;(0ShBmNG-?C7f9C9mv9d51P6Jr#bxk$+B`tY7E3#+@qv0b}YH{UP=8q(5Rh<0<-M z>g9=>C$AXl75zzd@Py4TQo|N~p}0e37s*>J%h=0!mWUZoslQZA{Zj9FG4)FR7sZ&8 zZ*-mgX(>;;uMhKIR*&RFzE_QLUpFRxd1BAUdcAEr`Q9ivIR}Ad=*pKz5lW&7D?nd!CS>iXzD+cy_?BA9m$&zoYG45C5&9cOQ zEw32Z^YMH2t?A_3W{kUC{EaN}-^nWm_I&s|O();?#<)L0tY`;2ja7yl|t{2%h#%zU}~Wx4)9o22`hd%)Wv!NEq? zpYk5AGk0KH5O`pVIoOD8D!D#N03JaW!i(eyg|`=F>q+Vcd?! z>}Mx&nPshZQ3*6l4R2@I_4J>WxNG8b5_dCZueuvEo*u^Jr_bBDNk1>~`H3$u#%(bs z?}f&Ur&Zij7Vc*{ZeQaHYZoUTXw3D4#QkNtKL?wR+sC-V+9ioEOFYb&{KLgVWZCZ# zrsMWDuCO*L@l}aOC%(p*dSk>RWiew-$L(cYVQoU<>l05(d}HD%#?+rG9@prdChsFk zRjs9*%=&(F{fx$y<*(eC#@uT+8F;OVJ(g zgW$M-ga6MTD^bqP)`$OjwKbmKxoxO-$J)lumG9G!joI&_uTwAY-}R=m|3%-RUf#zW zP3L(i`X=@AEwI^i+@fz$FYnT=rdL?kzfv#n@2}H#0 zydIDKo%HRp=sPT)SdT~lUiwa1v>z>=`FK43Zt1&Z(SNdd=I8O~zewLBi@w+5*-wv0 z|4sU@vgrFPp8fQA^gpEkE{ne3;@Mx1M?Wb2fGqkUi)X(*9{n%rf6AgCPVwb?@Q8XF zK~)?LW>2dBw{WT2iSpW87P{m2qgM$syU%>wj*U!3=#;o~;?s>OdZsb!*Top!-999>wAfN$g-ZjP1pJu6W=#+OX3T~ePl7MrjswPPk+G|)6p-I0q@i6g_M(=QW@l|^sLuxeEx3xj#{u$Z0vIwIRUzK=t;%gIMXUzVO zHKxMli6?+%GdsC*KXm#NU$mR`E<(%x$J~ z{X}D~zccaOiSHH9mgV|6ro-cn$@gI5hZ8@V_;K;vM(;d%@s;13lt;CnkD^*_LF39I zJe~NN#Lp&PV$A)p)R>Hm6Tc*WUY7lQIq8cMzn1t7@iJNVcX`qmCSH+vW#U!hH)S!a xlRiK3`-wkH{88dh#A{^P?{!JvQ}ucKH0hru{ygy)iN6%DZ}e`JH=WY;_75`k-7WwC literal 0 HcmV?d00001 diff --git a/resources/3rdparty/sylvan/models/anderson.8.ldd b/resources/3rdparty/sylvan/models/anderson.8.ldd new file mode 100644 index 0000000000000000000000000000000000000000..8a96e89b3bcd9283a9ad94beafcde8ef927ccf1e GIT binary patch literal 9248 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 diff --git a/resources/3rdparty/sylvan/models/at.6.8-rgs.bdd b/resources/3rdparty/sylvan/models/at.6.8-rgs.bdd deleted file mode 100755 index 71ef84a77c48033d3a1dd2db70756bf85eea2a2f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50128 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

4g2ex_}GihiMOJ&Jy%ZT*RU zqhH2-2liooeJOq(|8bS$FXFyKVm>kP0`5DgJKFYtar}An-}H0lf9MY8Yjk__zx1=_ z_`i|$j5$R*Jb&7pl77mZihk0ZntsBZhHht0OSi@S1@@t}4o~p!BskvEoPlm`&PX>k zXQCUMGt&*tDO2G&;+>V_p-H@N;5g!)P3IBs&~D_o#5+4J@xF;hymRR5CEhtX-X0I% za?uj++_c0y4=wS&nU;9xr6u0^Xo+`zx*fi^z&H6+avx()rkL{YQ+C8HR4}PjrbQ=BmO1Si2vQ{_PD>GM*Qzp zBmO1Th<_g_}`~S{L84@;S{Jw{L8A_;FPIGKFX_G;S{SzejZe}z$sacd{tC8 z!==0$`KzqPB3MO@d?u-JQT~t``K_vMfTdWCd{b}P*QCs4B=wtsIifVAX z(dI|!k>;B8aC0qssJS*h*j$GmXnvGN9r_kMMxzevvJdMp>M*p&IWFr!JzCa*`n0SA z4QN?+8`824G@{$%;ag)`)`2FptOHGHSqGZYvJNz-WgTci%R11KZinwLun!G&*jkOc zYokV;wN<08+Nn`TPpDBhPpVNTPpMHC$$k%u_&=lbi2t){#J{~7@$aBU{GU@J{?Drs z|BhEcI%{|0Olz|FRnK@1#cjJF5}@E^5TTtGXRNs;CkF?rN+9J=DlYPc_zo zUTWm0w;Jm}A2ssTSB-U`pBnk=uf{qsK#hF9qQ*K9sgd7-YODi;)X4W>HP(Try@&Yz z@lcD2KJj~4)Wy)md=w9(E{5s*$ZFZG!qt$X;j^TKFJbW8V z%W?TCEyv|JT8_){v>cZcXgMw?(sEo*qTAu&+hiJbF@=3-sDsd^avXUNZ5oX{hc=x? zUPGHfBaflIMk8;@eh+Kwpqt5g#5=TEw8Z-jTH-yMmUz#h5$`wIhlY5+rIvWV&GGhO zLwt{cmUzEQOT6EsCEjysiT6BO;ys_1c)w4#!}k~1hlY4BR3qMt)QI8BUuTcwBH8a@5&z}7J>tJYjrgxrBmS$@i2rIe;=e|X_?~_6;Ci=whVNn-f zCFY}e7{9Y z9G73ya$KII<+waW%W-*{Zik0&XK2(#XlH5E#W(CjlXdYN$59udeM`$a`5leA2<>}X z*3I)Y>LRoYw5+2SX}MW&iI#QsGL5LRqCXw*e$S7_9QZ&BPM|G#iN zH01wRHS+(P8u|ZSjr?C#BmaM>k^eu{$p2sJ_W1sS8u|Z6jr?CzBme)Zng8_Rhewb6 zr%)sRDb?-p{RK7hpIVLlr%@ySY1PPoIyLg2UXA=`P$T~t)yRJ)HS(WXjr?a(BmY^| z$o~y$rsN%-(IdNDQr9P{5`l!M!iHs_>AnRC%2&AI6j z<~;Op^Ud@yb6$F=IUha5oSz)2MUb zq9Qcv{C4)?ol)m^BpeUwI#-nA9TLO*^G>?G`7T=4xni`ebH(YWZTk|mtaEqMvd-N@ z%Q|;2-3|}mO46wFQtU%RUBApcqt#(=`F8hlJLKE{p4FA1E#K~b+Vbtn(j)NjtsHIn zcI9cyw|juLe7gtfA$a&!fwp|RinQh1RiZ85t}-3r{sQ~ZEZ;7P!i<+vYB%W*%3Zik0& zV`&`sud)wKu3yJ-T#ozkv>f*nXgTgD(sJBSqH$2ial+HMAzo8B9-7qKRE}G{CF)Y< zr~COC{`J$?cL;BUe-A-RJYT0Jo-=8Q=PX*{`35cVoJ~tS=g<<*H|ch`kH9`O#Pe-6 z;`xpm@qAZ}c)q7bJm;zr&v|OZbH4Xv_E<;X_pa{O(QN)_N%nhH)cFE^A6X|BavXKO zNav-_7jqnW`#|TBmk-sFw|GsoXIe@V|bZ=vUzx6*UX+vxYq+v#`B zJLq@JJL$L0yXd#fyXiO0d+0g1@4!B^SMcv6)cwN*?lW-Q&M$61ZRZnrfVT68J4oC4 z!X2VmT=IR6mVAFpBj4ZY>*s}6 z`$u{X{(S`d(2(ydYUKN8HS+z78u|WJjeP&6M!tVnBi~oO53`r^fBYjL|9|TCYjJ-; zje7W7{R!?bs8Ju+)F0vgf|~0?hOo2fSL6PI8ugP>y%P5q)TpP_>gBkpv7 zIn=1XoNClxE;Z^ew;J`AM?DAs2@*BxFRyw4{*xtY)MI{iKYUL?jruI0#`SJNHR`pH z8rQqGs!_kUsd2qqSdDrvqQ>>^?P}Eb9coG=6mS<=6mUV=92Utb18ZkzQ4dew4LDzzQ@4v9r*r& z&Tq%}7u4Hq`?4J0YA#1_F_)*mG(SLZHa|#zVXi=LGFPNOH&>!RGgqcJnyb(o%t`cm z^FuW1GPJ5R>hNLqp`q?VtHyEES!mU1)KzFTXw*??kI<-_WamNTyB5boL%wUPk?%Tc zqrMcN<#r-IiXDOH%fsA>U7^k?$wf$oErfW7e7ELd8*tVX@OtUiQ~ z-fGlOXY~PmbXTLEx~jjzM}IZytGjwHZXKvmZ#~t!aqB^i`s=Mm{q<3!{`#s>fBn>` zzy4~}-vIR%9MWpkU!+F;4OFB42B}ehgVm_NA!^j$P&Mjrm>TsrT)iH*T-B(*k!qX= zN2yVdqt!SMj!~mN$EtB2d{vEl9jC^5aJ(AzJ3)=};6yd*d6F9E!O3dW_Y^hGgHzS0 z_i1XJ2RnFA_kBlyK=>~4dGKHSyNtwq6pvrCjb7vUKltw~_}9lXf8)Qip#ICYpT+S% z&2P|um}k>h&2#AA&2Q4bnct#+HNQ>&Vt$AI+59ej#rz)qlX))vqj?_v13p5q5A9NT zf{z*;zhGWKe{Wt$e`{Vue`8)upD}+xpTd0v_MxFJLtDae)ZtQ{N8N?CjN_=Y(3aDv ztI$@^sH4zU(x{uz;=D<|R&!qRwT4E%K4Kr5`P!;RzP726ukC8&Ylj;7 z+NnmqcBzrC-D>1(j~e;f>%EFSj%(kdxX1DOm2QvYb-xj5>6*Mn;0|BxE_KdeUn zkEoIVqiW>;m>T&%u15Y(sFDA#)yV%zHS&K-jr^ZhBmZaA$p2aOWgK#9)WbRTMI54P z)W>(~^Ejl{-{Zfhp#Ba^fEx94QGE{oJq0!D>9YDPmKZha>qqrzl)M`Cc13*>hm0Ea z_lp|mv0v4w$KTXAkNvJjeO^`LJobkg_4=n8=dr)ksNcWUIFJ3KMm=9s<2?4Sn(I-< zxRMip;5?Q>je1Y1#(8X?e|;)HUQ}Mrr}6!z#kh~4uUljrrQ!HOb6R?VIUW7JIXyk! zoPnNa&PdNSXQJOTXQtmZXQAIQXQkgZ-$1`*&PKm!zLB1T`v~kq8;AP{>ak%0_Y*ii z+MJUfY0gCtH|M5@n)A?u%{S8nue+~+zds+xLwgnX5!Cp3Zc&fHeFQarzJlsexR0R5 z&wHzS1nwiK@$(l}55s)~HTLIr^$^@gP-Fj!st4gdf*SjKmpa0I6z^ibzrGIZvrchc zU0h$cBLoQl9)jbzt`6;PdRq|wJp{egd@sGlT$09hb!esN%|W=IK;ybPwEO5yLAakl zNYoYpL<`*H)tr z>!`6mkE&6JkEyYLb=9cD$JN;1dg=)O4#c~@@9z!!p6H|adLGvW4HENs1sbjkLTkuz zTo;7ah?eWZ#6)o3=t!cR~Y(vX+ zVOtv41?|{}_56xWAzO2KN`#XK;T(eF~qi)N&j=$8pr% z^ExlbK}U|uaqt2y$H9xV90xDaavZ!&qb`zN7vS&j%<<509CT6R=jp1(anMbTpRc=m z6z(sm@$>dn<2dN0#?RkdjpLw?8vD~%jpLx78vEB@jpJZ|8vFZ-I>P-G@5uLM{l3S) zM+|XT6rLbt+-{+H5WT=Wn0_Dk9oUC9AE{8!3lq5i!11}};q-gv5%jy}k@P#}QS{s9 z(ezv9G4z|}vGg2VFQ>OL{(ddAahzWqg!>P)?EeH>_J1NR`#*_(ANL*Dhlc&1qL%%i z%5mBMX|(MBbXxX*1}*#l8ZG<(IxYJ@la~FTMbE*1$B{kStL$gTPvbvk)3eNT=-16} z(lg9&(bLRt(^Jgv(38yX(i5(`4#M9*m*b(mflEa-exCX2nFz5OKi>lNYe%P@g|C&BT}=1=J_%xmdQ=5_Sv=JoVv<_+{l^G14u z`7?Sw&cnKYyKH_F=W*Q^+84C!|7KeD|4Ul-e+#`8|6?B-_J5mN_J2FaW&d~3vj012 z+5cU%?Eh|B_J0p8`@ff#{ohBg$9)I(XrHr}<8D7K$K3&1j=O`j9CwFkIqnYAa@-xE z<+wXaqYjf@_u=n9&hgN2+?`P4=lNQVIPT7>@$-M9#&LH} zjs5vnjpOb+HTLg&HIBRUYV7X?HIBPu-WPpe!|!{1pEktdpYR0tCAghj=Ut}%viToq zT<87h-!Go|1D9HAxz4-7@!#$BKhwXNf1!Uh|4Pes-f#5JHvc;<*LhdzpKSgQ8rOND z{Yn3TU0@&DrSJs1%JB>4f9UVc*XVD}|I*)>T_!v~V@^Szy6*Rg|Jr;i&f_{ewA8f3 zKMgJMPfJVu)6s~3diJ3q{u$H~|BM`$_-CRe{+Vfse->KepOu#Q-#|k^a^u1dYQRAy#)XL1@@uIb?<{5m+RgN^rEmK{yPjbu6rx#>lfg^ zzo35Kwy(nR`Q{{Au6rM%=h}Q#`aSc*^tG53RRhRP;ug7WmoKTNmfbTD`4-N5Zpq6+wR{5(C_+>st+ zet{lnevyvw{RQ@D#dsb>E12lQpHcih;kEc)Lt?uqp1^S)S|^Tw5`_B?v>f+c=#Ol^ zD=q6lH+r?rcc*1t=s~Zv`JS|_6TRr=Hs70;b)yfx)aLurSVuzZM}HWE`wukMl>zKS z!*TM8T8@*5<2X(R>ihzPUM=g&V2;aiGK7}nWGF4i$uL@uli{=+CnIP%PDavloQ$I7 zI2ldLaWaOUgQbBz+RYgfebYqe;&s43*Y)64ZodFakbhmgiR|Zij>~?gW_=-U6Lou8 zUnX&ULHsW9ACqZ$zbQ1{Zz_AV3G5|q(`bp?bXwvzgO<3xMoZjYrzLJPX^Gn`TH^Kw zJqHipX49|W(u93z@SEOq*bfL3cx$@9zdsX(5ubPT^@z{A>IK*(wZvyG#}S|S`}N`d zP{*Oo=RE58eSJOtz6EN@$3l)T2(L!!X#9PPb$k4MA9&AWFZuY8mV7LsB_B&^$;UEU z^0Azje5{})A1i6e$0~XbmJ;@%A^vN;L;OF|dBp!?@3-0a3opcyM)x&``L+6b%&+tQ zlzkuDem&jWyn*gz-bnW}e@6E(e@=HdZ=$=Izo5ICH`86rU(%iJ_zd|ATWsaL98cS5 z$=`Nb^0$MQ{OzPAf4gYO-)>s+w}+Pe?WHAu`{+5izra2;7k*`yMNf>u>aZi{c*nPs8!hkpHx5>pG%GW=T;;CdDO`N&1&R7uNwK!r$+ws ztC9a()X0AUHS%9jjrj{g?66 z_>YqGW^*a}3v+3DlleaSb8{K`GxPoQMsrzugSi~N-dvu>`6lkeF#I6L(H>wg*KZYQ zoPXk;8?eEZ{Pq>u%k@NM8t0?<_X6CO4e?C!+sEFH-|MRp&#G#P=ffOFJWDa}q3sG! z@cjnPqaJGL>+$zJqTX)X*W|e5uNIBJueNTFzpsvWHTIIfM`_95W3=S2E-m?coR<96 zqa}a!X~|y$TJqPBUXO=wjcCbNV_NdnghqZsYf2+O&De*A{51Ej!XDQPp|zmpdaflc z*K@6Cxt?oH%k^9vTCV5X(sDi5j+X1WCuq5zdy>ZWLO5PSelQxhr#Uaj*E6)_=UH0v z)1H?6bf6_a&(V^f=V{4LM_Tgp0xkJ@kzSAc3+zKfeqL51Kb_RbPiHmq(?yN^bX6li z-PFiWcQx|ULyi3OR3ksV)W}b7HS*I(jr{agBR~Dr$WMRor`Y3qZh&|A{(XfI3*Xn` z@p~MltM7BvHi|fY*gTLvXdXoGHxH)wnTODOaO;SDXtGWW& zp<$gErIvMRG{;egp^c%X4#(0`hp*C7hvR6e!|}A#;RIUha3U>rIEj`zoJ_CB!?!8) zI9#H!4-KB?J(c~dVFH(a^jP1AVfZz_{S5YF!UQfY>Cxsp=Z9XmWdY_hfEuayf&=%5T z@R5XlXo$~Z@0sjJg$dkGphucNq(_*S(8JA3>0#z&^icD1dWd-iJ=naG9%Noc4>Yf) zBiu(|k5)fpqA!@}!k*tet241(6i?u|4((%(9}B|$1zL{tPw68zzm}HcejRil;9Cg_fF9C10W^N7m{wZ!FXj!Rrl z(h`?bw8Z5!Epa(ROI*&<5|?jiiOV@!;_@xM9uMEXqh|-6zDU1r zzC^!fzD&Lc2mw3BvDnX?#8l?H77d5biI~_h- zDmC(-T8;dtQ6v9p)yRK3^?KZ2P$T~t)X0BEHS(WHjr?a;BmY^{$bVKf@_&OG`Ol_C z{%=$x|Jl{Z|4nM-KZhFmZKbE%R4+-l_is?SFrKmL$UN7_u1m%nh|L0|W$&E@6z zALe}YRdas&ck?auZ{`B@ujYdEFXlq@&*od{E9TqipUj2nAMw2g_M!a{p5Xfp9KVG7 z3p#(n=8JOtd-I+2x8}R(Z_LH$Gv?y-DRT*W9KPqkJ~a3q@4MN{b;!N+Sln;$^YKgI zQr;!mkBLX)KT6Z1|8vxU=lOrkWjO!0`FplFur%u5A9NTf`323ami;jTJl+)mVDNr zC7+MblFynn@>z?0Xvkk}@9XndhvQ?zhWPgrH1hSB-#(r}zUq44$9|M;|2RF;T#uIP z$olkfn{Pl5GdHA%nj6tW%#G>6<|edUM>eGg+I%xQ!uU_wxL6)>R9? zT|6Y~L`#m#I?;-jx@t{JUA3X5uG-R4SM6x2t0!owt0!rxtEXtGtEXwHt7mA`RcO!B zm+|i=*oSs0Ji))8;P^%JbF|dm^YnR}??_7>zCeFx^Doj;moL%hZ2o0h>a-Jm*5*6Y zQny{`(>C9gmUXEceG>N_*rSE-iG|XO*Nw0~*!tmmaC_vrr+;1iV##waj!T|<(~{>t zwB)%jEqU%oOP>4FlIH=mvw zW*-{jGevy~m!fLKXPO%EnXX2BW~dRL*VKs5>)s>TOI^;Salb9@!_Nc1;kTc~9{1lu zn@#t}rMsVx$Kf}<=dkY=w#KjQ=)Sma%w%IcU%sQSmwJDfH|=litea{(>+Tu4hk7txZ>#kAz}16uO=AuaX3ghoD>vJdT2c!IASaa`(sIW6_R zf|hz;NlU%2qLI%yPIwwO#A^-5LzDXdh~u(8d`wHcKA|OEpVAVqwY0=*9WC)%PfNTu z&=RkWw8ZN(8u9v^eQ1c+CiNwJ6jdW$o7ITdmukdoiyHCTsz$uFd9P-V`roeesP`S- z*Vp?_j-$Rq+eM?kckAm>-+R2@X5S}ljawyjZ}UF7m-#EYr+Gi!!+e15ZazqNGasV6 znh(=m%tz?XcK!&*Q`q7d=cPW5(^4NNXsM5{X{nEswA9BbTI%C8E%kARmijnLOMQGp z%kgxMMtywCKD0~W2~O!8m*eSsT8^jlv>Z;G>r^VW)M09lOC6@6 zr4G~5Qithisl)WN)L{l%>M$cMb(o2kI?PN<9cH0tHiO!JNO z>*nnAYv!Bi8Ri`HbaPI6nmHFe)tsB2V$MTPHs4H7GUufyn)A^U%=zi@I5aZY827&b z$3w&Z7gS^a3#qaHx2m!Kx2duJh1J;qB5Lga?P~1*9ct`T#NnHf*Fn3E9@`P09YByV6&{I+O)VUuj}dha%?!0lo>Z9{Vt^S&SL#@D1s~H#-pIP2Tw!VMqc2Qx ze}CVc+xsxa&&?Rveaue|F^>Ox8_XCi1yReAI)D54kjKs+r?&G)lR9S-=6DNf(D*pD zjgM!C#>X>5gClfX{{Rze{Ufm|k!Qx$xQexnYf;2dgp%2a7L0hA6&F$r)(3&5qP< zpWPj$W(3n-0%ASOb&0e^n^muu;2#LhpiK@- zog!YU)XK*;OOE(hr~L|B`;Y|PT3-fh`8NtSv6qB3-?G>&8oykv=lJEb4Xg1hR344h z{;XIzjP1`#IJ7@@TN|XuDzuv(tHP$oYOvxDOPwNKqtrU9V@;1WVXZ$bb&7cHQtPaR zH9gjWO^=*!J^WcTe*Id{@f&0tR^vCUye?LHL>^Qh`LJ=;v6c^;z!v|eu*JU_ta!sx zr--*Gwa(^Pi+@X4>kUhtBHp^xI$L2a{%v53Kj+&He-@43zSg(GYWxnB!)W}DmAAzz z{+%jsgjGJ|euZ1>-KDmN(fqqsPJOd^H!8Ni-C@n2CDvi>v2M+mWiKjP@80Ras{cNf z_rz+xeJk&Q)q3}AhIxFpBRKXN&Jt{E8=R_7R_6>!)EYzB6F0CoFY} z_^eXvoQbvg&W0_%obO!xSv3B$4XB$@IFQ|MDR`Fd}`DCo}qp2K5>%G`n^IuXq z^~>fFL>UxO#eD!g^yE*Gv+wWUo?QdA>6!C4P*0~jH`+YmC^@gQR5#L#A zojb5vf0nzbSiCvkJ=p=P@%L8F@%MSV#@}E0ZmjA10Ic}455ga;y zmPe^*{g0&stMQLlei&=#|0%5VKY>+wkc0Gp6033(2i=dZ#H!@=Sg6y9yw?1=zt7O1 z`Jb&Fp2lkay#B(i^*>+R!)X04RPN8W7xCNtFTtAsWvoi(&npEx&tbLxEU^z3|7$c@ z{IA1WU+74kqV@c|)P9f;Z{WB2-h^$ww_wfp3#`h|IA}d@V^v<|AU)r~syxMEicaTU ztjZxACU36~komH_Pet=Rln$)c^I_%w{rw2P#y?TpKgMeOCzU_IYCTy#rK0tGmJY1e z^UKQbVJGW!epNZlq%C|-b&^i!*R3mlSoxyz!q|yAo!@x-gq_ZBohNAFcT~r3`S(=E zYxzs6n(CM>|AFeTmcOAowBAw(0`i0H)i5IE;HM@vBzO@vBu1qw%X(UKy+S*Qgvu@vm8V8LZ{wTCn9~+`dhZb!ay|)`b;+ z*j%4@ef;9}IGP?Cz=}U?_7`u2U%Vkl(_>@U;@JeY{oE9`{fx(lt#5PMwVtqfKJk|L z#anQ+^=$=fJwvfsl-%279jm0=ws7w|&Dz{-N5%Bo9=7%D0NeR@gmwO%u(>{+f9J|u zV@;1;VCj+hmg8}&G`n%s_{@*pVU6DdoAYb@o|SjSO3%G2hmoFpSKbV({Me^*80E*l zmDk4F{c1mW@?OXdh#m(-rPKS4w_v9^kc#vOo9h!FT>Bq{wf#8+R(v^M=Hp@bZT#Vt zQ=cO$htc>WD<6tAeH&Q%-@J?z7}iwbQ`SrYH4n#qRH+kjwX!ayR-7uSY6L| zRSu);`R>a5V<+o$?x`FmL@ADYF_UyU_Z2M1iQAu{=f*Qpr}KcfPgs9;P2U7rsXr@? z-}1v$tJqW@;V>?TQXa*`MN;@N%$TLl@o^5rIF#~JjNR;?fXCoa%9EHO6=a^ORa{Tk zdR!y5F4IJ{|7Qr>gP7iOEKaXIsHKVJX%CWP`Pzfzv8ZSdYH7x%qCKc#H{sVFWC?k+ z2PWH~U#f+?+5?k4K(4mf9%%apO{S>_?LnN{_8`(ji)@#y{tBwf+Ay3PZ9^8f`jn3& ztv;p6I)}8aJ|+F_WV$>;pZ2m9n?Aa{;s>Jkwj_=qX{fg!i7{=#a+FxpIh#HM_)YAQ zu;u9Vu<0`cEPZMkHXuRI6qS0gcxT3C@y-HUytBd*eKu?si+6T>+O#>c4Quhv2`k>Y zuvrxE+*!w3yz{^o@4T?ZJ0EQE&JQcz1+XeJa!@`jh*gQuB!+Eyz`~`u98Hf!dV@;S zq8QU-F<5#mj?H3vEP+pYESYUs(_<-EdMu62B0ZMLI@a{)!luV4*z_0;n;y%;(j%_( zynjf9X0iA-!l(E)&Ni&#+r-)8 z+Z4aWw;62lZ4O&}TfmAh%a&9W-&WPJ4p#ZQb>)Syy4mS}y`Lin-D`5s`=1#~Y{sZG zaTIG>N)ykJ_JU~QnV}m}*z7NkXN5R&tG$6Wv3zMm=Z9R2J6We9$iK%TpQI)f%MHA=I;J7zvK5b`QqxCjW+Uv<^ihGAT*<&QG z(Lp(AdmbN|Y|rDFVS66W4%_p1W=LH2C->4)iX}80I@;4gd#J!-@1ju$#aQ>WcobvZ z!@`!=v4<98>}?29y2kRf2wQe+poKLkuOobQW_`K#1?pnUjBO0b(X50X6q9&RUgnKl z8bmA$^kQma9`T^OoWIVl{t?4`Er(W`Z%|%peCB0nqVaY8WqysXvXs1?x1BHK)939$ zc_|*0m${)@PvoUGJFGZn5@%jUp0*z>n#j*cp6FTfT=PXf+W4B6O^&a5S?1UH`Vqc~ z{1((HOM488`OA+Yb#e0a<}0n8CPK0GDAeBM^p8tW^XXPWY2v8)2BH!_di2DRtK27S zzow_(e6_RMXP`Q7%QI5dNyFy+;+adA^8KjkJq!N0xS~T7`>y@2rJ0S2oqu-N&OZmN z^UsO3^UYOxCalgkcjYiT-#nFP#oB&GD5hV`tM%u6u@qZ>EY;SZ?YcxLO℞Z{1B? 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%0Dcvi=6 z@vH&c{;mmIJZr&VoB{_||o{_}0U(_}2IKZVMYwReT$^u0io_gkSM( z?Cpwg6K9KWQ~Va+X0XM#Ic)K50V}>NTT)ScTUEz8Smp25mDLo_z#%f*RG$sU(}cVK znIR1rqte7tJTxlx?}EDpbZmxEZ4m~vv_uxX7TJW&ElD1LB})0F6ek>OqUaP%J(L=-pOdvdgI=Zdf0lWpk3>o z5}QTqjb}x&?eWz3Y`w!_TkkZmt#<^h_5KK(MeF@>t;aKN+H9yFX(V>tuhP(M+auIA zzRmzmif?4wC2}}%dMb)eDTb%_~Myi`w`C$EwbiIIg8de z=$T>q$1_9g8}!W3`UX8SY<=;}u=T|=!`2ti3|n73GqgTkR&CMx@|h9OH0dALTK3T5 zGo;uWefZ{j%4rAXa^_V3f6rUjTwF^zXSZ)pwTE%-WxF)W64#h%q|*<2$b`1is9u9* zm^6ydYdMK&6xX6OB8FW1SwLHwsQzEXkX`b=P`QcWim}E}$M>E^C4Uv;pgb05UPMe5 zbHt*U2gRVg_}{&c#Qh_K&?d+IBRP{m9QP4Rk{DMoNst(E=RS;{X;Z09?ci`kJ1{?g1nDRg)fr7G{*hpC)u&;F1@ov9-H3N z(ICACvIACnk91a!#r-3Fb{)q3#Bwa|C(5z7e`J5@7x#~3(|ZcUoGk7q8l3soAAj6O6u(Ir@!OWgebSaR=(!bJY4JyBieDkO zMUeNAa9aFvFR^?G-PAwxGp1I5lRWg&mPFC12K~IOts9gd3T;quvGpMm4RxKiKV6(U zpDyXPXnmtA^`CE9{I);K!4h+MY!;nwg<6kP)c&lPZCLHkN|ob&Z^^zgeq9WyUl-Q; zR>fw~`tq}9|N7#yr)_5FsQ#KV%9qzer%QwtlBrPyeU@e*`jh7t!K;1xt?s^ zii*XzHLUe)gUzD#Y+LJ_V6|V{WgAxFZeMv7?C=UQJ5U|7yZ+Z)#Wng1YqX4#jDjo%N}`2De2 zH2#2E-v_Jp9hhxct?!`9dtfd94~C^@=6~+@q4=|CzYohg*4B48to5ypRXKu##djpE z_2vCJ=RXR67R`Tj*0DDKF|g*({5}@e{KsLlX#V4Cy}{c4oB%8SED@LG?@2W1d?#lI ztj>2z0E$Ws_)-3ShDZ;mrLlsMOM0(v=0IJ#WKik)F3_9Vf#BX}u1xwGnv00?& zJz2+^p7+AiGvmJxHvR606@QiosF;2a!is+uY!=P;aIN>x_XvK|^HEsyJ%-Jq`5v$J zhp^J~r`d*;o=;T11v{dG%#&1gJuK3?BEF|9_pj#}{1)G&u;PCXn?>!<*ZQ+qi~j{! z>&?=oV*0)WOAjq6%F7%z|0@N{QS-lAIrVtW+cp2|m0!e4k1Ritp^m(t*|d zZ&uFvv-vG5w*Fthn*VKV7R~=ot^XV=z2D6?tb%*5@>AI16=dG0s{2ot%cv}rr1u)A zO0SPvSLpR|36i-{J)27eP6G20_7Uj=3S;v|le}r|uEFr!6XZenb`hTAe ztor|{^0!#6@6VOPXnlXF{1sO5|Fv=$#s9a;zs1`1_jg$Nkn8Q&=byCe{A*)X{>8!c z`8TZd=k<{5`!D`1=r^Rme=xQ`L-5=F*Wu&Ht^C`B$s+fwZq)c~z|DU&Grq z|C*Io##;WZ1uOWBUlj4L6B@=1<9)08Y zbe7(GIcxmhm3POQ-uuAPBggmW=YF(ne70wP9#H2~YqTF&d4H_tKgioP|G|~_#aezI z0!#0lzyE%580{8+=ED(nKDEa6dt~LzhsN7A{;0}_V=expVXZGdmoXPb`*Ey~m!4UU z!*A<3zRq`o_t$(URz3!+cu(?n#d~t)L$P-MIt8}-*Qv1b>$KWm6!~>}<(;s4{-5FP zs-IbTl4>z$)%tkM(UvBv{l9Bns@I{3j~7d}9O=D8%aQ(zw;an~tnYWNi}u>f&$ TJPuX6M#hD;2Q0U5t)2e`!~tG6 literal 0 HcmV?d00001 diff --git a/resources/3rdparty/sylvan/models/bakery.4.ldd b/resources/3rdparty/sylvan/models/bakery.4.ldd new file mode 100644 index 0000000000000000000000000000000000000000..98f797c4253730606aecdec0812651491daf0d6e GIT binary patch literal 27136 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 EUmAmSOaK4? literal 0 HcmV?d00001 diff --git a/resources/3rdparty/sylvan/models/bakery.5.ldd b/resources/3rdparty/sylvan/models/bakery.5.ldd new file mode 100644 index 0000000000000000000000000000000000000000..242e735569ffda908e794185976fca8defc3926a GIT binary patch literal 200720 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Á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 Bo+khR literal 0 HcmV?d00001 diff --git a/resources/3rdparty/sylvan/models/blocks.2.ldd b/resources/3rdparty/sylvan/models/blocks.2.ldd index 1379ed1a39a5cbf1201f57a8f425df19c4985f6f..0048b17f63fc6413f26183debb3850af4896f329 100755 GIT binary patch literal 11036 zcmb{04fM|C9mny19zw*J<0x6kL(Hknm=q&3D#J)A-#`{@nynCEhTN6bgZf0&SW_?TXkwSdB znBRwO!ufB>R+25=Dy>KI%nCEg%G#ORn>(00iaB2=G3VRlk_Jbl7lqvyTo8&Rq2UJBz=I6zD|$b5-;u$cWX6SM#2;r`L{sTdkjsT)`d zWB=h|!ja}tV)naQ%zoE~hegjPd~`&mZbT`J{l! zedhgQ>c1~0{2;tDjeZ=_=HyQ!T9tetq6NtZQ&bEN#Y6t7Zf)6$&zIyEHiO>*+V~x# z?Kqx{l(-5ng^LLF<)vPBIe(V%f-~c zlP+tdhDn}qxR_}p%~zSPG5^^76EWu*Bc}dZx~!2JXZaho|Z=EL^LsZZi&}EI(8q5Dq zOt@CevUTS5<_+eJ=9k2rZ(m=3VC9<~?He+bd?9cj>Z5>V3<9X#UvzshIlz4DU~)2UAqsMx?p8vCDN`F3LR-x9N|gZVq=v(4w2 zyNEeoS26Y1&}EJN&yzgd!Nx~#GPMV7zBe5rYe`3f=n z4HdJ^kHQ1e=!l5AC6A1#ZSqwSHAucDq7EFj(9S77NdLLSOd6e5785@;UuXWA`35od zZWL2-ym^B8R`buzzYz2H*Ca9ZC(&h%{qL~+RP$ZtyTz=ZA*Sq1^KA1R^IY?MG3Q?( zrv5^@tg-(h%P%%B5i@_Om@oYwW+;@=uG&KO<(@v*vZ? z_2v!cjbhICqL}(y=(5KCnU9&7?_us~{=S&? zy~V7*P|SJygu6!1zu$c&&;0IU>J1Q+A7s8*%>2P(<_{6G|K;KS(bEl;Jo5*NsW)6q z{z@_VQDXAfh}rMj@UZB)grg)S=I6z%-ymkc7sAg(&-xc7&;0db@|(r1-xA)GMz=<^kEw-L@&1zX z`}=ZQS-iimh^haYnESgU{6SX#w8BWKF{t&(yd~@LPBHV}7L(s)-fi9^=6rj_Jlp+Z z>TMUZ-v?syABo9-A|`*pe9(MI%z6G5em{Ed@8^=I-iPL|#OzdFIyTt9|t9U<2 z`TcB?Ru=DPGcom>i@BdI!}WB&os9)w>NhXbH0vZo^2;F z^_!Z{6?2}h=5Auv_b~S~_Y!lS-r>&Cb4f0cJoUPZ*}t!t{143o#nitj+$Vb88PKNen=Mjwwz|JUu`#9WBj literal 14616 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

  • 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 literal 0 HcmV?d00001 diff --git a/resources/3rdparty/sylvan/models/collision.4.ldd b/resources/3rdparty/sylvan/models/collision.4.ldd new file mode 100644 index 0000000000000000000000000000000000000000..13ff031ad393556d7fce63cb8aa9f22664c747a1 GIT binary patch literal 8148 zcmb`L52%;r6~}*b&fPh4=GQ?czk5h=hbV5fQnF z6A=*+k&BaXAx&h2xDW{$A`uZSVzX#NB!-I?E@DL6^Z7pS@%_HX-zwT3c+Y#j=X=h1 zp65J&-rv20yFD2cP0Ki3C~V= zPQr5&o@e+=MW1gNbwR>I2`@}|k?^-0>krGD3X_=@?|!x~7oLX(A38C?h0XcU!zafF z&zoF<@$YA22k^juqdctGo#lx*Y~biG>|qQ4|CRr$^~rd?Ql77s=Z^Bw*Eh=(_UJ1x zJpOqsUz8^wL&u8&bH{!i+kuTSc+k^Gx*7$mP0>{|GhP|IH#uIVmasBi1F$U&~p6eDo?-+;M zqMxwkJfFo!-H7+PMZTz8^c|Rf$c^3Og8wuw?gny%e~iO(aqfcW_6Em%hz(oR?Ek^X zJR>(b``Ka~;rA^Y5BeA3>5H!t@zH1C|7N3~wozFs>20wA_+jDvH47*1nYQ8Y-{ma@ zFKKDr^7kja)G+EY;qNw9&sJyYU#94Hd_# zMn9spYnE44lKw^wGu|=7)O&rx8w{gvG)%sy3^V?mf3xxAXU{|fKOLZXZ`FH~B>A2( zp4gm!yYb}Pk?>B#sJn!>Ns@23v?{1~&OdHE`S&Kg&oJtK;XRV%J0PtJ)-UHjWIXu~ zCw#;(>QUi?lH@xktqS%-&Oc#1`A;N#(lF|?!p9}acS>3noVT3+wDIJBKH)QlQO^oL zCrQ5FN&Bhf?V@{L-zpBn$?2ToNku|EjEv=QZQOm497U`hUZC)Hj8Hk*on{grfIQ zkzQZ&UF~@EdT$$MKJOT2Kj!#r#-m;r{;MSOdskW&?6(|$!+6y9g#RYV{NI;W1*?(c zZyJyKq3{Qi%UNy0Ef#;Th+kP*4V5|Q~a`oA23YVa>L|WA$-Czx@ykFjQ|l_iWpkOP&AY z3S@s&JSxn2tawbA^HuSBVa`j%MQPdwF%_V06n>#$yWZMg4a1A|*ktk8HXCL>TZH4Q zb$dQPzvSC$@#K5PF!{C#Uw|qt{vT8kt2b6vNqXC1@$B!NhVl3Fi~nx%yCkXip5*W6 z75}~B$0b>heaU~k*rMToK>U75_SeDWe<+;G8~?-N4@t7VN0R?Uu|>oGnE0cTtpD-k z@4sj8KOufXlKpYg{867ZTww2%@E=i2>z)@Zb!Vd0PsM4AM}6KfK4%Q`eK;%pC#XKn zoC}M8y)XXU`1)xrcW1FO$7s~=oTXqtoi~j7qG94LBz#f$FHog*=TCkg0r@XkJnA0| z7udU;@D<_fP@mHJ-w*A5@QSipv~|`~86b4Dr(?*&j2_pFz$tTwrfdcv>^d<^@q2 zr)5Oi9St#0C~j@)KPt;?Wud+m&k?2`70(rBz7@|CW%qng5va;JWhbWkqZ-9<`qT zjj}R`r=*P+t^6%eo>6I=Wo_%RML5@k_@~8ek|cDiv}Miwl&pvajncipaP|8XyzN$| zdS7lgjGF&{uv7dFN%q^W{a zAW1zBCI1`A|A_d*lGOWX^1qqrwGJVd`D+d12~P z@ne0*hcTF<_UM8;tl5ePar! literal 0 HcmV?d00001 diff --git a/resources/3rdparty/sylvan/models/collision.5.9-rgs.bdd b/resources/3rdparty/sylvan/models/collision.5.9-rgs.bdd deleted file mode 100755 index 7c32c293ed278544cf3ace3a8584d05f3f2e6ff7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73760 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 ZhgV-u{9-}t&5z)@$Ls5*{s;FS`F|MQz$yR$ literal 0 HcmV?d00001 diff --git a/resources/3rdparty/sylvan/models/collision.5.ldd b/resources/3rdparty/sylvan/models/collision.5.ldd new file mode 100644 index 0000000000000000000000000000000000000000..e72ae4a9a4676c939519e2a2a4d9e9253af50aa9 GIT binary patch literal 8664 zcmb`L52%;b8OPu5oO5P&XXY*>p#?A)<8edOFzn-#m}{!t;|#6Vx8~v zm%fqjeJk~1-#9TIOCL^(N7JWpSzEDTZ)Yp(DS6a!{fGL?8n|Ed*tg>6TGrvVGEcF^ zI^X9neIwudR_c|$mAMNu54Ev-Uh)4oUpWt`QR2%wyw(%u=fsA~{g7L1rDy*Sf4R?6 zo0{!xWgR8%Nm~#4kMT1X-$dk>ISW6`#yriSvvktOR0I4y;`j|#f;eZILA-w#uSqP+#|wbiTTyY%%k->f>43*W=DjX9m>7^A)vc&_+YwbiR-^HX|4%5!N3)Otr%wNUQKbx>G5uZ^c)2m^3S;W6G-my={%Z46pFL9sytY7nU8n0RN$RaPKe@5~ zM)One&A^+CQ8$Y>NK$W$v@Ga%tlw{b>Te6Y-57O;c&jA!-jBWq#`K4!p-0 z^&Rm}N$TyDmIeDE*57Y_>K_Pv&=~cQc%LNo-j$XG?^~>Y#QfAh8u&e9)MMhqlGJ-& z+V3Re+rw$*Z!GnX*O6TQl|CnoQBN9oB>j}}n53T;|Gu_*^<1x~_LR#&QPP!qXN{?M zPW*@3`e40b7LR(~n0gnCsdrKQ$J$DVn!){hJ@``NRbdmWBM~fmaxl zx6+tetHl1T;ngiTnTek!_uuQF*7fmMps%kx@medv{#a*>y52ZpwIT3E@jq~-(fa$4 z`o03{Z?b&U&Bh6~G%e2!vim@^Un{672>XBzy! zp&9JQyn?y(H|chgF+pKckWeql`B?Z9`$U*k%n z_5P{vE1>>e%SXLuoUpnd_?yhN)mNX-cRz2qzYZp`F~k^ksCY=2rTzKRoF~JT#rvLD zFhb0J%{)@f{>t1bZg;+nk|zbG!6HVBAARWk`T4^Aby+?&#u}rJ6F>gYdVao8Z@lGG zZ-O!EMDY`Kz1H)Ed-d~z{nu^zoEMXfiTCq@_~+!GB1ylehIs#dK>YLa_ekQ8& z#na>k#tExe#FOg&*B2aV@U|_KHo1085S3qj^uJe@MXEx7GcOj?kIYNN+;8TkV(usN zt76uhIVou{f3G}3?fpJ+-WAP!%Vp(x<@^=mX8x7pX8u*;X8zUUI6wPojXcXF>F-); zeOgd6|9V-Q`8SB0`8SH2`QH>b^KTNz`I&FCJnJM8TcqWFH}mz&+RV32+|0LK+|0K_ z9OuLMwme%UdFVT(<>%SVmmF!}-!1SVI6wIVvLX(eA2q-Khh$|D?@H@WT2(duI3jD)kE7z)5AxrW=ddI-j!9cw-yasn zv-uK!9}(I$n3;cXeqhY+qvOV?19c@X@JabkNV4BfNyD4{{(BJD8Tn63^1KE@{4iTN zu5>#g5&x;q zCxbCLU+QoF^jEH!=bL|z-BlLPFY`Sy&nNSJG5yT^=eFy^xYK5SCb62vH4UC$hg!0^ zj#63q28FeZ_@Ux0b$sjdA-iWVF)PC@pQI7S?EjJC{<>aB)``^EsGslmFBbnD1L`L? literal 0 HcmV?d00001 diff --git a/resources/3rdparty/sylvan/models/collision.6.bdd b/resources/3rdparty/sylvan/models/collision.6.bdd new file mode 100644 index 0000000000000000000000000000000000000000..a781db6890df62374af59bf5a4ec0b4dbc55759b GIT binary patch literal 58532 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 literal 0 HcmV?d00001 diff --git a/resources/3rdparty/sylvan/models/collision.6.ldd b/resources/3rdparty/sylvan/models/collision.6.ldd new file mode 100644 index 0000000000000000000000000000000000000000..e7476b8a9cedfcc52a8c88fa72ee3a37ba17b90f GIT binary patch literal 10800 zcmb`M0jQ7r8OPsiW@mP;nVFfnC)cDinMpF)?Q|xYB_xF3= z-}|2b8C6x)f6^G0&W&S0Bdi7nJSgC%fCmTM9Pp5UhXy<>;Nby}2zX?`@s36Zz9rx> z0gnxMT)^W4ZVh;X!*3;hqQj_@0-hZ3lz^uS|G2icr!y-=W`>>nvwb7+91M8Vi80P> zo;TfmV!ZL3$z>S-{%mv*2mJTb!HWJM9TtZTY}Yfp+06fc<>^$*O+DXC$G6k*b~?V7 z4zBmZbQovXGYn5mtmo_U#96GL7p}om7UzZfsh210Tj?-tb8a@fPu9lU?0zhcJYIiO z-fCbz&}}}f4&yoZXS3^=U(EA5-sX*XKW~;V&Ko-rYs}8`opczs+RTQ%KbzHKapdv( zoAOoz_lq9q&3MjMhqu{v%og*!j<OucHJlEolPrO~z@R!-RP8rNBGwH{4 z2jFK2$1eqQVt+0JfB#MNyM)^ctv6(Qz%w02ohAH}+Um3AyY%&Py*affCuVo9!|dww z97dfV@B-nV)>fZAn_|9&A%0Q7i-mtyTUnPfK#g})RUM*#UOVxQDq}(l$n&>M#*fks zXS`f^ULRf|%=c2}R|>cG;Z?#deR#DnPeS&eCR|m&sL%OCy?%bFXRY&qU*|CEu|D7p z4x@hHF!?q*%>Bjun;lR7Edg(J81+NpO_Jo>CM^r*E9UQXJo$G7ywhRSUBcTX$+uft z7W8|}-{pAn?+tjL!>Id(_ehfOfV3=F-B;QeKS+u58%-`d9 z@*fZQgu|#Og^x*+@07GG=)ai%jN{3FHsEs(qn;N&ElIu$(z2kRWBy*plmAk{mmNmE zB79Mjd{?DqF*u!K{_Bn>|BZleI*fWt_?jg7ZcF=(ledZ)@wT`I>6RP7h2;=k$114;?1oBjMlI)@H}%zkr513-j^VVcr%`0?zzXS*h+b z$AdHfxvadso;ey;J-xtVoBbg9n!KBYG?3YCVr_TwJ(>Jo!GDZehIbG@p!EgULlG9 zYR98?;pE0z@oOY`KduY@>jT~({861@kjqq6%m+Q;$Hox9Dd5cx6Su`-`g5!BUwlfZ zJLhD@zfJ7L+NZHT{u=l7vHxs$Dd?w8hf#MpoM5#x;9bI(q0*p&GRW^MApag0kJ{xh zk$VH)C;V5aenz7+`E&p0_hJ4GrG(Lc`Th?okp9ZJTbO>y_>gdGA3iM1^PTx4!aT1T z9~I{L%Qz|ZI3^|o)E?o#)oi0T{pa^X*6W0eC+MWZ-0vyje?X=2YQ8)lnI+#D7mxL< z!{j?B{74dM!}$CC0RKzkdnH+q%fY`h`Pjh!s`x9Ctk<>R z@1KACZ-~Dx$$H)l{@uxD1OMCNZ%NXxcY=S9Ij1xJ_r%|oq(ANlfB*f7{{!)#NYXzK zgMV+b*}(r(@sA|wugAgvx;dva{!hg}k);1VbN;BGJDgzkOgMkP#OD=0KN)EG`|G)j zM}6TiJ}(_s_t8YvTh0o$(P+j$?^gqA!tWOOuSeg}%=aMW&-qZB945(Nhw*9-c!+RQ zeLZHd4COCS->bu1JVC=9#&tx%BZc3t^SfjXYXAEa{hjZ3w6c`_s709lA@gH|>DP?M z3YYz9oN(En#tZkiKedX<#ZffRuzmGe_RMC^?@#=7Kgq@8H`!s-DZ-=b`S7cm^EDAv z5AscO@tCJOj5k6(vL3U8zu#~0pDTWj zBHq~ z(myMLe{Ztcz<-tam6G(=>frD9C;ZonUn5EXt#ke?;(CV@tTqV$vR>cD=Mz3Z8EAQb z+UVj5+T<`kn;qtRdy8;;ogWWB8qN6U{pnXV(YQZNOg#5!gZbO$u7|qaVUlz@Ox%uu zcMAWyzFy<~liyc>>uwiM&>n{qthxf;D@Y&rN?2^o2XJfp?{&=sRo_4{ zg8E(@B%I%prJljEmU^0n>4%(eh;XTIsBo!om~g3YxG?LH<3|WH-@ZO}w~=C+B zKG&NsW~L-fzd%~<-*Wv#qyfKB{QHvF7D?-YN@Hj~)sp9_%US4;C4G_kua(>x9kQ}M zOC1l+oxMy}#B#@@cBUhJ<;cqYtaQAvDqAHh>S}4-NlU*yrX%<7T3O5dtrITuw_Z5T zANe+jStCi#52WS4y1{u&sL$`1L1*flgs2DVroK%1dwR3O@cw-W-YR~JB>U5c!T)ZZ zn-l)q#cz|O-#df9|9t}go#J;$(hs|W|3J-eBGSNrkNDk^^lMk}Zw~(Z#P5}4J@yCx z;lcl)_ydxxS9kCq9sCcAKP1U|9tr;Ag8wn`M8mSpT3bZ{B( zCN;lbvW=iqE+5v@4zpjL5&pQ&@5r3umH2bch4}Nr{#OkG?f=R4J-S@kSl>2j7Zt_& zW!x*w`eb}bnEB86vM}?N@xS`57vq7NNow_OI<6`blz;udCY*mS$sLtBlhOZ%{PV9Y p_H}B$tdIYm#D2?Nk5Xe*f)={{je}f-C?4 literal 0 HcmV?d00001 diff --git a/resources/3rdparty/sylvan/models/lifts.6.bdd b/resources/3rdparty/sylvan/models/lifts.6.bdd new file mode 100644 index 0000000000000000000000000000000000000000..a8bbabe1c5c36f450b3828a610cfad0d624be3ce GIT binary patch literal 394508 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
    in the values table. + */ +MDD lddmc_ref(MDD dd); + +/** + * Delete the MDD
    from the values table. + */ +void lddmc_deref(MDD dd); -/* Return the number of external references */ +/** + * Compute the number of values in the values table. + */ size_t lddmc_count_refs(void); -/* Mark MDD for "notify on dead" */ -#define lddmc_notify_ondead(mdd) llmsset_notify_ondead(nodes, mdd) +/** + * Call mtbdd_gc_mark_rec for every mtbdd you want to keep in your custom mark functions. + */ +VOID_TASK_DECL_1(lddmc_gc_mark_rec, MDD) +#define lddmc_gc_mark_rec(mdd) CALL(lddmc_gc_mark_rec, mdd) /* Sanity check - returns depth of MDD including 'true' terminal or 0 for empty set */ #ifndef NDEBUG @@ -233,54 +262,49 @@ void lddmc_serialize_totext(FILE *out); void lddmc_serialize_tofile(FILE *out); void lddmc_serialize_fromfile(FILE *in); -/* Infrastructure for internal markings */ -typedef struct lddmc_refs_internal -{ - size_t r_size, r_count; - size_t s_size, s_count; - MDD *results; - Task **spawns; -} *lddmc_refs_internal_t; - -extern DECLARE_THREAD_LOCAL(lddmc_refs_key, lddmc_refs_internal_t); - -static inline MDD -lddmc_refs_push(MDD ldd) -{ - LOCALIZE_THREAD_LOCAL(lddmc_refs_key, lddmc_refs_internal_t); - if (lddmc_refs_key->r_count >= lddmc_refs_key->r_size) { - lddmc_refs_key->r_size *= 2; - lddmc_refs_key->results = (MDD*)realloc(lddmc_refs_key->results, sizeof(MDD) * lddmc_refs_key->r_size); - } - lddmc_refs_key->results[lddmc_refs_key->r_count++] = ldd; - return ldd; -} +/** + * Infrastructure for internal references. + * Every thread has its own reference stacks. There are three stacks: pointer, values, tasks stack. + * The pointers stack stores pointers to LDD variables, manipulated with pushptr and popptr. + * The values stack stores LDD, manipulated with push and pop. + * The tasks stack stores Lace tasks (that return LDD), manipulated with spawn and sync. + * + * It is recommended to use the pointers stack for local variables and the tasks stack for tasks. + */ -static inline void -lddmc_refs_pop(int amount) -{ - LOCALIZE_THREAD_LOCAL(lddmc_refs_key, lddmc_refs_internal_t); - lddmc_refs_key->r_count-=amount; -} +/** + * Push a LDD variable to the pointer reference stack. + * During garbage collection the variable will be inspected and the contents will be marked. + */ +void lddmc_refs_pushptr(const MDD *ptr); -static inline void -lddmc_refs_spawn(Task *t) -{ - LOCALIZE_THREAD_LOCAL(lddmc_refs_key, lddmc_refs_internal_t); - if (lddmc_refs_key->s_count >= lddmc_refs_key->s_size) { - lddmc_refs_key->s_size *= 2; - lddmc_refs_key->spawns = (Task**)realloc(lddmc_refs_key->spawns, sizeof(Task*) * lddmc_refs_key->s_size); - } - lddmc_refs_key->spawns[lddmc_refs_key->s_count++] = t; -} +/** + * Pop the last LDD variables from the pointer reference stack. + */ +void lddmc_refs_popptr(size_t amount); -static inline MDD -lddmc_refs_sync(MDD result) -{ - LOCALIZE_THREAD_LOCAL(lddmc_refs_key, lddmc_refs_internal_t); - lddmc_refs_key->s_count--; - return result; -} +/** + * Push an LDD to the values reference stack. + * During garbage collection the references LDD will be marked. + */ +MDD lddmc_refs_push(MDD dd); + +/** + * Pop the last LDD from the values reference stack. + */ +void lddmc_refs_pop(long amount); + +/** + * Push a Task that returns an LDD to the tasks reference stack. + * Usage: lddmc_refs_spawn(SPAWN(function, ...)); + */ +void lddmc_refs_spawn(Task *t); + +/** + * Pop a Task from the task reference stack. + * Usage: MDD result = lddmc_refs_sync(SYNC(function)); + */ +MDD lddmc_refs_sync(MDD dd); #ifdef __cplusplus } diff --git a/resources/3rdparty/sylvan/src/sylvan_ldd_int.h b/resources/3rdparty/sylvan/src/sylvan_ldd_int.h index d748c7291..7cf65e3ba 100755 --- a/resources/3rdparty/sylvan/src/sylvan_ldd_int.h +++ b/resources/3rdparty/sylvan/src/sylvan_ldd_int.h @@ -1,6 +1,6 @@ /* * Copyright 2011-2016 Formal Methods and Tools, University of Twente - * Copyright 2016 Tom van Dijk, Johannes Kepler University Linz + * Copyright 2016-2017 Tom van Dijk, Johannes Kepler University Linz * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,24 +15,7 @@ * limitations under the License. */ -/*#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include -#include -#include -*/ +/* Do not include this file directly. Instead, include sylvan_int.h */ /** * Internals for LDDs @@ -51,7 +34,11 @@ typedef struct __attribute__((packed)) mddnode { uint64_t a, b; } * mddnode_t; // 16 bytes -#define LDD_GETNODE(mdd) ((mddnode_t)llmsset_index_to_ptr(nodes, mdd)) +static inline mddnode_t +LDD_GETNODE(MDD mdd) +{ + return ((mddnode_t)llmsset_index_to_ptr(nodes, mdd)); +} static inline uint32_t __attribute__((unused)) mddnode_getvalue(mddnode_t n) diff --git a/resources/3rdparty/sylvan/src/sylvan_mt.c b/resources/3rdparty/sylvan/src/sylvan_mt.c index 05f1443a2..543a81e98 100755 --- a/resources/3rdparty/sylvan/src/sylvan_mt.c +++ b/resources/3rdparty/sylvan/src/sylvan_mt.c @@ -15,16 +15,11 @@ * limitations under the License. */ -#include +#include // for llmsset*, nodes, sylvan_register_quit -#include #include -#include #include -#include -#include // for llmsset*, nodes, sylvan_register_quit - /** * Handling of custom leaves "registry" */ diff --git a/resources/3rdparty/sylvan/src/sylvan_mt.h b/resources/3rdparty/sylvan/src/sylvan_mt.h index 516b450af..280bc620b 100755 --- a/resources/3rdparty/sylvan/src/sylvan_mt.h +++ b/resources/3rdparty/sylvan/src/sylvan_mt.h @@ -19,13 +19,11 @@ * This file contains declarations for custom Multi-Terminal support. */ +/* Do not include this file directly. Instead, include sylvan.h */ + #ifndef SYLVAN_MT_H #define SYLVAN_MT_H -#include -#include -#include - #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ diff --git a/resources/3rdparty/sylvan/src/sylvan_mtbdd.c b/resources/3rdparty/sylvan/src/sylvan_mtbdd.c index a1a39fd28..1eef5fa19 100755 --- a/resources/3rdparty/sylvan/src/sylvan_mtbdd.c +++ b/resources/3rdparty/sylvan/src/sylvan_mtbdd.c @@ -1,6 +1,6 @@ /* * Copyright 2011-2016 Formal Methods and Tools, University of Twente - * Copyright 2016 Tom van Dijk, Johannes Kepler University Linz + * Copyright 2016-2017 Tom van Dijk, Johannes Kepler University Linz * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,26 +15,16 @@ * limitations under the License. */ -#include +#include -#include #include #include -#include -#include -#include -#include #include -#include -#include - #include #include #include -#define BDD MTBDD - /* Primitives */ int mtbdd_isleaf(MTBDD bdd) @@ -194,33 +184,77 @@ VOID_TASK_0(mtbdd_gc_mark_protected) } /* Infrastructure for internal markings */ +typedef struct mtbdd_refs_task +{ + Task *t; + void *f; +} *mtbdd_refs_task_t; + +typedef struct mtbdd_refs_internal +{ + const MTBDD **pbegin, **pend, **pcur; + MTBDD *rbegin, *rend, *rcur; + mtbdd_refs_task_t sbegin, send, scur; +} *mtbdd_refs_internal_t; + DECLARE_THREAD_LOCAL(mtbdd_refs_key, mtbdd_refs_internal_t); -VOID_TASK_0(mtbdd_refs_mark_task) +VOID_TASK_2(mtbdd_refs_mark_p_par, const MTBDD**, begin, size_t, count) { - LOCALIZE_THREAD_LOCAL(mtbdd_refs_key, mtbdd_refs_internal_t); - size_t i, j=0; - for (i=0; ir_count; i++) { - if (j >= 40) { - while (j--) SYNC(mtbdd_gc_mark_rec); - j=0; + if (count < 32) { + while (count) { + mtbdd_gc_mark_rec(**(begin++)); + count--; } - SPAWN(mtbdd_gc_mark_rec, mtbdd_refs_key->results[i]); - j++; - } - for (i=0; is_count; i++) { - Task *t = mtbdd_refs_key->spawns[i]; - if (!TASK_IS_STOLEN(t)) break; - if (TASK_IS_COMPLETED(t)) { - if (j >= 40) { - while (j--) SYNC(mtbdd_gc_mark_rec); - j=0; + } else { + SPAWN(mtbdd_refs_mark_p_par, begin, count / 2); + CALL(mtbdd_refs_mark_p_par, begin + (count / 2), count - count / 2); + SYNC(mtbdd_refs_mark_p_par); + } +} + +VOID_TASK_2(mtbdd_refs_mark_r_par, MTBDD*, begin, size_t, count) +{ + if (count < 32) { + while (count) { + mtbdd_gc_mark_rec(*begin++); + count--; + } + } else { + SPAWN(mtbdd_refs_mark_r_par, begin, count / 2); + CALL(mtbdd_refs_mark_r_par, begin + (count / 2), count - count / 2); + SYNC(mtbdd_refs_mark_r_par); + } +} + +VOID_TASK_2(mtbdd_refs_mark_s_par, mtbdd_refs_task_t, begin, size_t, count) +{ + if (count < 32) { + while (count > 0) { + Task *t = begin->t; + if (!TASK_IS_STOLEN(t)) return; + if (t->f == begin->f && TASK_IS_COMPLETED(t)) { + mtbdd_gc_mark_rec(*(MTBDD*)TASK_RESULT(t)); } - SPAWN(mtbdd_gc_mark_rec, *(BDD*)TASK_RESULT(t)); - j++; + begin += 1; + count -= 1; } + } else { + if (!TASK_IS_STOLEN(begin->t)) return; + SPAWN(mtbdd_refs_mark_s_par, begin, count / 2); + CALL(mtbdd_refs_mark_s_par, begin + (count / 2), count - count / 2); + SYNC(mtbdd_refs_mark_s_par); } - while (j--) SYNC(mtbdd_gc_mark_rec); +} + +VOID_TASK_0(mtbdd_refs_mark_task) +{ + LOCALIZE_THREAD_LOCAL(mtbdd_refs_key, mtbdd_refs_internal_t); + SPAWN(mtbdd_refs_mark_p_par, mtbdd_refs_key->pbegin, mtbdd_refs_key->pcur-mtbdd_refs_key->pbegin); + SPAWN(mtbdd_refs_mark_r_par, mtbdd_refs_key->rbegin, mtbdd_refs_key->rcur-mtbdd_refs_key->rbegin); + CALL(mtbdd_refs_mark_s_par, mtbdd_refs_key->sbegin, mtbdd_refs_key->scur-mtbdd_refs_key->sbegin); + SYNC(mtbdd_refs_mark_r_par); + SYNC(mtbdd_refs_mark_p_par); } VOID_TASK_0(mtbdd_refs_mark) @@ -231,12 +265,12 @@ VOID_TASK_0(mtbdd_refs_mark) VOID_TASK_0(mtbdd_refs_init_task) { mtbdd_refs_internal_t s = (mtbdd_refs_internal_t)malloc(sizeof(struct mtbdd_refs_internal)); - s->r_size = 128; - s->r_count = 0; - s->s_size = 128; - s->s_count = 0; - s->results = (BDD*)malloc(sizeof(BDD) * 128); - s->spawns = (Task**)malloc(sizeof(Task*) * 128); + s->pcur = s->pbegin = (const MTBDD**)malloc(sizeof(MTBDD*) * 1024); + s->pend = s->pbegin + 1024; + s->rcur = s->rbegin = (MTBDD*)malloc(sizeof(MTBDD) * 1024); + s->rend = s->rbegin + 1024; + s->scur = s->sbegin = (mtbdd_refs_task_t)malloc(sizeof(struct mtbdd_refs_task) * 1024); + s->send = s->sbegin + 1024; SET_THREAD_LOCAL(mtbdd_refs_key, s); } @@ -247,6 +281,84 @@ VOID_TASK_0(mtbdd_refs_init) sylvan_gc_add_mark(TASK(mtbdd_refs_mark)); } +void +mtbdd_refs_ptrs_up(mtbdd_refs_internal_t mtbdd_refs_key) +{ + size_t cur = mtbdd_refs_key->pcur - mtbdd_refs_key->pbegin; + size_t size = mtbdd_refs_key->pend - mtbdd_refs_key->pbegin; + mtbdd_refs_key->pbegin = (const MTBDD**)realloc(mtbdd_refs_key->pbegin, sizeof(MTBDD*) * size * 2); + mtbdd_refs_key->pcur = mtbdd_refs_key->pbegin + cur; + mtbdd_refs_key->pend = mtbdd_refs_key->pbegin + (size * 2); +} + +MTBDD __attribute__((noinline)) +mtbdd_refs_refs_up(mtbdd_refs_internal_t mtbdd_refs_key, MTBDD res) +{ + long size = mtbdd_refs_key->rend - mtbdd_refs_key->rbegin; + mtbdd_refs_key->rbegin = (MTBDD*)realloc(mtbdd_refs_key->rbegin, sizeof(MTBDD) * size * 2); + mtbdd_refs_key->rcur = mtbdd_refs_key->rbegin + size; + mtbdd_refs_key->rend = mtbdd_refs_key->rbegin + (size * 2); + return res; +} + +void __attribute__((noinline)) +mtbdd_refs_tasks_up(mtbdd_refs_internal_t mtbdd_refs_key) +{ + long size = mtbdd_refs_key->send - mtbdd_refs_key->sbegin; + mtbdd_refs_key->sbegin = (mtbdd_refs_task_t)realloc(mtbdd_refs_key->sbegin, sizeof(struct mtbdd_refs_task) * size * 2); + mtbdd_refs_key->scur = mtbdd_refs_key->sbegin + size; + mtbdd_refs_key->send = mtbdd_refs_key->sbegin + (size * 2); +} + +void __attribute__((unused)) +mtbdd_refs_pushptr(const MTBDD *ptr) +{ + LOCALIZE_THREAD_LOCAL(mtbdd_refs_key, mtbdd_refs_internal_t); + *mtbdd_refs_key->pcur++ = ptr; + if (mtbdd_refs_key->pcur == mtbdd_refs_key->pend) mtbdd_refs_ptrs_up(mtbdd_refs_key); +} + +void __attribute__((unused)) +mtbdd_refs_popptr(size_t amount) +{ + LOCALIZE_THREAD_LOCAL(mtbdd_refs_key, mtbdd_refs_internal_t); + mtbdd_refs_key->pcur -= amount; +} + +MTBDD __attribute__((unused)) +mtbdd_refs_push(MTBDD mtbdd) +{ + LOCALIZE_THREAD_LOCAL(mtbdd_refs_key, mtbdd_refs_internal_t); + *(mtbdd_refs_key->rcur++) = mtbdd; + if (mtbdd_refs_key->rcur == mtbdd_refs_key->rend) return mtbdd_refs_refs_up(mtbdd_refs_key, mtbdd); + else return mtbdd; +} + +void __attribute__((unused)) +mtbdd_refs_pop(long amount) +{ + LOCALIZE_THREAD_LOCAL(mtbdd_refs_key, mtbdd_refs_internal_t); + mtbdd_refs_key->rcur -= amount; +} + +void +mtbdd_refs_spawn(Task *t) +{ + LOCALIZE_THREAD_LOCAL(mtbdd_refs_key, mtbdd_refs_internal_t); + mtbdd_refs_key->scur->t = t; + mtbdd_refs_key->scur->f = t->f; + mtbdd_refs_key->scur += 1; + if (mtbdd_refs_key->scur == mtbdd_refs_key->send) mtbdd_refs_tasks_up(mtbdd_refs_key); +} + +MTBDD +mtbdd_refs_sync(MTBDD result) +{ + LOCALIZE_THREAD_LOCAL(mtbdd_refs_key, mtbdd_refs_internal_t); + mtbdd_refs_key->scur -= 1; + return result; +} + /** * Initialize and quit functions */ @@ -394,6 +506,12 @@ mtbdd_makemapnode(uint32_t var, MTBDD low, MTBDD high) return index; } +MTBDD +mtbdd_ithvar(uint32_t var) +{ + return mtbdd_makenode(var, mtbdd_false, mtbdd_true); +} + /* Operations */ /** @@ -449,31 +567,6 @@ mtbdd_fraction(int64_t nom, uint64_t denom) return mtbdd_makeleaf(2, (nom<<32)|denom); } -/** - * Create the cube of variables in arr. - */ -MTBDD -mtbdd_fromarray(uint32_t* arr, size_t length) -{ - if (length == 0) return mtbdd_true; - else if (length == 1) return mtbdd_makenode(*arr, mtbdd_false, mtbdd_true); - else return mtbdd_makenode(*arr, mtbdd_false, mtbdd_fromarray(arr+1, length-1)); -} - -/** - * Given a cube of variables, write each variable to arr. - * WARNING: arr must be sufficiently long! - */ -void -mtbdd_toarray(MTBDD set, uint32_t *arr) -{ - while (set != mtbdd_true) { - mtbddnode_t n = MTBDD_GETNODE(set); - *arr++ = mtbddnode_getvariable(n); - set = node_gethigh(set, n); - } -} - /** * Create a MTBDD cube representing the conjunction of variables in their positive or negative * form depending on whether the cube[idx] equals 0 (negative), 1 (positive) or 2 (any). @@ -538,10 +631,10 @@ TASK_IMPL_4(MTBDD, mtbdd_union_cube, MTBDD, mtbdd, MTBDD, vars, uint8_t*, cube, if (va < v) { MTBDD low = node_getlow(mtbdd, na); MTBDD high = node_gethigh(mtbdd, na); - SPAWN(mtbdd_union_cube, high, vars, cube, terminal); + mtbdd_refs_spawn(SPAWN(mtbdd_union_cube, high, vars, cube, terminal)); BDD new_low = mtbdd_union_cube(low, vars, cube, terminal); mtbdd_refs_push(new_low); - BDD new_high = SYNC(mtbdd_union_cube); + BDD new_high = mtbdd_refs_sync(SYNC(mtbdd_union_cube)); mtbdd_refs_pop(1); if (new_low != low || new_high != high) return mtbdd_makenode(va, new_low, new_high); else return mtbdd; @@ -563,10 +656,10 @@ TASK_IMPL_4(MTBDD, mtbdd_union_cube, MTBDD, mtbdd, MTBDD, vars, uint8_t*, cube, } case 2: { - SPAWN(mtbdd_union_cube, high, node_gethigh(vars, nv), cube+1, terminal); + mtbdd_refs_spawn(SPAWN(mtbdd_union_cube, high, node_gethigh(vars, nv), cube+1, terminal)); MTBDD new_low = mtbdd_union_cube(low, node_gethigh(vars, nv), cube+1, terminal); mtbdd_refs_push(new_low); - MTBDD new_high = SYNC(mtbdd_union_cube); + MTBDD new_high = mtbdd_refs_sync(SYNC(mtbdd_union_cube)); mtbdd_refs_pop(1); if (new_low != low || new_high != high) return mtbdd_makenode(v, new_low, new_high); return mtbdd; @@ -592,10 +685,10 @@ TASK_IMPL_4(MTBDD, mtbdd_union_cube, MTBDD, mtbdd, MTBDD, vars, uint8_t*, cube, } case 2: { - SPAWN(mtbdd_union_cube, mtbdd, node_gethigh(vars, nv), cube+1, terminal); + mtbdd_refs_spawn(SPAWN(mtbdd_union_cube, mtbdd, node_gethigh(vars, nv), cube+1, terminal)); MTBDD new_low = mtbdd_union_cube(mtbdd, node_gethigh(vars, nv), cube+1, terminal); mtbdd_refs_push(new_low); - MTBDD new_high = SYNC(mtbdd_union_cube); + MTBDD new_high = mtbdd_refs_sync(SYNC(mtbdd_union_cube)); mtbdd_refs_pop(1); return mtbdd_makenode(v, new_low, new_high); } @@ -1272,6 +1365,36 @@ TASK_IMPL_2(MTBDD, mtbdd_op_max, MTBDD*, pa, MTBDD*, pb) return mtbdd_invalid; } +TASK_IMPL_2(MTBDD, mtbdd_op_cmpl, MTBDD, a, size_t, k) +{ + // if a is false, then it is a partial function. Keep partial! + if (a == mtbdd_false) return mtbdd_false; + + // a != constant + mtbddnode_t na = MTBDD_GETNODE(a); + + if (mtbddnode_isleaf(na)) { + if (mtbddnode_gettype(na) == 0) { + int64_t v = mtbdd_getint64(a); + if (v == 0) return mtbdd_int64(1); + else return mtbdd_int64(0); + } else if (mtbddnode_gettype(na) == 1) { + double d = mtbdd_getdouble(a); + if (d == 0.0) return mtbdd_double(1.0); + else return mtbdd_double(0.0); + } else if (mtbddnode_gettype(na) == 2) { + uint64_t v = mtbddnode_getvalue(na); + if (v == 1) return mtbdd_fraction(1, 1); + else return mtbdd_fraction(0, 1); + } else { + assert(0); // failure + } + } + + return mtbdd_invalid; + (void)k; // unused variable +} + TASK_IMPL_2(MTBDD, mtbdd_op_negate, MTBDD, a, size_t, k) { // if a is false, then it is a partial function. Keep partial! @@ -2347,7 +2470,17 @@ TASK_IMPL_2(double, mtbdd_satcount, MTBDD, dd, size_t, nvars) { /* Trivial cases */ if (dd == mtbdd_false) return 0.0; - if (mtbdd_isleaf(dd)) return powl(2.0L, nvars); + + if (mtbdd_isleaf(dd)) { + // test if 0 + mtbddnode_t dd_node = MTBDD_GETNODE(dd); + if (dd != mtbdd_true) { + if (mtbddnode_gettype(dd_node) == 0 && mtbdd_getint64(dd) == 0) return 0.0; + else if (mtbddnode_gettype(dd_node) == 1 && mtbdd_getdouble(dd) == 0.0) return 0.0; + else if (mtbddnode_gettype(dd_node) == 2 && mtbdd_getvalue(dd) == 1) return 0.0; + } + return powl(2.0L, nvars); + } /* Perhaps execute garbage collection */ sylvan_gc_test(); @@ -2726,8 +2859,6 @@ mtbdd_leafcount_more(const MTBDD *mtbdds, size_t count) static size_t mtbdd_nodecount_mark(MTBDD mtbdd) { - if (mtbdd == mtbdd_true) return 0; // do not count true/false leaf - if (mtbdd == mtbdd_false) return 0; // do not count true/false leaf mtbddnode_t n = MTBDD_GETNODE(mtbdd); if (mtbddnode_getmark(n)) return 0; mtbddnode_setmark(n, 1); @@ -3258,11 +3389,107 @@ TASK_IMPL_3(int, mtbdd_reader_frombinary, FILE*, in, MTBDD*, dds, int, count) } /** - * Implementation of convenience functions for handling variable sets, i.e., cubes. + * Implementation of variable sets, i.e., cubes of (positive) variables. */ +/** + * Create a set of variables, represented as the conjunction of (positive) variables. + */ +MTBDD +mtbdd_set_from_array(uint32_t* arr, size_t length) +{ + if (length == 0) return mtbdd_true; + else if (length == 1) return mtbdd_makenode(*arr, mtbdd_false, mtbdd_true); + else return mtbdd_set_add(mtbdd_fromarray(arr+1, length-1), *arr); +} + +/** + * Write all variables in a variable set to the given array. + * The array must be sufficiently large. + */ +void +mtbdd_set_to_array(MTBDD set, uint32_t *arr) +{ + while (set != mtbdd_true) { + mtbddnode_t n = MTBDD_GETNODE(set); + *arr++ = mtbddnode_getvariable(n); + set = node_gethigh(set, n); + } +} + +/** + * Add the variable to . + */ +MTBDD +mtbdd_set_add(MTBDD set, uint32_t var) +{ + if (set == mtbdd_true) return mtbdd_makenode(var, mtbdd_false, mtbdd_true); + + mtbddnode_t set_node = MTBDD_GETNODE(set); + uint32_t set_var = mtbddnode_getvariable(set_node); + if (var < set_var) return mtbdd_makenode(var, mtbdd_false, set); + else if (set_var == var) return set; + else { + MTBDD sub = mtbddnode_followhigh(set, set_node); + MTBDD res = mtbdd_set_add(sub, var); + res = sub == res ? set : mtbdd_makenode(set_var, mtbdd_false, res); + return res; + } +} + +/** + * Remove the variable from . + */ +MTBDD +mtbdd_set_remove(MTBDD set, uint32_t var) +{ + if (set == mtbdd_true) return mtbdd_true; + + mtbddnode_t set_node = MTBDD_GETNODE(set); + uint32_t set_var = mtbddnode_getvariable(set_node); + if (var < set_var) return set; + else if (set_var == var) return mtbddnode_followhigh(set, set_node); + else { + MTBDD sub = mtbddnode_followhigh(set, set_node); + MTBDD res = mtbdd_set_remove(sub, var); + res = sub == res ? set : mtbdd_makenode(set_var, mtbdd_false, res); + return res; + } +} + +/** + * Remove variables in from . + */ +TASK_IMPL_2(MTBDD, mtbdd_set_minus, MTBDD, set1, MTBDD, set2) +{ + if (set1 == mtbdd_true) return mtbdd_true; + if (set2 == mtbdd_true) return set1; + if (set1 == set2) return mtbdd_true; + + mtbddnode_t set1_node = MTBDD_GETNODE(set1); + mtbddnode_t set2_node = MTBDD_GETNODE(set2); + uint32_t set1_var = mtbddnode_getvariable(set1_node); + uint32_t set2_var = mtbddnode_getvariable(set2_node); + + if (set1_var == set2_var) { + return mtbdd_set_minus(mtbddnode_followhigh(set1, set1_node), mtbddnode_followhigh(set2, set2_node)); + } + + if (set1_var > set2_var) { + return mtbdd_set_minus(set1, mtbddnode_followhigh(set2, set2_node)); + } + + /* set1_var < set2_var */ + MTBDD sub = mtbddnode_followhigh(set1, set1_node); + MTBDD res = mtbdd_set_minus(sub, set2); + return res == sub ? set1 : mtbdd_makenode(set1_var, mtbdd_false, res); +} + +/** + * Return 1 if contains , 0 otherwise. + */ int -mtbdd_set_in(MTBDD set, uint32_t var) +mtbdd_set_contains(MTBDD set, uint32_t var) { while (set != mtbdd_true) { mtbddnode_t n = MTBDD_GETNODE(set); @@ -3274,6 +3501,9 @@ mtbdd_set_in(MTBDD set, uint32_t var) return 0; } +/** + * Compute the number of variables in a given set of variables. + */ size_t mtbdd_set_count(MTBDD set) { @@ -3285,6 +3515,10 @@ mtbdd_set_count(MTBDD set) return result; } +/** + * Sanity check if the given MTBDD is a conjunction of positive variables, + * and if all nodes are marked in the nodes table (detects violations after garbage collection). + */ void mtbdd_test_isset(MTBDD set) { @@ -3336,7 +3570,9 @@ mtbdd_map_count(MTBDDMAP map) MTBDDMAP mtbdd_map_add(MTBDDMAP map, uint32_t key, MTBDD value) { - if (mtbdd_map_isempty(map)) return mtbdd_makemapnode(key, mtbdd_map_empty(), value); + if (mtbdd_map_isempty(map)) { + return mtbdd_makemapnode(key, mtbdd_map_empty(), value); + } mtbddnode_t n = MTBDD_GETNODE(map); uint32_t k = mtbddnode_getvariable(n); @@ -3357,7 +3593,7 @@ mtbdd_map_add(MTBDDMAP map, uint32_t key, MTBDD value) * Add all values from map2 to map1, overwrites if key already in map1. */ MTBDDMAP -mtbdd_map_addall(MTBDDMAP map1, MTBDDMAP map2) +mtbdd_map_update(MTBDDMAP map1, MTBDDMAP map2) { if (mtbdd_map_isempty(map1)) return map2; if (mtbdd_map_isempty(map2)) return map1; @@ -3369,13 +3605,13 @@ mtbdd_map_addall(MTBDDMAP map1, MTBDDMAP map2) MTBDDMAP result; if (k1 < k2) { - MTBDDMAP low = mtbdd_map_addall(node_getlow(map1, n1), map2); + MTBDDMAP low = mtbdd_map_update(node_getlow(map1, n1), map2); result = mtbdd_makemapnode(k1, low, node_gethigh(map1, n1)); } else if (k1 > k2) { - MTBDDMAP low = mtbdd_map_addall(map1, node_getlow(map2, n2)); + MTBDDMAP low = mtbdd_map_update(map1, node_getlow(map2, n2)); result = mtbdd_makemapnode(k2, low, node_gethigh(map2, n2)); } else { - MTBDDMAP low = mtbdd_map_addall(node_getlow(map1, n1), node_getlow(map2, n2)); + MTBDDMAP low = mtbdd_map_update(node_getlow(map1, n1), node_getlow(map2, n2)); result = mtbdd_makemapnode(k2, low, node_gethigh(map2, n2)); } diff --git a/resources/3rdparty/sylvan/src/sylvan_mtbdd.h b/resources/3rdparty/sylvan/src/sylvan_mtbdd.h index 6614fb870..41cb2528e 100755 --- a/resources/3rdparty/sylvan/src/sylvan_mtbdd.h +++ b/resources/3rdparty/sylvan/src/sylvan_mtbdd.h @@ -1,6 +1,6 @@ /* * Copyright 2011-2016 Formal Methods and Tools, University of Twente - * Copyright 2016 Tom van Dijk, Johannes Kepler University Linz + * Copyright 2016-2017 Tom van Dijk, Johannes Kepler University Linz * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -39,8 +39,6 @@ #ifndef SYLVAN_MTBDD_H #define SYLVAN_MTBDD_H -#include - #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ @@ -48,29 +46,38 @@ extern "C" { /** * An MTBDD is a 64-bit value. The low 40 bits are an index into the unique table. * The highest 1 bit is the complement edge, indicating negation. - * For Boolean MTBDDs, this means "not X", for Integer and Real MTBDDs, this means "-X". + * + * Currently, negation using complement edges is only implemented for Boolean MTBDDs. + * For Integer/Real MTBDDs, negation is not well-defined, as "-0" = "0". + * + * A MTBDD node has 24 bits for the variable. + * A set of MTBDD variables is represented by the MTBDD of the conjunction of these variables. + * A MTBDDMAP uses special "MAP" nodes in the MTBDD nodes table. */ typedef uint64_t MTBDD; -typedef uint64_t BDD; typedef MTBDD MTBDDMAP; /** - * mtbdd_true is only used in Boolean MTBDDs. mtbdd_false has multiple roles (see above). + * mtbdd_true and mtbdd_false are the Boolean leaves representing True and False. + * False is also used in Integer/Real/Fraction MTBDDs for partially defined functions. */ -#define mtbdd_complement ((MTBDD)0x8000000000000000LL) -#define mtbdd_false ((MTBDD)0) -#define mtbdd_true (mtbdd_false|mtbdd_complement) -#define mtbdd_invalid ((MTBDD)0xffffffffffffffffLL) +static const MTBDD mtbdd_complement = 0x8000000000000000LL; +static const MTBDD mtbdd_false = 0; +static const MTBDD mtbdd_true = 0x8000000000000000LL; +static const MTBDD mtbdd_invalid = 0xffffffffffffffffLL; -/* Compatibility */ -// #define BDD MTBDD -#define BDDMAP MTBDDMAP -#define BDDSET MTBDD -#define BDDVAR uint32_t -#define sylvan_complement mtbdd_complement -#define sylvan_false mtbdd_false -#define sylvan_true mtbdd_true -#define sylvan_invalid mtbdd_invalid +/** + * Definitions for backward compatibility... + * We now consider BDDs to be a special case of MTBDDs. + */ +typedef MTBDD BDD; +typedef MTBDDMAP BDDMAP; +typedef MTBDD BDDSET; +typedef uint32_t BDDVAR; +static const MTBDD sylvan_complement = 0x8000000000000000LL; +static const MTBDD sylvan_false = 0; +static const MTBDD sylvan_true = 0x8000000000000000LL; +static const MTBDD sylvan_invalid = 0xffffffffffffffffLL; #define sylvan_init_bdd sylvan_init_mtbdd #define sylvan_ref mtbdd_ref #define sylvan_deref mtbdd_deref @@ -79,7 +86,9 @@ typedef MTBDD MTBDDMAP; #define sylvan_unprotect mtbdd_unprotect #define sylvan_count_protected mtbdd_count_protected #define sylvan_gc_mark_rec mtbdd_gc_mark_rec -#define sylvan_notify_ondead mtbdd_notify_ondead +#define sylvan_ithvar mtbdd_ithvar +#define bdd_refs_pushptr mtbdd_refs_pushptr +#define bdd_refs_popptr mtbdd_refs_popptr #define bdd_refs_push mtbdd_refs_push #define bdd_refs_pop mtbdd_refs_pop #define bdd_refs_spawn mtbdd_refs_spawn @@ -147,59 +156,199 @@ static inline MTBDD mtbdd_makenode(uint32_t var, MTBDD low, MTBDD high) } /** - * Returns 1 is the MTBDD is a terminal, or 0 otherwise. + * Return 1 if the MTBDD is a terminal, or 0 otherwise. */ int mtbdd_isleaf(MTBDD mtbdd); -#define mtbdd_isnode(mtbdd) (mtbdd_isleaf(mtbdd) ? 0 : 1) /** - * For MTBDD terminals, returns and + * Return 1 if the MTBDD is an internal node, or 0 otherwise. + */ +static inline int mtbdd_isnode(MTBDD mtbdd) { return mtbdd_isleaf(mtbdd) ? 0 : 1; } + +/** + * Return the field of the given leaf. + */ +uint32_t mtbdd_gettype(MTBDD leaf); + +/** + * Return the field of the given leaf. */ -uint32_t mtbdd_gettype(MTBDD terminal); -uint64_t mtbdd_getvalue(MTBDD terminal); +uint64_t mtbdd_getvalue(MTBDD leaf); /** - * For internal MTBDD nodes, returns , and + * Return the variable field of the given internal node. */ uint32_t mtbdd_getvar(MTBDD node); + +/** + * Follow the low/false edge of the given internal node. + * Also takes complement edges into account. + */ MTBDD mtbdd_getlow(MTBDD node); + +/** + * Follow the high/true edge of the given internal node. + * Also takes complement edges into account. + */ MTBDD mtbdd_gethigh(MTBDD node); /** - * Compute the complement of the MTBDD. - * For Boolean MTBDDs, this means "not X". + * Obtain the complement of the MTBDD. + * This is only valid for Boolean MTBDDs or custom implementations that support it. */ -#define mtbdd_hascomp(dd) ((dd & mtbdd_complement) ? 1 : 0) -#define mtbdd_comp(dd) (dd ^ mtbdd_complement) -#define mtbdd_not(dd) (dd ^ mtbdd_complement) + +static inline int +mtbdd_hascomp(MTBDD dd) +{ + return (dd & mtbdd_complement) ? 1 : 0; +} + +static inline MTBDD +mtbdd_comp(MTBDD dd) +{ + return dd ^ mtbdd_complement; +} + +static inline MTBDD +mtbdd_not(MTBDD dd) +{ + return dd ^ mtbdd_complement; +} /** - * Create terminals representing int64_t (type 0), double (type 1), or fraction (type 2) values + * Create an Integer leaf with the given value. */ MTBDD mtbdd_int64(int64_t value); + +/** + * Create a Real leaf with the given value. + */ MTBDD mtbdd_double(double value); + +/** + * Create a Fraction leaf with the given numerator and denominator. + */ MTBDD mtbdd_fraction(int64_t numer, uint64_t denom); /** - * Get the value of a terminal (for Integer, Real and Fraction terminals, types 0, 1 and 2) + * Obtain the value of an Integer leaf. */ int64_t mtbdd_getint64(MTBDD terminal); + +/** + * Obtain the value of a Real leaf. + */ double mtbdd_getdouble(MTBDD terminal); -#define mtbdd_getnumer(terminal) ((int32_t)(mtbdd_getvalue(terminal)>>32)) -#define mtbdd_getdenom(terminal) ((uint32_t)(mtbdd_getvalue(terminal)&0xffffffff)) /** - * Create the conjunction of variables in arr, - * i.e. arr[0] \and arr[1] \and ... \and arr[length-1] - * The variable in arr must be ordered. + * Obtain the numerator of a Fraction leaf. + */ +static inline int32_t +mtbdd_getnumer(MTBDD terminal) +{ + return (int32_t)(mtbdd_getvalue(terminal)>>32); +} + +/** + * Obtain the denominator of a Fraction leaf. + */ +static inline uint32_t +mtbdd_getdenom(MTBDD terminal) +{ + return (uint32_t)(mtbdd_getvalue(terminal)&0xffffffff); +} + +/** + * Create the Boolean MTBDD representing "if then True else False" + */ +MTBDD mtbdd_ithvar(uint32_t var); + +/** + * Functions to manipulate sets of MTBDD variables. + * + * A set of variables is represented by a cube/conjunction of (positive) variables. + */ +static inline MTBDD +mtbdd_set_empty() +{ + return mtbdd_true; +} + +static inline int +mtbdd_set_isempty(MTBDD set) +{ + return (set == mtbdd_true) ? 1 : 0; +} + +static inline uint32_t +mtbdd_set_first(MTBDD set) +{ + return mtbdd_getvar(set); +} + +static inline MTBDD +mtbdd_set_next(MTBDD set) +{ + return mtbdd_gethigh(set); +} + +/** + * Create a set of variables, represented as the conjunction of (positive) variables. + */ +MTBDD mtbdd_set_from_array(uint32_t* arr, size_t length); + +/** + * Write all variables in a variable set to the given array. + * The array must be sufficiently large. + */ +void mtbdd_set_to_array(MTBDD set, uint32_t *arr); + +/** + * Compute the number of variables in a given set of variables. + */ +size_t mtbdd_set_count(MTBDD set); + +/** + * Compute the union of and + */ +#define mtbdd_set_union(set1, set2) sylvan_and(set1, set2) + +/** + * Remove variables in from */ -MTBDD mtbdd_fromarray(uint32_t* arr, size_t length); +#define mtbdd_set_minus(set1, set2) CALL(mtbdd_set_minus, set1, set2) +TASK_DECL_2(MTBDD, mtbdd_set_minus, MTBDD, MTBDD); /** - * Given a cube of variables, write each variable to arr. - * WARNING: arr must be sufficiently long! + * Return 1 if contains , 0 otherwise. */ -void mtbdd_toarray(MTBDD set, uint32_t *arr); +int mtbdd_set_contains(MTBDD set, uint32_t var); + +/** + * Add the variable to . + */ +MTBDD mtbdd_set_add(MTBDD set, uint32_t var); + +/** + * Remove the variable from . + */ +MTBDD mtbdd_set_remove(MTBDD set, uint32_t var); + +/** + * Sanity check if the given MTBDD is a conjunction of positive variables, + * and if all nodes are marked in the nodes table (detects violations after garbage collection). + */ +void mtbdd_test_isset(MTBDD set); + +/** + * Definitions for backwards compatibility + */ +#define mtbdd_fromarray mtbdd_set_from_array +#define mtbdd_set_fromarray mtbdd_set_from_array +#define mtbdd_set_toarray mtbdd_set_to_array +#define mtbdd_set_addall mtbdd_set_union +#define mtbdd_set_removeall mtbdd_set_minus +#define mtbdd_set_in mtbdd_set_contains /** * Create a MTBDD cube representing the conjunction of variables in their positive or negative @@ -292,6 +441,12 @@ TASK_DECL_3(MTBDD, mtbdd_abstract, MTBDD, MTBDD, mtbdd_abstract_op); */ TASK_DECL_2(MTBDD, mtbdd_op_negate, MTBDD, size_t); +/** + * Unary opeation Complement. + * Supported domains: Integer, Real, Fraction + */ +TASK_DECL_2(MTBDD, mtbdd_op_cmpl, MTBDD, size_t); + /** * Binary operation Plus (for MTBDDs of same type) * Only for MTBDDs where either all leaves are Boolean, or Integer, or Double. @@ -336,9 +491,17 @@ TASK_DECL_3(MTBDD, mtbdd_abstract_op_max, MTBDD, MTBDD, int); /** * Compute -a + * (negation, where 0 stays 0, and x into -x) */ #define mtbdd_negate(a) mtbdd_uapply(a, TASK(mtbdd_op_negate), 0) +/** + * Compute ~a for partial MTBDDs. + * Does not negate Boolean True/False. + * (complement, where 0 is turned into 1, and non-0 into 0) + */ +#define mtbdd_cmpl(a) mtbdd_uapply(a, TASK(mtbdd_op_cmpl), 0) + /** * Compute a + b */ @@ -776,34 +939,39 @@ MTBDD mtbdd_reader_get(uint64_t* arr, uint64_t identifier); */ void mtbdd_reader_end(uint64_t *arr); -/** - * MTBDDSET - * Just some convenience functions for handling sets of variables represented as a - * cube (conjunction) of positive literals - */ -#define mtbdd_set_empty() mtbdd_true -#define mtbdd_set_isempty(set) (set == mtbdd_true) -#define mtbdd_set_add(set, var) sylvan_and(set, sylvan_ithvar(var)) -#define mtbdd_set_addall(set, set2) sylvan_and(set, set2) -#define mtbdd_set_remove(set, var) sylvan_exists(set, var) -#define mtbdd_set_removeall(set, set2) sylvan_exists(set, set2) -#define mtbdd_set_first(set) sylvan_var(set) -#define mtbdd_set_next(set) sylvan_high(set) -#define mtbdd_set_fromarray(arr, count) mtbdd_fromarray(arr, count) -#define mtbdd_set_toarray(set, arr) mtbdd_toarray(set, arr) -int mtbdd_set_in(BDDSET set, BDDVAR var); -size_t mtbdd_set_count(BDDSET set); -void mtbdd_test_isset(BDDSET set); - /** * MTBDDMAP, maps uint32_t variables to MTBDDs. * A MTBDDMAP node has variable level, low edge going to the next MTBDDMAP, high edge to the mapped MTBDD. */ -#define mtbdd_map_empty() mtbdd_false -#define mtbdd_map_isempty(map) (map == mtbdd_false ? 1 : 0) -#define mtbdd_map_key(map) mtbdd_getvar(map) -#define mtbdd_map_value(map) mtbdd_gethigh(map) -#define mtbdd_map_next(map) mtbdd_getlow(map) +static inline MTBDD +mtbdd_map_empty() +{ + return mtbdd_false; +} + +static inline int +mtbdd_map_isempty(MTBDD map) +{ + return (map == mtbdd_false) ? 1 : 0; +} + +static inline uint32_t +mtbdd_map_key(MTBDD map) +{ + return mtbdd_getvar(map); +} + +static inline MTBDD +mtbdd_map_value(MTBDD map) +{ + return mtbdd_gethigh(map); +} + +static inline MTBDD +mtbdd_map_next(MTBDD map) +{ + return mtbdd_getlow(map); +} /** * Return 1 if the map contains the key, 0 otherwise. @@ -823,7 +991,8 @@ MTBDDMAP mtbdd_map_add(MTBDDMAP map, uint32_t key, MTBDD value); /** * Add all values from map2 to map1, overwrites if key already in map1. */ -MTBDDMAP mtbdd_map_addall(MTBDDMAP map1, MTBDDMAP map2); +MTBDDMAP mtbdd_map_update(MTBDDMAP map1, MTBDDMAP map2); +#define mtbdd_map_addall mtbdd_map_update /** * Remove the key from the map and return the result @@ -850,85 +1019,87 @@ VOID_TASK_DECL_1(mtbdd_gc_mark_rec, MTBDD); #define mtbdd_gc_mark_rec(mtbdd) CALL(mtbdd_gc_mark_rec, mtbdd) /** - * Default external referencing. During garbage collection, MTBDDs marked with mtbdd_ref will - * be kept in the forest. - * It is recommended to prefer mtbdd_protect and mtbdd_unprotect. + * Infrastructure for external references using a hash table. + * Two hash tables store external references: a pointers table and a values table. + * The pointers table stores pointers to MTBDD variables, manipulated with protect and unprotect. + * The values table stores MTBDDs, manipulated with ref and deref. + * We strongly recommend using the pointers table whenever possible. */ -MTBDD mtbdd_ref(MTBDD a); -void mtbdd_deref(MTBDD a); -size_t mtbdd_count_refs(void); /** - * Default external pointer referencing. During garbage collection, the pointers are followed and the MTBDD - * that they refer to are kept in the forest. + * Store the pointer in the pointers table. */ void mtbdd_protect(MTBDD* ptr); + +/** + * Delete the pointer from the pointers table. + */ void mtbdd_unprotect(MTBDD* ptr); + +/** + * Compute the number of pointers in the pointers table. + */ size_t mtbdd_count_protected(void); /** - * If mtbdd_set_ondead is set to a callback, then this function marks MTBDDs (terminals). - * When they are dead after the mark phase in garbage collection, the callback is called for marked MTBDDs. - * The ondead callback can either perform cleanup or resurrect dead terminals. + * Store the MTBDD
    in the values table. */ -#define mtbdd_notify_ondead(dd) llmsset_notify_ondead(nodes, dd&~mtbdd_complement) +MTBDD mtbdd_ref(MTBDD dd); /** - * Infrastructure for internal references (per-thread, e.g. during MTBDD operations) - * Use mtbdd_refs_push and mtbdd_refs_pop to put MTBDDs on a thread-local reference stack. - * Use mtbdd_refs_spawn and mtbdd_refs_sync around SPAWN and SYNC operations when the result - * of the spawned Task is a MTBDD that must be kept during garbage collection. + * Delete the MTBDD
    from the values table. */ -typedef struct mtbdd_refs_internal -{ - size_t r_size, r_count; - size_t s_size, s_count; - MTBDD *results; - Task **spawns; -} *mtbdd_refs_internal_t; +void mtbdd_deref(MTBDD dd); -extern DECLARE_THREAD_LOCAL(mtbdd_refs_key, mtbdd_refs_internal_t); +/** + * Compute the number of values in the values table. + */ +size_t mtbdd_count_refs(void); -static inline MTBDD -mtbdd_refs_push(MTBDD mtbdd) -{ - LOCALIZE_THREAD_LOCAL(mtbdd_refs_key, mtbdd_refs_internal_t); - if (mtbdd_refs_key->r_count >= mtbdd_refs_key->r_size) { - mtbdd_refs_key->r_size *= 2; - mtbdd_refs_key->results = (MTBDD*)realloc(mtbdd_refs_key->results, sizeof(MTBDD) * mtbdd_refs_key->r_size); - } - mtbdd_refs_key->results[mtbdd_refs_key->r_count++] = mtbdd; - return mtbdd; -} +/** + * Infrastructure for internal references. + * Every thread has its own reference stacks. There are three stacks: pointer, values, tasks stack. + * The pointers stack stores pointers to MTBDD variables, manipulated with pushptr and popptr. + * The values stack stores MTBDDs, manipulated with push and pop. + * The tasks stack stores Lace tasks (that return MTBDDs), manipulated with spawn and sync. + * + * It is recommended to use the pointers stack for local variables and the tasks stack for tasks. + */ -static inline void -mtbdd_refs_pop(int amount) -{ - LOCALIZE_THREAD_LOCAL(mtbdd_refs_key, mtbdd_refs_internal_t); - mtbdd_refs_key->r_count-=amount; -} +/** + * Push a MTBDD variable to the pointer reference stack. + * During garbage collection the variable will be inspected and the contents will be marked. + */ +void mtbdd_refs_pushptr(const MTBDD *ptr); -static inline void -mtbdd_refs_spawn(Task *t) -{ - LOCALIZE_THREAD_LOCAL(mtbdd_refs_key, mtbdd_refs_internal_t); - if (mtbdd_refs_key->s_count >= mtbdd_refs_key->s_size) { - mtbdd_refs_key->s_size *= 2; - mtbdd_refs_key->spawns = (Task**)realloc(mtbdd_refs_key->spawns, sizeof(Task*) * mtbdd_refs_key->s_size); - } - mtbdd_refs_key->spawns[mtbdd_refs_key->s_count++] = t; -} +/** + * Pop the last MTBDD variables from the pointer reference stack. + */ +void mtbdd_refs_popptr(size_t amount); -static inline MTBDD -mtbdd_refs_sync(MTBDD result) -{ - LOCALIZE_THREAD_LOCAL(mtbdd_refs_key, mtbdd_refs_internal_t); - mtbdd_refs_key->s_count--; - return result; -} +/** + * Push an MTBDD to the values reference stack. + * During garbage collection the references MTBDD will be marked. + */ +MTBDD mtbdd_refs_push(MTBDD mtbdd); + +/** + * Pop the last MTBDDs from the values reference stack. + */ +void mtbdd_refs_pop(long amount); + +/** + * Push a Task that returns an MTBDD to the tasks reference stack. + * Usage: mtbdd_refs_spawn(SPAWN(function, ...)); + */ +void mtbdd_refs_spawn(Task *t); + +/** + * Pop a Task from the task reference stack. + * Usage: MTBDD result = mtbdd_refs_sync(SYNC(function)); + */ +MTBDD mtbdd_refs_sync(MTBDD mtbdd); -#include "sylvan_mtbdd_storm.h" - #ifdef __cplusplus } #endif /* __cplusplus */ diff --git a/resources/3rdparty/sylvan/src/sylvan_mtbdd_int.h b/resources/3rdparty/sylvan/src/sylvan_mtbdd_int.h index 8c16eca43..4fefc47e4 100755 --- a/resources/3rdparty/sylvan/src/sylvan_mtbdd_int.h +++ b/resources/3rdparty/sylvan/src/sylvan_mtbdd_int.h @@ -1,6 +1,6 @@ /* * Copyright 2011-2016 Formal Methods and Tools, University of Twente - * Copyright 2016 Tom van Dijk, Johannes Kepler University Linz + * Copyright 2016-2017 Tom van Dijk, Johannes Kepler University Linz * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,6 +15,8 @@ * limitations under the License. */ +/* Do not include this file directly. Instead, include sylvan_int.h */ + /** * Internals for MTBDDs */ @@ -29,17 +31,48 @@ typedef struct __attribute__((packed)) mtbddnode { uint64_t a, b; } * mtbddnode_t; // 16 bytes -#define MTBDD_GETNODE(mtbdd) ((mtbddnode_t)llmsset_index_to_ptr(nodes, mtbdd&0x000000ffffffffff)) +static inline mtbddnode_t +MTBDD_GETNODE(MTBDD dd) +{ + return (mtbddnode_t)llmsset_index_to_ptr(nodes, dd&0x000000ffffffffff); +} /** * Complement handling macros */ -#define MTBDD_HASMARK(s) (s&mtbdd_complement?1:0) -#define MTBDD_TOGGLEMARK(s) (s^mtbdd_complement) -#define MTBDD_STRIPMARK(s) (s&~mtbdd_complement) -#define MTBDD_TRANSFERMARK(from, to) (to ^ (from & mtbdd_complement)) -// Equal under mark -#define MTBDD_EQUALM(a, b) ((((a)^(b))&(~mtbdd_complement))==0) + +static inline int +MTBDD_HASMARK(MTBDD dd) +{ + return (dd & mtbdd_complement) ? 1 : 0; +} + +static inline MTBDD +MTBDD_TOGGLEMARK(MTBDD dd) +{ + return dd ^ mtbdd_complement; +} + +static inline MTBDD +MTBDD_STRIPMARK(MTBDD dd) +{ + return dd & (~mtbdd_complement); +} + +static inline MTBDD +MTBDD_TRANSFERMARK(MTBDD from, MTBDD to) +{ + return (to ^ (from & mtbdd_complement)); +} + +/** + * Are two MTBDDs equal modulo mark? + */ +static inline int +MTBDD_EQUALM(MTBDD a, MTBDD b) +{ + return ((a^b)&(~mtbdd_complement)) ? 0 : 1; +} // Leaf: a = L=1, M, type; b = value // Node: a = L=0, C, M, high; b = variable, low diff --git a/resources/3rdparty/sylvan/src/sylvan_mtbdd_storm.c b/resources/3rdparty/sylvan/src/sylvan_mtbdd_storm.c index 76792affe..873c116f4 100644 --- a/resources/3rdparty/sylvan/src/sylvan_mtbdd_storm.c +++ b/resources/3rdparty/sylvan/src/sylvan_mtbdd_storm.c @@ -1,6 +1,9 @@ -#include +#include +#include +#include "sylvan_int.h" #include "storm_wrapper.h" +#include "sylvan_mtbdd_storm.h" // Import the types created for rational numbers and functions. extern uint32_t srn_type; @@ -554,11 +557,6 @@ int mtbdd_isnonzero(MTBDD dd) { return mtbdd_iszero(dd) ? 0 : 1; } -MTBDD -mtbdd_ithvar(uint32_t level) { - return mtbdd_makenode(level, mtbdd_false, mtbdd_true); -} - TASK_IMPL_2(MTBDD, mtbdd_op_complement, MTBDD, a, size_t, k) { // if a is false, then it is a partial function. Keep partial! diff --git a/resources/3rdparty/sylvan/src/sylvan_mtbdd_storm.h b/resources/3rdparty/sylvan/src/sylvan_mtbdd_storm.h index 33bfc9e4f..27066fe19 100644 --- a/resources/3rdparty/sylvan/src/sylvan_mtbdd_storm.h +++ b/resources/3rdparty/sylvan/src/sylvan_mtbdd_storm.h @@ -1,3 +1,7 @@ +#ifdef __cplusplus +extern "C" { +#endif + /** * Binary operation Divide (for MTBDDs of same type) * Only for MTBDDs where all leaves are Integer or Double. @@ -148,3 +152,7 @@ TASK_DECL_3(BDD, mtbdd_max_abstract_representative, MTBDD, MTBDD, uint32_t); TASK_DECL_3(MTBDD, mtbdd_uapply_nocache, MTBDD, mtbdd_uapply_op, size_t); #define mtbdd_uapply_nocache(dd, op, param) CALL(mtbdd_uapply_nocache, dd, op, param) + +#ifdef __cplusplus +} +#endif diff --git a/resources/3rdparty/sylvan/src/sylvan_obj_storm.cpp b/resources/3rdparty/sylvan/src/sylvan_obj_storm.cpp index 86d2afc85..5cbf27cc1 100644 --- a/resources/3rdparty/sylvan/src/sylvan_obj_storm.cpp +++ b/resources/3rdparty/sylvan/src/sylvan_obj_storm.cpp @@ -1,4 +1,5 @@ #include "storm_wrapper.h" +#include "sylvan_mtbdd_storm.h" #include "sylvan_storm_rational_number.h" #include "sylvan_storm_rational_function.h" diff --git a/resources/3rdparty/sylvan/src/sylvan_refs.c b/resources/3rdparty/sylvan/src/sylvan_refs.c index 54495d480..968721370 100755 --- a/resources/3rdparty/sylvan/src/sylvan_refs.c +++ b/resources/3rdparty/sylvan/src/sylvan_refs.c @@ -1,6 +1,6 @@ /* * Copyright 2011-2016 Formal Methods and Tools, University of Twente - * Copyright 2016 Tom van Dijk, Johannes Kepler University Linz + * Copyright 2016-2017 Tom van Dijk, Johannes Kepler University Linz * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,18 +15,13 @@ * limitations under the License. */ -#include +#include +#include -#include // for assert #include // for errno -#include // for fprintf -#include // for uint32_t etc -#include // for exit #include // for strerror #include // for mmap -#include - #ifndef compiler_barrier #define compiler_barrier() { asm volatile("" ::: "memory"); } #endif diff --git a/resources/3rdparty/sylvan/src/sylvan_refs.h b/resources/3rdparty/sylvan/src/sylvan_refs.h index fe02bb372..a0e20d90b 100755 --- a/resources/3rdparty/sylvan/src/sylvan_refs.h +++ b/resources/3rdparty/sylvan/src/sylvan_refs.h @@ -1,6 +1,6 @@ /* * Copyright 2011-2016 Formal Methods and Tools, University of Twente - * Copyright 2016 Tom van Dijk, Johannes Kepler University Linz + * Copyright 2016-2017 Tom van Dijk, Johannes Kepler University Linz * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,8 +15,7 @@ * limitations under the License. */ -#include -#include // for uint32_t etc +/* Do not include this file directly. Instead, include sylvan.h */ #ifndef REFS_INLINE_H #define REFS_INLINE_H diff --git a/resources/3rdparty/sylvan/src/sylvan_sl.c b/resources/3rdparty/sylvan/src/sylvan_sl.c index 39218f7b0..00045dfd9 100755 --- a/resources/3rdparty/sylvan/src/sylvan_sl.c +++ b/resources/3rdparty/sylvan/src/sylvan_sl.c @@ -1,5 +1,5 @@ /* - * Copyright 2016 Tom van Dijk, Johannes Kepler University Linz + * Copyright 2016-2017 Tom van Dijk, Johannes Kepler University Linz * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,13 +14,11 @@ * limitations under the License. */ -#include -#include -#include // for mmap, munmap, etc - #include #include +#include // for mmap, munmap, etc + /* A SL_DEPTH of 6 means 32 bytes per bucket, of 14 means 64 bytes per bucket. However, there is a very large performance drop with only 6 levels. */ #define SL_DEPTH 14 diff --git a/resources/3rdparty/sylvan/src/sylvan_sl.h b/resources/3rdparty/sylvan/src/sylvan_sl.h index dac0ec461..ad09c92a3 100755 --- a/resources/3rdparty/sylvan/src/sylvan_sl.h +++ b/resources/3rdparty/sylvan/src/sylvan_sl.h @@ -1,5 +1,5 @@ /* - * Copyright 2016 Tom van Dijk, Johannes Kepler University Linz + * Copyright 2016-2017 Tom van Dijk, Johannes Kepler University Linz * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/resources/3rdparty/sylvan/src/sylvan_stats.c b/resources/3rdparty/sylvan/src/sylvan_stats.c index 1c9f52c9b..fb60d2be4 100755 --- a/resources/3rdparty/sylvan/src/sylvan_stats.c +++ b/resources/3rdparty/sylvan/src/sylvan_stats.c @@ -1,6 +1,6 @@ /* * Copyright 2011-2016 Formal Methods and Tools, University of Twente - * Copyright 2016 Tom van Dijk, Johannes Kepler University Linz + * Copyright 2016-2017 Tom van Dijk, Johannes Kepler University Linz * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,14 +15,13 @@ * limitations under the License. */ +#include + #include // for errno #include // memset -#include #include #include -#include - #if SYLVAN_STATS #ifdef __ELF__ @@ -31,9 +30,6 @@ __thread sylvan_stats_t sylvan_stats; pthread_key_t sylvan_stats_key; #endif -#include -static hwloc_topology_t topo; - /** * Instructions for sylvan_stats_report */ @@ -127,11 +123,8 @@ VOID_TASK_0(sylvan_stats_reset_perthread) fprintf(stderr, "sylvan_stats: Unable to allocate memory: %s!\n", strerror(errno)); exit(1); } - // Ensure the stats object is on our pu - hwloc_obj_t pu = hwloc_get_obj_by_type(topo, HWLOC_OBJ_PU, LACE_WORKER_PU); - hwloc_set_area_membind(topo, sylvan_stats, sizeof(sylvan_stats_t), pu->cpuset, HWLOC_MEMBIND_BIND, 0); - pthread_setspecific(sylvan_stats_key, sylvan_stats); } + pthread_setspecific(sylvan_stats_key, sylvan_stats); for (int i=0; icounters[i] = 0; } @@ -146,8 +139,6 @@ VOID_TASK_IMPL_0(sylvan_stats_init) #ifndef __ELF__ pthread_key_create(&sylvan_stats_key, NULL); #endif - hwloc_topology_init(&topo); - hwloc_topology_load(topo); TOGETHER(sylvan_stats_reset_perthread); } diff --git a/resources/3rdparty/sylvan/src/sylvan_stats.h b/resources/3rdparty/sylvan/src/sylvan_stats.h index 792e67baa..16c227a6a 100755 --- a/resources/3rdparty/sylvan/src/sylvan_stats.h +++ b/resources/3rdparty/sylvan/src/sylvan_stats.h @@ -1,6 +1,6 @@ /* * Copyright 2011-2016 Formal Methods and Tools, University of Twente - * Copyright 2016 Tom van Dijk, Johannes Kepler University Linz + * Copyright 2016-2017 Tom van Dijk, Johannes Kepler University Linz * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,8 +15,7 @@ * limitations under the License. */ -#include -#include +/* Do not include this file directly. Instead, include sylvan.h */ #ifndef SYLVAN_STATS_H #define SYLVAN_STATS_H @@ -93,6 +92,8 @@ typedef enum { SYLVAN_COUNTER_COUNTER } Sylvan_Counters; +#undef OPCOUNTER + typedef enum { SYLVAN_GC, @@ -134,10 +135,8 @@ void sylvan_stats_report(FILE* target); #if SYLVAN_STATS #ifdef __MACH__ -#include #define getabstime() mach_absolute_time() #else -#include static uint64_t getabstime(void) { @@ -153,7 +152,6 @@ getabstime(void) #ifdef __ELF__ extern __thread sylvan_stats_t sylvan_stats; #else -#include extern pthread_key_t sylvan_stats_key; #endif diff --git a/resources/3rdparty/sylvan/src/sylvan_table.c b/resources/3rdparty/sylvan/src/sylvan_table.c index 83d30b842..bead5e6f8 100755 --- a/resources/3rdparty/sylvan/src/sylvan_table.c +++ b/resources/3rdparty/sylvan/src/sylvan_table.c @@ -1,6 +1,6 @@ /* * Copyright 2011-2016 Formal Methods and Tools, University of Twente - * Copyright 2016 Tom van Dijk, Johannes Kepler University Linz + * Copyright 2016-2017 Tom van Dijk, Johannes Kepler University Linz * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,23 +15,12 @@ * limitations under the License. */ -#include +#include #include // for errno -#include // for uint64_t etc -#include // for printf -#include #include // memset #include // for mmap -#include -#include -#include - -#include - -static hwloc_topology_t topo; - #ifndef MAP_ANONYMOUS #define MAP_ANONYMOUS MAP_ANON #endif @@ -120,15 +109,178 @@ is_custom_bucket(const llmsset_t dbs, uint64_t index) return (*ptr & mask) ? 1 : 0; } +/** + * This tricks the compiler into generating the bit-wise rotation instruction + */ +static uint64_t __attribute__((unused)) +rotr64 (uint64_t n, unsigned int c) +{ + return (n >> c) | (n << (64-c)); +} + +/** + * Pseudo-RNG for initializing the hashtab tables. + * Implementation of xorshift128+ by Vigna 2016, which is + * based on "Xorshift RNGs", Marsaglia 2003 + */ +static uint64_t __attribute__((unused)) +xor64(void) +{ + // For the initial state of s, we select two numbers: + // - the initializer of Marsaglia's original xorshift + // - the FNV-1a 64-bit offset basis + static uint64_t s[2] = {88172645463325252LLU, 14695981039346656037LLU}; + + uint64_t s1 = s[0]; + const uint64_t s0 = s[1]; + const uint64_t result = s0 + s1; + s[0] = s0; + s1 ^= s1 << 23; // a + s[1] = s1 ^ s0 ^ (s1 >> 18) ^ (s0 >> 5); // b, c + return result; +} + +/** + * The table for tabulation hashing + */ +static uint64_t hashtab[256*16]; + +/** + * Implementation of simple tabulation. + * Proposed by e.g. Thorup 2017 "Fast and Powerful Hashing using Tabulation" + */ +uint64_t +llmsset_tabhash(uint64_t a, uint64_t b, uint64_t seed) +{ + // we use the seed as base + uint64_t *t = hashtab; + for (int i=0; i<8; i++) { + seed ^= t[(uint8_t)a]; + t += 256; // next table + a >>= 8; + } + for (int i=0; i<8; i++) { + seed ^= t[(uint8_t)b]; + t += 256; // next table + b >>= 8; + } + return seed; +} + +/** + * Encoding of the prime 2^89-1 for CWhash + */ +static const uint64_t Prime89_0 = (((uint64_t)1)<<32)-1; +static const uint64_t Prime89_1 = (((uint64_t)1)<<32)-1; +static const uint64_t Prime89_2 = (((uint64_t)1)<<25)-1; +static const uint64_t Prime89_21 = (((uint64_t)1)<<57)-1; + +typedef uint64_t INT96[3]; + +/** + * Computes (r mod Prime89) mod 2ˆ64 + * (for CWhash, implementation by Thorup et al.) + */ +static uint64_t +Mod64Prime89(INT96 r) +{ + uint64_t r0, r1, r2; + r2 = r[2]; + r1 = r[1]; + r0 = r[0] + (r2>>25); + r2 &= Prime89_2; + return (r2 == Prime89_2 && r1 == Prime89_1 && r0 >= Prime89_0) ? (r0 - Prime89_0) : (r0 + (r1<<32)); +} + +/** + * Computes a 96-bit r such that r = ax+b (mod Prime89) + * (for CWhash, implementation by Thorup et al.) + */ +static void +MultAddPrime89(INT96 r, uint64_t x, const INT96 a, const INT96 b) +{ +#define LOW(x) ((x)&0xFFFFFFFF) +#define HIGH(x) ((x)>>32) + uint64_t x1, x0, c21, c20, c11, c10, c01, c00; + uint64_t d0, d1, d2, d3; + uint64_t s0, s1, carry; + x1 = HIGH(x); + x0 = LOW(x); + c21 = a[2]*x1; + c11 = a[1]*x1; + c01 = a[0]*x1; + c20 = a[2]*x0; + c10 = a[1]*x0; + c00 = a[0]*x0; + d0 = (c20>>25)+(c11>>25)+(c10>>57)+(c01>>57); + d1 = (c21<<7); + d2 = (c10&Prime89_21) + (c01&Prime89_21); + d3 = (c20&Prime89_2) + (c11&Prime89_2) + (c21>>57); + s0 = b[0] + LOW(c00) + LOW(d0) + LOW(d1); + r[0] = LOW(s0); + carry = HIGH(s0); + s1 = b[1] + HIGH(c00) + HIGH(d0) + HIGH(d1) + LOW(d2) + carry; + r[1] = LOW(s1); + carry = HIGH(s1); + r[2] = b[2] + HIGH(d2) + d3 + carry; +#undef LOW +#undef HIGH +} + +/** + * Compute Carter/Wegman k-independent hash + * Implementation by Thorup et al. + * - compute polynomial on prime field of 2^89-1 (10th Marsenne prime) + * - random coefficients from random.org + */ +static uint64_t +CWhash(uint64_t x) +{ + INT96 A = {0xcf90094b0ab9939e, 0x817f998697604ff3, 0x1a6e6f08b65440ea}; + INT96 B = {0xb989a05a5dcf57f1, 0x7c007611f28daee7, 0xd8bd809d68c26854}; + INT96 C = {0x1041070633a92679, 0xba9379fd71cd939d, 0x271793709e1cd781}; + INT96 D = {0x5c240a710b0c6beb, 0xc24ac3b68056ea1c, 0xd46c9c7f2adfaf71}; + INT96 E = {0xa527cea74b053a87, 0x69ba4a5e23f90577, 0x707b6e053c7741e7}; + INT96 F = {0xa6c0812cdbcdb982, 0x8cb0c8b73f701489, 0xee08c4dc1dbef243}; + INT96 G = {0xcf3ab0ec9d538853, 0x982a8457b6db03a9, 0x8659cf6b636c9d37}; + INT96 H = {0x905d5d14efefc0dd, 0x7e9870e018ead6a2, 0x47e2c9af0ea9325a}; + INT96 I = {0xc59351a9bf283b09, 0x4a39e35dbc280c7f, 0xc5f160732996be4f}; + INT96 J = {0x4d58e0b7a57ccddf, 0xc362a25c267d1db4, 0x7c79d2fcd89402b2}; + INT96 K = {0x62ac342c4393930c, 0xdb2fd2740ebef2a0, 0xc672fd5e72921377}; + INT96 L = {0xbdae267838862c6d, 0x0e0ee206fdbaf1d1, 0xc270e26fd8dfbae7}; + + INT96 r; + MultAddPrime89(r, x, A, B); + MultAddPrime89(r, x, r, C); + MultAddPrime89(r, x, r, D); + MultAddPrime89(r, x, r, E); + MultAddPrime89(r, x, r, F); + MultAddPrime89(r, x, r, G); + MultAddPrime89(r, x, r, H); + MultAddPrime89(r, x, r, I); + MultAddPrime89(r, x, r, J); + MultAddPrime89(r, x, r, K); + MultAddPrime89(r, x, r, L); + return Mod64Prime89(r); +} + +/** + * The well-known FNV-1a hash for 64 bits. + * Typical seed value (base offset) is 14695981039346656037LLU. + * + * NOTE: this particular hash is bad for certain nodes, resulting in + * early garbage collection and failure. We xor with shifted hash which + * suffices as a band-aid, but this is obviously not an ideal solution. + */ uint64_t -llmsset_hash(const uint64_t a, const uint64_t b, const uint64_t seed) +llmsset_fnvhash(const uint64_t a, const uint64_t b, const uint64_t seed) { // The FNV-1a hash for 64 bits const uint64_t prime = 1099511628211; uint64_t hash = seed; hash = (hash ^ a) * prime; hash = (hash ^ b) * prime; - return hash; + return hash ^ (hash>>32); } /* @@ -247,6 +399,7 @@ llmsset_rehash_bucket(const llmsset_t dbs, uint64_t d_idx) const int custom = is_custom_bucket(dbs, d_idx) ? 1 : 0; if (custom) hash_rehash = dbs->hash_cb(a, b, hash_rehash); else hash_rehash = llmsset_hash(a, b, hash_rehash); + const uint64_t step = (((hash_rehash >> 20) | 1) << 3); const uint64_t new_v = (hash_rehash & MASK_HASH) | d_idx; int i=0; @@ -271,8 +424,7 @@ llmsset_rehash_bucket(const llmsset_t dbs, uint64_t d_idx) } // go to next cache line in probe sequence - if (custom) hash_rehash = dbs->hash_cb(a, b, hash_rehash); - else hash_rehash = llmsset_hash(a, b, hash_rehash); + hash_rehash += step; #if LLMSSET_MASK last = idx = hash_rehash & dbs->mask; @@ -286,9 +438,6 @@ llmsset_rehash_bucket(const llmsset_t dbs, uint64_t d_idx) llmsset_t llmsset_create(size_t initial_size, size_t max_size) { - hwloc_topology_init(&topo); - hwloc_topology_load(topo); - llmsset_t dbs = NULL; if (posix_memalign((void**)&dbs, LINE_SIZE, sizeof(struct llmsset)) != 0) { fprintf(stderr, "llmsset_create: Unable to allocate memory!\n"); @@ -347,12 +496,6 @@ llmsset_create(size_t initial_size, size_t max_size) madvise(dbs->table, dbs->max_size * 8, MADV_RANDOM); #endif - hwloc_set_area_membind(topo, dbs->table, dbs->max_size * 8, hwloc_topology_get_allowed_cpuset(topo), HWLOC_MEMBIND_INTERLEAVE, 0); - hwloc_set_area_membind(topo, dbs->data, dbs->max_size * 16, hwloc_topology_get_allowed_cpuset(topo), HWLOC_MEMBIND_FIRSTTOUCH, 0); - hwloc_set_area_membind(topo, dbs->bitmap1, dbs->max_size / (512*8), hwloc_topology_get_allowed_cpuset(topo), HWLOC_MEMBIND_INTERLEAVE, 0); - hwloc_set_area_membind(topo, dbs->bitmap2, dbs->max_size / 8, hwloc_topology_get_allowed_cpuset(topo), HWLOC_MEMBIND_FIRSTTOUCH, 0); - hwloc_set_area_membind(topo, dbs->bitmapc, dbs->max_size / 8, hwloc_topology_get_allowed_cpuset(topo), HWLOC_MEMBIND_FIRSTTOUCH, 0); - // forbid first two positions (index 0 and 1) dbs->bitmap2[0] = 0xc000000000000000LL; @@ -369,6 +512,9 @@ llmsset_create(size_t initial_size, size_t max_size) INIT_THREAD_LOCAL(my_region); TOGETHER(llmsset_reset_region); + // initialize hashtab + for (int i=0; i<256*16; i++) hashtab[i] = CWhash(i); + return dbs; } @@ -392,13 +538,11 @@ VOID_TASK_IMPL_1(llmsset_clear, llmsset_t, dbs) VOID_TASK_IMPL_1(llmsset_clear_data, llmsset_t, dbs) { if (mmap(dbs->bitmap1, dbs->max_size / (512*8), PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED, -1, 0) != (void*)-1) { - hwloc_set_area_membind(topo, dbs->bitmap1, dbs->max_size / (512*8), hwloc_topology_get_allowed_cpuset(topo), HWLOC_MEMBIND_INTERLEAVE, 0); } else { memset(dbs->bitmap1, 0, dbs->max_size / (512*8)); } if (mmap(dbs->bitmap2, dbs->max_size / 8, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED, -1, 0) != (void*)-1) { - hwloc_set_area_membind(topo, dbs->bitmap2, dbs->max_size / 8, hwloc_topology_get_allowed_cpuset(topo), HWLOC_MEMBIND_FIRSTTOUCH, 0); } else { memset(dbs->bitmap2, 0, dbs->max_size / 8); } @@ -416,7 +560,6 @@ VOID_TASK_IMPL_1(llmsset_clear_hashes, llmsset_t, dbs) #if defined(madvise) && defined(MADV_RANDOM) madvise(dbs->table, sizeof(uint64_t[dbs->max_size]), MADV_RANDOM); #endif - hwloc_set_area_membind(topo, dbs->table, sizeof(uint64_t[dbs->max_size]), hwloc_topology_get_allowed_cpuset(topo), HWLOC_MEMBIND_INTERLEAVE, 0); } else { // reallocate failed... expensive fallback memset(dbs->table, 0, dbs->max_size * 8); diff --git a/resources/3rdparty/sylvan/src/sylvan_table.h b/resources/3rdparty/sylvan/src/sylvan_table.h index 8f4c0642e..fe25d6de3 100755 --- a/resources/3rdparty/sylvan/src/sylvan_table.h +++ b/resources/3rdparty/sylvan/src/sylvan_table.h @@ -1,6 +1,6 @@ /* * Copyright 2011-2016 Formal Methods and Tools, University of Twente - * Copyright 2016 Tom van Dijk, Johannes Kepler University Linz + * Copyright 2016-2017 Tom van Dijk, Johannes Kepler University Linz * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,24 +15,15 @@ * limitations under the License. */ -#include +/* Do not include this file directly. Instead, include sylvan_int.h */ -#include -#include - -#include - -#ifndef LLMSSET_H -#define LLMSSET_H +#ifndef SYLVAN_TABLE_H +#define SYLVAN_TABLE_H #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ -#ifndef LLMSSET_MASK -#define LLMSSET_MASK 0 // set to 1 to use bit mask instead of modulo -#endif - /** * Lockless hash table (set) to store 16-byte keys. * Each unique key is associated with a 42-bit number. @@ -210,9 +201,19 @@ VOID_TASK_DECL_1(llmsset_destroy_unmarked, llmsset_t); void llmsset_set_custom(const llmsset_t dbs, llmsset_hash_cb hash_cb, llmsset_equals_cb equals_cb, llmsset_create_cb create_cb, llmsset_destroy_cb destroy_cb); /** - * Default hashing function + * Default hashing functions. + */ +#define llmsset_hash llmsset_tabhash + +/** + * FNV-1a hash + */ +uint64_t llmsset_fnvhash(uint64_t a, uint64_t b, uint64_t seed); + +/** + * Twisted tabulation hash */ -uint64_t llmsset_hash(const uint64_t a, const uint64_t b, const uint64_t seed); +uint64_t llmsset_tabhash(uint64_t a, uint64_t b, uint64_t seed); #ifdef __cplusplus } diff --git a/resources/3rdparty/sylvan/src/sylvan_tls.h b/resources/3rdparty/sylvan/src/sylvan_tls.h index 80fdfe7e5..09958b2d3 100755 --- a/resources/3rdparty/sylvan/src/sylvan_tls.h +++ b/resources/3rdparty/sylvan/src/sylvan_tls.h @@ -5,7 +5,6 @@ * A platform independant wrapper around thread-local storage. On platforms that don't support * __thread variables (e.g. Mac OS X), we have to use the pthreads library for thread-local storage */ -#include #ifndef TLS_H #define TLS_H @@ -18,8 +17,6 @@ #else//!__ELF__ -#include - #define DECLARE_THREAD_LOCAL(name, type) pthread_key_t name##_KEY #define INIT_THREAD_LOCAL(name) \ diff --git a/src/storm/storage/dd/sylvan/InternalSylvanBdd.cpp b/src/storm/storage/dd/sylvan/InternalSylvanBdd.cpp index 83a7f26b7..cb3bd74b2 100644 --- a/src/storm/storage/dd/sylvan/InternalSylvanBdd.cpp +++ b/src/storm/storage/dd/sylvan/InternalSylvanBdd.cpp @@ -213,7 +213,7 @@ namespace storm { uint_fast64_t InternalBdd::getNodeCount() const { // We have to add one to also count the false-leaf, which is the only leaf appearing in BDDs. - return static_cast(this->sylvanBdd.NodeCount()) + 1; + return static_cast(this->sylvanBdd.NodeCount()); } bool InternalBdd::isOne() const { diff --git a/src/storm/utility/sylvan.h b/src/storm/utility/sylvan.h index c068b6ab9..5f351b946 100644 --- a/src/storm/utility/sylvan.h +++ b/src/storm/utility/sylvan.h @@ -13,6 +13,7 @@ #pragma GCC system_header // Only way to suppress some warnings atm. #include "sylvan_obj.hpp" +#include "sylvan_mtbdd_storm.h" #include "sylvan_storm_rational_number.h" #include "sylvan_storm_rational_function.h"

    o7(uZli2vPix~XbO&tRM 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%0DY@5+FRmNDEabVf( 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%0AsqHY=uXuaR^(x*0 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 literal 0 HcmV?d00001 diff --git a/resources/3rdparty/sylvan/models/lifts.7.bdd b/resources/3rdparty/sylvan/models/lifts.7.bdd new file mode 100644 index 0000000000000000000000000000000000000000..6eb3d0fd637bce8f6772ecd9a4d64b86b7762fca GIT binary patch literal 409772 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 z%0A$Cx9Cd^es_0l{O&=&@w+Fn@w*qX@w+!M_#I3gf|@iWY-+1XLy4^>4I@TPLfWU? zoTjD+YSPGbHP#$VuSQM6^wXMyX_;aL2-8>m+O$>yvuWSp7v(|xqHLsqUzC*;t4Z36 zSWVJi1T{%}k2nJ-YwrQv-eYJlf}3g{M}P1=E^KO>&#GC*_XM_s?}^kQ;CoWo)W-K@ zV&i)XvGF~X*!Vu27<^Bo4gufO!=^UAXAm3TM-YSWBdJ4-@0s+0?^)4CePe>zG;c^e zhb9)1x#?;wIP>Voe4g*^n9oN!J}bcjnrF7&Yk}{hvrA(QT13C`eGD=94$&SYlcnmg z0esd{X%CWoR$8Ny&+1rq1fR>x36&K1Tv2d28lT6}V|=b8Ha?FhHa=GogU{8}A>i|b zu&IsD6N!z_lZe6R$y@Oe>fYfp*dpuI=5WB$e-=&*{x2zt9cQ6}fC1`o5zR1I#rC(`B z9&S`{Ia(g}qQ~-NV`Ah6%tdKiYVu)%bFcV*8OiU$K3#wRd}<_4(2L*9X~w4+=VzMHq7S{+r)o9@hl!B-TVgb&;Y-hOSO}K6mL-2b^ERbm(P!q|MK}! z@?SnbO8%=ocwX{f?Mb|*`&~js*aiOgmQf!bN-&tF@jrwZ{12rL0sq6orZ)bE6C3{{ zh{69z>Ja096n)?y5@pxAH0et-Pu*qWq>*X`)Ow_}8)w{twPB`r&Yl zW8?o2`i=jw#Nhu>>JadMSZ%+6dS*1#d$=RJan+M1@}ZXU`H}HGkqyT8Bx2)xGO_VJ zg?LT(_v0%<@_o3B`e1xdqs#c7P7JX55idpFGY1<^)bC0I!Fio{3L1mBC&CBBbwY(u%XmE`IWC!kNq}2Q#`9>C zMX5KVwDDN+fJuf&O2H(=Bd1`pA|xqOTc00kl9%RdsZ<0CzK#k-q6gIV#l`;>o=YY0 z_}{NV(Wxg5#(tSN3I+H^h*FI2+4LIUbBMvW_8zn;R~5yh_8{Q9u?MMIdk~w?+KYg1?LFc$;9Gl- zz{a=sBF6VI>;t|-7SqUwsXD~qvzGGtQSww>^b!HG|F~7>XtjhM0oMWsjgA0IF=&4+scBicMaH$|g5L*}bQ@ zCeM)7!|)Df!>j}|Ps-22$djI>Uuj34Y*cVLTAuWx$MR%jV&qA0>JZD5KJ+0^Hi+>TE^44qz3ENPIh@1kprLsKPju<3wPaT3J zU`!*H*N4C8O6tk(y<3Ut*IO}tq7~Dxl2>2fvHZ}Mk<=FV&hkoOKUt;h-nmPphH}-DE|NiV_ z{2xGU{2xec{2xRN{tu=OG5*KU2mTLc*97 zDe|F~^7)bRJ&_H@_atKDdor={J%t#2Po*}#wP!0n{r$KwvCK61o=yzDXHbWLZ(F_^ zd>_d^;Cp8Dr3T-#9E0!Kj*ag*^c&xEiNW_g>JacfKWu8_`zT`LdjYZWy^z@WKAISO zCk4R9x2OW&pfJVwUP7KR-%-%jZYQZ~6Qv`7L|6=CwXQnww46 z(wvj{I-0Y~`f`2kz9yS#Rf13c{Td`c4y~G0_IH-Ez1Y!mc4K18+1|vKvwet>vyFWn za#s5}woxo+|51C8a-(`Lf}Gtp9Ms6!?HpUqZcjgQb_Z`q&hF^ga<(u1mb3kcEob`^ zTh8u8jGP@n9b!4VGkwU}4c&uu%C#%0Ct9B$8NaGw#;^7w#_w*tfbqLKG5FnsIt2Xg z88)@?tG$TTB<)2|leG7Ub3Wes{ODuRQ13-hlZK_M@i*v((+_?}csuwV>Dc%kML+o6 z$J@d0zK)IG(exX?`w<(z`x6_#2M~kb1F1ud--GA_zXwMfwbi6C#HdM)JqT)&_8w?z z?=iF&S=9YA1<%%=bDWI&V0^1)8Q&Aw#rW19#Q2`XcJMu!Is|-A37gvZo=R+dYcB%6 zwfA5f1$=AoQBY%#F@rwv-PnV?E;`nqBZ2Rk>C$|j<=FV1O+WaawnCX~}2#{0Mv=r^|I!Qs8rC!R2Ut9#4<)xr!KkuBHwFpC^P(ZSz-q5b)X9gBYLM zi-1qnXezl}YJ@p&5ifX~yTFE#i)!?E#sCjG|eS;WTY*~G@@ImF=eT% z=lRh_ZG2upjQM*ZbqGkksJ6AI1nCz?8#R*Sk{au02_;Q&XfI;PrM(D}F7_bmg{0Kp zqrL_=&{f#f^ICh5x!HIX%{hs$ra8Op7p_UStR9AUFdJqin0Zn@>p-6LEd5G5@?@ie z%Mp3f%Q5m~W5<>!z3E4ug!G|-JZbDREKjuGK%QuS5ho!}LN=#id9npD@?=Zu5X+OT z=(9Z8nizSq4Rwg+$+q+%PqvFTYRi-DiIFFaX~eQo^CG5pPsJbi3{hv4ZY>BJbDxpiGVrq%6*sf}QCU<=6^CJ|NMojC%!z(JLE8@oM{!XA` z8QrugFF>)?4`l@_rkY>{E3Q~LBfjzi_btuO{e1?;VQ?J`s6A=!op>*rIG9VF>=bPT zhvX?rhM_g?P}>9?Myw>FQNME?Q*0hb@Nh5>MMhHD#YYj_&G#X;!R(|J%)qLH5?(G|6d? zYMN?UbovL>v~~^KG44feKP;%W*_`UfcAHcEiEU2pL~L_v0I|)fory80cA*ZzoO)i^ z)HbJ{Pi%84YB1fD4i6abKyY~$5XFkaO%wow4!NgTJ?va4>rX|5S+!FW~6qMMC(IDIx=)wH-cnpD&5=BjBJoN8HI593uW3vBUK zZL|0)j>flYnvLfGUc<(7AhC_-AYvPjPQ`fal8T?DnE1vrnu77@=TLZ5YY{)~W1|P+ zH?Fp|Hf$0N|7-s~Ln(XDg1wlf>i=*4K0{-F`_9(S40mO2^``lb#C>SqnOJFfM`EOD zDgav!fA=MCY+jBYk>-kd{qysd%N4K z4$XTSTL`r`)&jI^4Zz+(weIfj??zTUo!^bs8X$m!@vpLJ{G+Tk_(z#*eD`W^;ut{A(=$|Bbca#<) z0=|z3n;Lu{>G)*{X3{jiXAv9Uvx&j?9O@9`doF#(_dH_oJ)b%Rd><7yHTYiO*!W&Z zzwv!EG5B6Y9dbtF6?Wr;w#DpYd@muk`M#7m=lgp9eTEf0F9iG^7dEx=yOP-WJ)YS3 zT}5pCt|m5qParmaPb3DvCsBuh-;=|p2EV5`Hh%T!#;-zS{A#LzUxYNp_(kX&{E8az zYn17ONKl#r0LoLWGfr*rdp&x}E@0wcIs*=9%@7JK{){{oor1JUY-L22qkh2@d3DlOey@@Sn`w&~sZbEE1yD72d z>}JH4vzrqmXSbjZLC$U&HZ^i~E60|zThnhjyAAQpJQUfM3OT!7jioGSx2NNVY}|n+ z5^u+JH4?Nh{m9vV-j1B@?^uan96M1VX9svYa&~9Omb3rUJxHfquaW}4+FKN#zOO$h zY-;ekt7GGLH~Nj=-HDCgJ&29pJ&BFqy@-w9y@|o^VCoR?J0xss@H^D8@jHxu;}_}Q z;8)WF{EnnQ#P}UWpYe<7Cw?(4Q>*}C`ifth)+%5&?He@->8>zNb-#fbZ#HQ-kjrj*agl=r_KPB)0iHlNfx@q7E^>XVYhV&mqQq zo=Y8Ke9xl~^Lc)>QDZ(I<@l@w3uvC%dOr%jkIpWQHE0q2#`iJA;5$TnkW7}U!v^qK zOZVSr(ApHAH-gV&qX)I|xt!SeTtRGn9!G3^t|T@-k0&-hR}q8H)zl&2^MtUe!RLvN zjn9+lH$G1$Ha<@w2A>v^#(O1&&iK?+0-p$Zit!0*#HUdvK0#@UHG+EaX_wH&af=k) zw7~PJjL!>*G58CqL%`=nwXHoRii7qZ(T@2WdyvEEv*Mz?$bQkW-iwURJ&0ORytMa- zZYXM1*wmw1dytXYcooeNiLa(PyzCdQNw=&XhIcR9;)Dju?5eJ#`53gz<`4ULXFVE2+o3V_H66c&xkDm-f%L-Z_7!oXn$Q z`)Fdt^pV7h>BET?(>1M_ezfsQOW&nx#PlPrm_C@-Q%oO7teD>4im7p~m>TDbt#PiH zf^)?(E_-7bb!@?Th~kQb-Z321Ncg^vuWaqzs%-2}({zuSf{Es9y{znmmf0VZr;~! z=?4E=mcjqQ*+m6;jAP^f5c-Y(vBcp2Q0fryubL110{Uh~L%oMPvKyDrkHB{=|Fpl) zFfHy#4Zf#4Hoj-jZ+ss?48HRbfQ@fGs`0IQ|j?b8Na8}Vf>y(Z2X>141Uj`4l#bu zq|f+0ix~W#O&x-IZp*gj^SRMRT_wQs-{ALrV(_ay8*K{sy|7s2X#8pqXZ(s<9Lyzt zL_97s-Uj&G{ zYJGlWHR+$V2kCGe!9VyNSa3NSzk}#8es?8)goh%#Q9WD(sNHFR+EMkTTL24jG8o(I>c(yDEe-QhI%h@b?f&T zj9=|Rz;9y@QZ;_WYt$s|MNlBL_lVn|fN1X#I0_8#!Sq=H8bgelbO?3Gtk&m8s7WD* z(m+k>84hajJ?lTIfV**YVT3|{P&ViqtEy}ofv$cK^)rL{=(M)H zIXUjGz5Z{0=bY|(`}D|u?%ws<`}1Dc!!uQvVO!^M0?OZdx^n#Z$Ei;#t)o zh^K0gxQ4A?)gTs6)gp*zRf8a&sy%T2W4s1PYa!SAjY~YtcB?6Lt4(w!!BA9FV2DMq zsO%B`Q~!O2o@G>3p6^A!@uW8~c+!VD#CW1Q!+6qy5jfE_g7Dp)n#XMXm7pJ89QWEJoI^jo|Y3X8Wwg?J-`MJ(Qr(QE7daboMNb&Pm+ z(XZVGN8oNE$df#j_55@D_Zd#|J|T#2Rl8YyRl8YyRl8YyPxBgx@0qw3HR5~LG2(m9 zvBmd1{TAN~#E9=R)FGd4)o!1PhWsAslLf1W`$VgDv-NzDT`j(sh%LUCi4or`)FBq% z7wJQMUy3$r#5cD6Cx}53D+{!qQ8q|c@hFldtny-CvUzNH*jtq)`XFLui$18JtSPdq z_5MhUBsE{7(jrRuIu#Zh_m>;V^^^a7&mZ5q2j%YRb0;_((wl~Hwh!?yVGY7zQ*P%0 zoE=Ub0?v*Io7y-#k{FzgnvRga{~aYGAB?ki(q)_-O$^SCp$;+5j-}5yJC4{mJDwPv z{aI^}E?&oS(!_+*(c-HdX7N=m@`KWOGR^N7JcZ`>TJMj(+xk7scUr%PK~9=pE}`Fd z2UIO$IcX*vEGMZ3K~9<-Cr~3Nh0LLW_|6RnHR3zZvBh^j{fO@ZZ%2F=I=1*OqTk}X zm>BV0LLFl9T}q$D_kLoF?*qh$?=tET%Sp@WLr$t{5acA)9%yRU7^+1MbUst0EB>hU z{>b93oMrJ|%`+_CYlto0Yl#u>b<`n<_xiA@5$_F-5%22#k?ldMMJ(Q`MJ(Q%cpb!B zwMSgj;=P4F#CvPBQ6t{l99z7%(~o%X@OH#|r(=uvF8VFryNMC+J=7r<@4fU{y!R1X zy!R6$-Uv|4h36i9W>ha}e2 zQyWi)5gSi#CpMl8Ck9VOP=^>#M$!kKaK2(LEevdJc;G#&IkkIgPVJtWQ`|E|bBlXc zbNb=dzt4a%R57qIYHrbAa~T&!|Cm$7;EmS%BM@D48U1Y`Xl}JYQlsY97Lw-lc<44`=hCy_eZJYeWm|onu7|C@r6fS zF}@hT{1`uOQ3UNV1l+1BTr^Z0zf2qdEcTC+Va_JT#ph6m;G%QGrpBP=ImY^ zU};=H)5xiL$9O{)(XjbmOl;#_LTuw*N^Il3pBUqPfI0-@wM$loux^dbTHpO4*=#Odlw7trMv~gXOIZ?SLZX=>4FrLcRsMf5lfxFpmYd|^D)_`)Pt${A~ z#~PSO9fCD5DQs$6fcFyH8jYMzH$^!HjTg7B#;c*(cxBpn^=LRrxiPMY ziz_z<#?7l7iSb5`R8Ail9doX{t(C(uzsil#&Bm)WZS$)fY2#InwDBrOV!X|gK(n*B--bTmBd7B(t&Qq>rg3A)QlCD;+^VC?^ zApZ~LLDh&cS;ud!6{9KgU|`kZM_S+C9*)+Zo(H4Hoiv^Zl>c7r@z#63$I|u{x$wQx zomM0GmChE|DC}SEyt_&5f7<#!_)l8(`IlPt{BP>2I)IkdZ#+cXUoY*V^%n~U?W^A! zVOdnaHNvv_cl{Q$ijjR@xt-U0lZPaV(MJR2y8a`r7=5^WK2pyQwd#NL4^fQJUv+#q z(O-2u@F@D;h=yFpztH+U!Sk(L`dq7?f3}>jz3Q2QwO3up@94sPzDJL)u&K`#Fp=ij zf+x{DQ?T|bB~S-(bSlDSl0$N*{{&Ci#5UM-(%?Ny&`y^H;L>)%^5K54HqJ}uz| zjZaI7!H;UM0zb->q8|G4#C66UNxCMo1BfrWipyx#Nbbs zW-|@&XG?N4QsB?lgwxUZvyC3(&vs(t&kkba&rV|F&n{x)&u(JyXAgA<__H@`YVc>D zWAJCcW8=>O`i(yaiH$#ph`|S>^&;Q{(tZ)}NBzQM{CSc-^zV)~YV<#xv9=TA&k_2; zpQE{53j8_d82rJuSH$>pf?ng#Nn-HlDe4gL=jpJijX$S|jX$S}!JiPBws@wp0sNSf zIy6$ixP?TQ2466QBH)V+vHGp79>w^AN3HmRsi^pZsjB#Lk=Xchi5PsjOdSHgTnU>R ze0k9^`0|ot`|*!c1RV#NQ0)FFs}6E-#CuYTb(zPv&o`o9`&)aZXTDZFiAJUrp6?`=Ggf1I{g+5T^hl{EsG$S7*Y}Ai-vA|(NusWHbqLdF@@@i ze1j=2vQ)3*g*WlIq%?h!=Hh}sMRSq9jxElGdd*w#g6ivBZ8mS0*6QWbJM_;jjqlQ& zllIg1vb#DrLiv?j_uRNjFB(__A-!o}4fF{I^_PBC!;SFyur+We{UF?EZwDdAWIT%6 z*1%X|tbuXVAxabpjHkjHxGUPIu?AGTh0oT&1p2TB?uj;Ptbs1awgx8BZ);!@G1frH zy)+&Ol>Z-2U%oYG-q+~@1AI|#4IlV2Eo|!FEMPiK%b7EXZI7Kv{6!v;%%ZYAb~dr) zOweCB)0Tz)4YGOkhahLp51Seb8q2OoEO>aZJgbC&BmDs^!3!sNvMj__Bfy@TIEZz?YTkm=DI6Rdj(btGyk3S>xFF zvX*}1%Q|B4Wj%EW9%@6jCsXSolH(C7Oir%^(-HY*qhs)AlVk8_vt#4W7W$1pTZxT7 z+lY-n+lh@oJBW=xJBdHv`kTJbwSJEQ{_J7D5b$Sj*wn_KeZ+6_kYqpAM>BvrKok5q zSX|=IA;;j4`h^euLsZLwKTm{%8vRwf!Bp*M{OM*p_;Z*##Q1ZBKJe#gv{8dU#~d4f zj?)kRobYz==cHrf&r|dpf1V}=e?m^t(4vs1^BFO>H|h$0Up;)kXR{J<0z0Y5Glq?+uKWANj$W8=pa`i&ni5*t5WB1XJbyV0f~ z-m2XaQoPkKu<=8+9QrrWMh$+voUv*-1 z>92V^g7Ug!3!a8z{J>Df4?IE<@FO1aG`+|#Hf72$F{O{PeF+aqH1&%Evk?TZy^rsk%Ac0^dh-P2 zy*@fIAHci5j*WNy=#NQ)*`L@ZaR4zU`8Mhh1Yuy<)Ci9Hg)f2vJeWT89};cU=sz^$ zLDUHLu#Ba^yW1Tb?}pQ_#h5ybpaSnkCYX-KyF2K)(E48JeCd2A&2t5hrg^s1X=*u> z=09TdUg=J&5&U*1M(O?5KX&%E)cy~x_o08Uvvg3b{-R*T>dy;SjJ{Q{Vsx`L=ih9_ z=o_sV{aN*OQT3ZB#prA0`ij+8ON`V44plKS4k=c~A;rizq!@jq6(ev$v5DJ)6Y3Wj z{X-NZ^jB=ciT-1`8ka_|mh}1qS#u)iK(qC7j-e7Ctr8=`Vb0 zW)K%XH8Y97#e<}oMRl|D-CaY-|5x@L8TkM{&2ypO8+AfKQ7G zs%j;rW#g05w()5x&jUY@?u&pQ*ba(-ALH@Mo7}@MpJUhycu&FH{9UwOT93(dW93loE9-|HcA07{z8hlW{@EL!eq!0bOqm3H< z4`=)YwejZ&G5B+oI^>mBEe-x0k2dP2fD<&0KPQR7pQorpz@MkXrZ)bZA~ybAzHoc>e3M?q6~3guQ7wE)+xN}ZZ=1mvZ2LvPmx~4I zx8Ii>8(%KdZ+y8z48GVSs=%`;sQ99(GQMCcE52Z=#TN^K;@{98g7~XnVB-ryt^S}u z5%j;B5kg<_Ym!?nBlr#B0MYXZ@J`~C9GpRWpk?h`bj3oHBVAS>8wmqTVqYbIfjn($;Tld`5JJ)jm5GdDjwg&pJ=`TuqUz)ZC`Vre2=udp} zS2f%i&I9D%TEnH@xt7BkxGNmgP3wKAt$_(_#~QeYIs|K=D{N|80~3jD4NM}ogmN!& z$(fxRuAMXQW4{pNi*l^-Wg7b!U#1fqUuF>Bto}qxd+aRwL%z|e;gaXiS~c9)qhqe+ zzEfcjYK|lENu(vm@8qWB#iv7Ts)!rX`S>xFFg7i}HMd=58 zS?~S97o;u8WFA#mC5-g;6aW1jq{Sk}AEi&@kJ7902kE!sk8X9-DU0@RwtnLb{_Nm+ zA>dC{!x?{6%Nc)E%Yi?t-Qs*~2&&xz$A$r{TFy3<{p_QSCUsT~_mN-l`%v)baJqdu zzEZ#un&8jT;!?gj=GgdioPO}cQc`9^uB>__Q+XyHe5 zmi-Gqnsda3AI*8WHysBz4P5mZ1lc<*4SZX+Vagu7c=!B%D+AT1W+o!{(w&bT;PDwF!P%XDM)myDv zta|S;)~^@g0`Gdd-+0%He&bzlV(_jHbqF4=Z`jnvyMDwmNih2p+awMk#w6cH9fBYX z44WFkQNQp-P=E*1hyFvNjT-%jW;}=*!5)^e6i9cwW8>X$`h&DEM-VrycWuVIJJ=51 zsotVZu|;zyvGHy+F?bhs8X@Z-&VR(_JvlpvM%IrzF-o=3zqa0o{;2gn^oO1EQ>^}} zV8!YO1uI71FIX}9UTe<3+ltY5S~2>Y*89-EF4t3x{;FWb>MsjctnkoPjNWa<=$+Q@ zy^Q3FkrqI@=13|m5XB~LgN0PZ$QGJnWD8L-`a~;6;CRGGmo$!#qr*5pp4d2k7cn?{ zH+2X&J0Wapa8~`oXB_XM5B(=b8#Ve*%J?2?CA8$Ym+DZmaqRFVd(!(*@TFSw;M3I3 zDKOAJE#dS&wD2jt4=sF3??Vfp()-ZDr}RD)e43rFCj~yuNjM$Br@4;7r+JQzPxI+F zJ}n?NJ}o2$pB7PvfKQ9VrUsvuI5s{lrT?wcct1_>>4D->VqWIh__UmUh-Bu&Iqt4-*@oRuUVZRuO|AtEof4k2PUagCFV_KI79m`p|!Uv{9q~hK$!zgHPCw zihxhr-I8PVYm(pDgKpsPShD8;n0&iH$$oh>btniNT*8)XK&CWS`MGvLRR1RE*f^9iT-p@lE$eQ4oJdLLT&l4|P0msC@O zFVE-eNr5jfI0j!XItE`ZIX1prrr-E-h1mG=A~E>#5_Jgp^1iUC!51qFD!!n6sQ9At z0(@!c4*_3Z4x8HeqVmP~g7QXuxk?=ZzFZ5N+W2yv*!XgT*!c1qG2;I^bqL~bAy)j= zFWQYS=qkRLOa0>(ppGtPLl9qLh-cZ3#fC>Hg2jj>A=$*EEmlp17IA9VRPAlm(ntcB z;v&1N5Ga|vU0SPTgHU#o5lw`;^Y1Nz29oOB2<4A&-E(vI9=&K_4TSWj@xws5-nKQ+ zmrb??`Vre2=ueC_Fn~G)YoMyLu?7Z48#UIzAjh@_2GehAU^hi9wJt)FB|y*s!UCU@*rK8v(}? z2SH(~HUokGvun6199QrOe7P^-bTqz9rN{U(joA1yo!Iy?gBX07NgV>d%nF+te3|VS ze3|3e_%fG%oQ(VjRd?tW2r->hMP>s!P58$%>$j!jHvw z&-inaKJz?Nbf@nKhpcq!jJSm z6#RH5U80c!Kc4Me5(fD3oMZ6gdB?_&7w9*BTqHJrTq1t2^*+@2afR*R$BWb<;Kxg0 zQyV{2%Yh$N4F`Uxc8hb2AFAPu9}W9}A5{$pe!LRrQX4;BB{qIsB{qIsBSyThQ->hl zH^Qbyywxv!#t+qU=x-EIf1DzDjYl-1OA+uRE^(S(EE*e<7FP`UQMTLS)1zrovLV-U zdrJ)`Cl<9$nLfbTl&U7flo#1qOoXONE(+cDRBs`ymGm?;)@+!KAb96}{ww}_Rm1$b zjd!=xA3=mUoY;aqf*2$iNgV=`+z~c4NThz@3(^4JNgw);jy7uaACvJYYVeNpAF zQ;bmHNT)7(c@;5I>`)j*eAH!m>+eIC#fkZE3uYF47tI+3-%WFR!4qgsYyEA()E+&$ zN|&neok+hXIdzEfMfZDYV0gM2b9M3H2W94fo8wf`_R7SeW-dOxoj+_=*yT*j(Zib znP$&|w`7y9$aU4Zu`m4>%y}^jLuvekoTpqDoeqcbAD8pmIZnAFZX=>5pxhCJhD&SE zI6aQtW~RP8j_1MFoN}IVS~(A#R<2`T3OIdFveMDkTo*mybV%grz{(jIZ+i_YmqjNV zuhy)MSGTh9Vkp%b#88zZ>=86xJ4I{IE~)WG&YQ^d2l9|axesfw%E_2t<+|u(Lo`>_<7nCmx7cUq0$S32Qq6vi)i-VLSpKW+Uz!JoA1=P$MD=ik&- zbpXw(--e2Yzh2r!(=Qeb8dtv!1pJk^cnse-xn(J_WEQ~z& zHYvl|^wC!RjL!#E{ruruKjWxwj?2CgMy{J*Xnn?czLo2qYt_%smh;Eae5PRSB^O$M zA8@|)F8W;QuRY~#!P-;K6x>Bq2~56D{Dr`eNi-0DTi!i-fFIRff_Cj8=&xJ}ejt5O z8XdupsWS4x_<=N7@k43S_%Va+#*dlAzs5t7SyW%h07`qw=S%&p7Vu+k>7w5b2h?5y ze#{RCwedrHiSa{w3HVX%CE!Q3mw+Ej{CXd1)z8Kc?Iqwx2?0(7KWux^i!j@MsuyM2 zON<}dQ^1dEF9AQQy~OyjlH)XftReYl3%3`LHw^~`xrIy!L?|kURvHouOnWG7}p<>x$Il43gU%7RUi%z|0fYTwpX@Jvx!a)sA_jPQX z?nl3Ix<9dTdH}I;`Zi+Y^gv?c^dRETxBd-%aC!*+A;#&U^nugEqK*1v1>8JUuq$grs~iFY^#r$;$9PTxsCI6d0iwQ!PS3>7#%*4x2p)jr`fPXD56ph@Z8 zjTGX4Z;XW+@t^D%@t@+@;(s6g7XPWl7XN9)7XRtQ7XKN<7XO*Vi2p3=5X66W*whyP zImC$nTuzm|{1e?I#l{#bTJ5PvMoB8WehZ4t!ZmUXp&wfqr(q=h0Df20q^A8Dls z;$PK37Jt=37h2!PpKpDhK36WKTIg)Ss)f#!&(mtb%~$0v6R9<*>*_^^!_eArGM zVtm*^pYdTQG5D~HIs|;!9X2)iu*Wg@u-EY$1?-~dV~&^dlcsH4ykv)j-Av z)k5HdYM;0!_@LS+u<=2)kny3LeZYs1!!!yRJD-7advlZq;(aVR8Y#s4c*5yu@jgM1 z#rq_&#rr8@i}%yS7VlHU7Vp!g zLQ(|rwk50$8X+xW@xDke8ZVXB>g3Dx$9T9wj`8q=9fLk`g5Q9gfs6)Ub&S%WEJwAIhJoNZ>XU^06m4EE)C8_-%TJP8XUT5i`Isc1-HTQpB zu;%<*1#8Z4w&whstvUZjYtH|yHRoS1*VEj8tzgalR}0phgA8(A{Yprw!#z}% zxVnh9@gV8MKky_Ph<~*v!H>zggB04QB%I!_6@E1L(O>w{OeHS-Xr>Vtex%>)-0XZE z)v%erRh}s$AHa`Uj=_)Fj*TC4=r?}MB{qJ{BL+X_Q->HokOr%qv5*-2K>92Kepq@{ ztzqd`dk@lc5#)>zq;VzgvYi8iAIqWxHTbdIaZ|v9G>sn*5rZEqs6)Vyhr^~eeyk)m zeykz}KUPzRfFIgZfG5(oH5zh_xut{C`!(<(OM1U%eAvJS6J1=2;*g*_F?4%AcKJ23J&1lFqCit+Yxb!zi zdmVrH|MLAB^2I?vAAC6E7<_olaZ|wKG>s2W5Q7g-Qip&K-CwXAlwczTd?MjgbC&q0_iQEp={;MCfBKux694qOotx$NI=U?4e@EbPusDur6Y7I!mVpYUi|jqX)IcUpdg?uUg1*+I{SA zIZZXt&CYL@*{VHlda}|HIcU@e{Hq$MY1Kd$|K&Ul@qaL# zo{otBLyj%}E9kfQKTM4HucQt^{8wdrA~kYa$Z8r}I-iM>8~I>ubf7jqDCZd;l%9+a zs)39Ts)25{{zmVct-sL&A2#{@zz0jKRgHt8R(#N-7#~D+@L{`O&-k!|e&d5`A@D)9 zPn-ij><*h6Nwunhz=x^^GCu5MfAC>Hb%^od0Da)Y!DypyS~ZaI;W4&@506uafDccE zO>KO5lGymrO$|Fgsv?{mb6_j&3Ni}wZkEZ)x$Bi>aFgm|m=VH*YU zR_&9}|M~qI;$7817Vpcv2I74su0`EcA*pH_g%0tykgBFZ$ctDbx>oTPbrA2S^j5qv z1j!K|v1n|FTK{+i$r>JQ@m(dh#d(c*W2u1%`41A@kdY5q^s0Trhota&*wjiI$)TmA zq>?a}R;Q*x7%J&$Nc(QVjZE;!`}8m#^u&MC?10Cbx206yV4|a?o3~_8h8cKfz5#})BruBZ!^2TtsgB&BMLySZt=`$YP zK@9SZq7DI%IG-`s_W114@X+JOojFgn#lLp;lGOgA*88;|>MR{J=l@i&=Kco-YtFx4 zu;%=GtvUa0YtFyZn)APD&G}!K>uK))s$k9iUly!6f3Nj^?cLU#zmvbSjnm!^BhUR? z1#8Yf)B5iA)2%uGROzpI|75|VX?~*MF*L#1vBg!r6COvu1#LVrIC~d$2snFp*woJac_LD>7GeAt|DI)V>d9D@&A9UC9E(Qka%PHcSGK@2|Zqz(Zec7;t1KJ0dEeAq+3 z@nJ79_^^*U1bo;ZHns6VQ)ztAR2v@<3i07F>Ja0@-|AG*V)1|JSP z1|N<%wtR7vehngZP#!?MCneZO0iQ@XyrSwi~kj3i~ozn7XO!skq>O!ul5U-2Nr*n4~oB)75c2)&>w>MzZ^C-;{S?c#2;l% z5yby$M#rc@(rcwv`QUoS>!^+FH;DJ~kVG}+-d1giMP!uIV#AP%>=I=Q-dRjgyZY@i zsIL!_J)vS+@VG9Gz>ja;0#PRd<5ZRow|r z4`ja(aC%VK)W+$-#K!3%#K!5N#NhNW>JV@`dIo4^H3V?cnq% z$HwV9={HV~CN@rwAqJ<%QipsjjGzAR$^5))pmt8Xw+yL@|77|t{!@r8{`V1E{HGEl z{?n*K5dZ06QzQN}93%cS9b5co(QomeO>FU>LyY*(r4F(9&!Z3VpC4`1i2nk|7XO9x zBmRrL9r0i6*y6v0evAK7VvGO%#EAa`)FBrCW%Run4Y?NjXzTqN7QSkq=!QjJ)j&uf zRSkp$voiWpBd4v(cp^1&TF7b|2RfgLlKV%k_iI0l-ud;u@nJoij1L=#jSs4Uzz5Yn zY@>h=8d{8X}KB)F#8wGq&?URr;jH(6#AG)KB z8hi*jOhY%3r}G&ox2N}OCEn@%T8VdhzgFU%-mjH-r}t}!_fzSDjTGYjbiRQU;(f|7 z;(gk&#rq8X7Vopf7VmS!i1&Hw5R3N(`VjADqKz8ye%7(Y`#Jg%@8`W8@qWRv#rq=t z7Vk^M7Vpc%A8);1`xu=`UZi?61E`m1BHmREgm|m=iEdc`s(k_@-c=2RcsJ2Tjd;JD z@eyi}@0EQW+Mn5c^|JMda;A?s5dcq)Q36*Jn9=ZwehGQF?bZxp9Xj|ARN@j zBh@?L(Liqpk3t5~Fdhvi29JhNhZv8B(gz+5i#BTG(e1>>qv6Eh(Fp1g@MvV%)R^Eq z9AolFIYw|epRKvB=Q#JT=KWW`&Mf-87|q$xsMFEzV*itoUjh~V)RhW_(Y)m_mYpdek<}= z+P)$ezE`@_Y6QR1+2T??|K(Oa|EH~b{!et44t;q1Qo*2I5B>%VbS&~4)fQd-R#3G5 zV(ALnSHBg+vZ#J5h-LHd`mH!mqbOGRyrR#Z$)(SricR2;hLP*~kF;X+;afk0wm-AR z6%-@%R~;YD50x0{v+Entkn8vtT7S#>d@Gke*Q)2AE$3^mdZu9QRTo-+Z*aaxkFL_C z`f_d}{bx(#B${Um)?THADqn{$xkodF2Kd5U(Gl97dekuE8Xa&h5PGo9YTr)CB* z_%xF`_zFJFN;n;Vy#Vc5#wYDrzgF6{XMLey)%Bk*^}Jd>*V?N-Tl#CS`gp~G_4fwGr={!zK2>`a_)(@5?cj&{#r4oXM0*wbYmW*i`bW8-y~OyWy$XEN9u@t; zrhx!u&Iqdhls%kr1c`;1JZsG@In2;WBhrNKJ@R7Hfr=goUyhO zxkijhxK15{NxBg>H74^l$2Qro({FsyrNI~6vIv5SAr&#cXz0clO$A7T zDJlZKUYFh(Ci7i0Gh!McssY4Lp;bBuN@X0ZP z3d9(hU^;?8cQ^*Y)GvJKA95!R^dB7#YV;qI@hECr17nG?2F6i`U=4(fr-3zaS2(Dj zZM~DVH86qgSOfP^hn)Y9ui>VoYd2Eh%YAV#YU7J?tnpz`i(!EiNT*O z)FI%{*08CKKii0nKii3oKRbwxKRbz$Z+20KAm8i`o7(uZhuHYDm-u7VSIXK@_R}9? z{5e1$_;WDYsF6PoIR+opFMQ}9qFN69p9lvv`m1(>soL+2(%4NC{D~S)EykZCbbvoc z)sPS1&oRfwpX2m{KPS8${5k2^`12I~#-FE&!Jm**G_)w>>3l}a?Txw?el)sN;YXue zfgczGrO^@mzz~ZVKlCWZ4?Jqc4@^bH4^0*LfhjBkeq1c5;>RWWjUShZ!H+A{A#b*R zk7WFKiG2|7s)j?ns~QgRR=>EO@k6y7`Zv)=jsB{|V5*ige!RkVJlw0)A;yoZ^kGu2 zMH@9H?Yd**#|`>1`LB69g7dm#Df4?IE<@FO1aG`+|#Hf72$m{Q53JT6H# zkC^(ZCR1n@Re#c=9}Ikw{X!O0f6Abm?9K?nA%vt}ihjz8`f6CaHhe)HaC&h%w2xQHLN11H-09 zaMUk+5ftFT^r8QdXro5|p&1XNMzDuvECt@(?$~%YoPI6F)L{e_csDY^bTr=GLC=NO z`_S{H^PM!$6+D{e*;1#ePQu^=AcZ&cEKOrN7pS(N{}<#mYFOSb;-TjKCqqCQdUB zDMsK#6(ev$v5EfRg!%;LLKG(?uBw(sLK`0)sFC>Ya@-Vf zH%%qX4?PJ<=7JQMEWfePa=Miha~q>ZOZ`s=}8lO$&&Uu@J0UcqJ3)E z)M%fUaC#qF_>|s<7Cxo-p@mP)OrH0xbTW?3ESfhv-`zEY{H^dD8Tnv*noF1QX&y27 zG@m*Id|D7Twee{ovGECMS2<}hbqM%m>AK2EOW6nfK)NpieqcK&0)D7pc#KcW=|leq zqm3H?1b*>?cM(IzSx){u~UO+VasMV({TH z>JaeZ@vy1E2lWe|@#jhU(7!v{sL}s$#!pZie~u7?KS!xUUTM|R;Lq`BqizZ~LDTqi zk{JAXiaG@Rc{*%rWA+hyTPs;LWK(yO?_ zm-Jq=@Fi{EH(P&u48CC7FJgSTNU!nb5;6F4nK}e~xe_+D@kNhne9=^ZFE&N`Y=$W; zVtm0=i!T-e#lI=N6@T>$pYa8uR)0{S2>5a}BZR)<%Qa$jzD^y2i`)pC8YjKxxGCUu znl@Nb5re}mi{N2F;UYE}8oKdCQ-Mjuk}3keU!+C)GTWh$~JJ)hp19ydkx@o-+wKXt- z?N|f%P={a*bcIcAYhWU=t$|6zN+dM$->R0J*{R{$IrF~MJspiN%CW{5)pEv{={&>u zGK2VL=R0j8?Xk0xm5$#iU^Y$5nRAH0UVS9hzr!(){*bSRk!v|y(5mII;8nXtHzWkr zZh z557F??M_Xl6rI5xf@y;OWr`T<|odw=i+X-hJhN94>9)pA=ppBa-I z`DSBupf>(&A~yagy&8XTsfs_k)y-;~7k{?1Ux@K%2YtpL)pFpEYPabBwbuJkxHOfmY`R*Zhs ziqQ|tMHHidDp)c4LBWdE_X}36zSo-b@3vy}ozh>i`kR6^=YQRLANp6V82x4GuUO%s zs~El8iqSi*_n}5|#YhVvU2`NA7KmaKx4}ZHVq^yXO7BAppVIr#!l(2;wD2jt4+WoQ=j%y;dC_q?4rl`vzr+F*+U%y{_G8#+W51N82s5!9RmK8M}!mnu_>rtfMBXB{yatu z{ya_{0{%P^Hns8RNn+zqH?i^OFtPFH2r>9`lsW|bITkjx@#i=(_;7+c1pGM}HZ}O5 ze&I9zJWU_^pNckW^go^PQ`DA^&Jb%-XyiNteoRTQkpe!SaC#qF_>$g-7QUqSp@lE0 zrY?L*??b_t=kxWXz?T;s8(%KcZ+y8#48B~Z4gp`TgiURHd65`=d5Jm%e0g8k)ZmMi z1r=XVK2&^Bc>%sO^oM{iFNaNSd{Oygd_j3r@#QM9@#PvZ_;Q^(1bn#>Hns8PHDbj7 zb?Okr-$JbTt6#JmU(i*2F_-$sEkGSz3_~aazF>%wvpiz4*&}E%#*)~?c3Z5P3N2zb z>JSiceAv`MP?)OCK;ZxE8g5D&Un2#++?Q}V8egW;V|iLs@)Q*_@Y`4d|4T7)JTL?O@_o* z)qLn5qFN69*M@@{{nurz+7AhMy|*7KHQZ$S50=J9XddW%W=sv>&&JZF$~T+nH~wrU zHvViOHvViS27k6uhk!rZ!=^U=>>xJ&>?8(%c2S3bKfA-GHva4(27mTahZukM(FgwQ zk2Y%X2UAeQ_@k);e=vnbz#r9a;W7TGmNWjSmNWjShBN+j^BUlfYPYx^_@mk_@JGYQ zwH)|xthmIVepdb7RIYpy9eEORi@FPolANs?9J<|Ko z!jJSmwD2Rn4=wyi??b_lXVN7aDe&Xj&Lv?OKc1uC`0+e3`0)aD2>5X^Y-;1jC1UX7 zGIfaY;|hJ?$BWTM4Su}j*!ZDZ4*aNUIPgQYTbyJ3Pz`7NXxPX2p<2%Pp&AbSQ0*4i z13#{YO>O+RMvQo0rw&29Z-h+^eyCsgj327y(BCMa{y0VQ8jom1mm=UtT;epnSTr^y zEiMdM@+gnC`0!}emlb;Sz15WH1DZ{l7QaoYk^`o^$j)LSG*wNe&}~ok7Q$LdPeWtP zhS>-f-lcbK;9alOFSUbrs?U;7yz3J-HF($8vGJ}S{oq|le;OFzfN)S7?`|W;!wsYk zu}K(2pH0$WVoc%?>Ja1IQ2LB_!-x@_+o?kk#NlC6TaZT(g9Ia~LqL){!lnj^)GvHN z8sIzWL;umyMveYsG9E<@-Z4fIo2|Jmt46v!LyD0Irk3>n0ndUDQp;hD8&~5yBG<32@)=Q6BJTC+{n;kYa#y=&;}Ke5fX<`Lu3JhP1g97EL5YWn(!-$!C+}UIlEX*|Xp+*`zCSU3G5kOaBFPUd+N!8b2ZDRr}K6=$-ec z?w>v9wR4x#xh}BHuX3NwujbL> zt(<4$QBJY(sL95oQ*At=62_xk7x%|_lHC#N@ z@mp)TXo|cRST)^|R=s^VT7P<8iyo@!o(Pod?#Em2MITF{iMf8Wbf?t_ex(z>R6l>Y z^%>_+JN2`=`)|*&)m6V82916x{;dKIlcGHZlcKsgx%3&Q{h6hzpFe!-XB^edasC@& zqhqlFtTKTK!VNNOR(c_K@J;Z&ce$^&3m2(Jyw+ zPuuFR6|6nw3k7R0`FyFL)$+O4Uh>(}UwcWZrPALOe5|xN z&>j-~Kh&z9jUU=ez>g9FoCJQ@_M+cp+V)euDAQhI{Lr2PepGu2_)+a8#*dX8qw!-E zG5E2XIs}8$9s)d(J`FlGuBFn3B%D5PgAZ96?J33w?J35GN7(T7r)Y-;1f4r1fOPGaN3E@JRuH+2a3uqSM4@L{iG z@L`{0@L|7WLa=qKJ@j=^<@!<&j zfe#@^X&70R2N3T`sY4?Ld?MlWcLOE<>F)|k{L?#W#Q*8sUkdR*<=EnXntqGFhGy~C z&@KLYG{hfEpa|lRDJf#{*HW_hYice2n0mz@At{3RBVCtJEQg|J7_C zqeecs7H!l^%e&}x#7lTca)WAd22iijT-5q|f`zSj(F^nnuADT#^)7l|X~NW3$sVE6 zX3!G~%T|Kr=+X#$<<>neI`yIfPKWfSVVv$mY@F^(3{Ll>4gsh8hfQsq9zblIzKz&8 zJ&@QqJ&5@8t?%Q(=^^xo7^jEQXPh2JY@EKG7?U%cIs_9pB5Z0*>`2F$#5){=)1w?4 zr|+a6oF47%wt&Xa4^EHuc5qs?Pxy?}zo;5$Qo45|h4|kaW1+VAPbRkbPa#J9@1qVu z{HKOZZSkK*Z1JB?Z1JB#Z1JB-jQG!@4nh29hfQtqpF?c%pG$1<*YZL9=hGj8_+!}> zLHw~Siy;13wnY$sTh`SA*78UEkrs+r{EcCN5Ao5Ju&#OfjR_ycqD9U z#)nPB#)r+s;KLT`5b$AZ*wn^{ZN$ch?Zn219mL?nPU;ZwVOQAH;KOdm z;KLrr;KN?WZxpbPCit+wxT-(UJ3v43K~)2R4^<6hd{8X}KB)GIYl07|eF7UFR0|m& zy4eSO2suonkg@X_D7QC9X_R<3$B0Y3o8!cY_X+CQY7y^~38$mQ`zd-X-cJ)-yiXBZ zyiXG&-Zo_Y`)l?{RlN1+7H>>V6>m(P;%!r^&%l`SB8WFaQUvj~C9Dk^AuVF@zDO?` zFO}Bnax`P-z8buuf z9&sLHuJQOTjlj1%wPkw0@{g@K|A*F`|9!cH=KL=T)|~%&!J6}L72KcZ&DNZMvo+`6 zDE&3}e^#*O{_Cwd|5|I#zgqfh&W#hAbK`{O9+RTEj?=)2YRJac_ZrIeuk9ow#kNL#L52QimjD^%8;0MxY5%9y( zt3Lc$`qkcp^jyUFfi$kfUAA*z@MBr&t;E0FaZ|v9G>sn*5rZEqs6)Vyhr^~eeyk)m zeykz}KUPzRfFEnJJ&}5AG~^m{O9!X-Yv4JaduJ8Wv>!(n3M!x3We zA>=3xn@r^a#CuZe&`1HFNI1P;EAdY?W{H1#zgFU(-m{hXr}u0(%kOn`S;YTLzP^;j z|12FA|8vBM|9R>V#Q#Fr)E56|h%Nrl5?lPABS!pfTURam0{tO~|HZJW5&uh$5&z4M zE&i%85r3O<b&t#4Q~e1}hxDdlobE$xoc>h}g!!-l{5yZdSv2l6={kDMaA+`n9MGQ`7>C`~&oOW;Yptkrc2U`493t3LP zkNqvDsRp{)`8OQdsy%IbveMCV+6;Our_Ch(dh7ifa@uVALoBDwq0e&KTw=><^N6uH z=2M4Y;i&crjD=OzKv+ao4TJ?+)j$@1)k3ef-mfXKq>HNtLj0>5sA<(e7XRfu4e@_4 zot}<}|3i)~{wwIW_&-dH_^+f6LHt)`dm=S*TF7b|TRNYKk{kJ8ZFHbEJ}BoIAC#Vq z52}HT52}G~cD`dwSN&$|J4WNfCiXBsD7}IY7-A9d!5*R7<3x4i!*-r!eAqz@KB)Gg zO#vTN`y}+Uzh46%sv5}npc)8#I2iY$Zdx^v@!>JHgAb2Whky@HgiURHc#_!o&`oUl z;4rZ!iAMe#1H?N^dcRiUo!+mNc&GPkCEm>mo>=1DoFu;4`Mpa+$eQ+P8TnxGK1G+s z`!q4)eTF&&@je?iwXOei#1`-K#1`)h#EADZ)FFtsYM;PZ|EhfgWBpe((1-L2En2Jm zuUZK4u4*8Qw`w88TeVMIp{YVr)ieqn;%y;SO@ojZu|{;Q;w|bR-c9MPcw-2XBRpd9 z*bue2@CcGMJZjM;e3eRzGU01f8%qr&FFx4ZNX_YpMgN*(B!#L5Qqo8r-k?%aNf=Yz zsc8^~N_ra7zFTl3v+yYGbKp_0)F-urN4*nHN8?c+dW=VXiH%47h{2=&)FI%}fUv2- zquU(g0R}q8!wqtbhac=1K^WrLf;5!=2qMg3#7*n{n&pk*YzH|;P=^?aM$%_Ix`PJV`DuCS@W*}ENsvlASHv-ddGf=!Mt zszb@fu@nF7N#ETd{=RPc@7ql7oB{*wQxZ<^*9t$<`?bQ4^nR`IBfVcM{7CQDz>gXE zdQ#xW%!Jd?_%Vwf3BKY-;1jJYw);K6MEAu^?<}@MEE4HV7VVFMeC52`JV57>tMx6sW-V(?)Tb!>^? z!{&t3(fF{19^=DSV(?)bbqM&dJ#1>@!wzEbVJCG6_^>N%YVcvVW8=df`i&2JiNS|` z)FI%*{;;Wy51LBjgQnW}fKXI?c#PQi@HjE}@C0=T`0!-d)Zjz6WANdyWANdKW6Kvu z>DM4q2jv08ds2dp6!3|J)BCj&|MY&X#6P`XEAdY?X2}QX{TkwbI$uu;@jv6(;(wNY zi~l)d#Q!{X2;zSsY-)@DGsKAhv(zDo|8rqeBmU1jw)nq5zs3I|G2(xTIt1~*95%JZ z{|d3i|3zYp|4YP{548PT{8b(x{wN!YApTZXDE>`p)yt}v9V7m)I7a+Y))YbfuV!?N z8YI0|T9ps3XS|Nu$bN%(9}h`XWA1I$mRLkaIW0B}smQL@`?Z~=3DmBByNpNIV($rs zX_0{LE{(vCZ{6dfQ!A&X`qMbwhaHX6eTj|J{fLdz{fWWps_q1*tGd%TJ&^s4(}Re? z>A}$n7-1>EYp^2B$|jHcpSEADq6!+rjBkj*ZiI(r=s| zO>CSVLu{NLOKhATM~vW&rw&12f8I4vJEz?n_olY^PbRkbPa(GW-$!impGu7QPooY& z{HKRaZSkK$Z1JB-jQG!@4nh29hfQtqpF@oJ&!rBr_|Kyc@t+@U)QJBA#}@yE^dtU@ zydCjh?AYSJgno9ghgJ}Ku91}4TJ=< zGR~zwRBE7hjkB8V2RfgLh*a~gO;$P@AJ)-hd{|FxeAqy2d{7MpKB)F#8wGsWn5=X( zK5U}L_^_E6eAq%A0zPaFo7(uWjTn5`P90)=*g+rouru1I!G~RrjSsu&2Osu$JNU5I zvGHLa{lPkK8#UtntYeG!bMzzL&wD%K{eokQ_eJ_G-j|3i z-j|6#&O?$bR2J_SiQlYVktyD)eb`39`d96fkP3vV212~68VK=jqAxY#9W~GqVvz0? z>JX4JYM?driL|NlDwRl`@HHxs|9XPyh{bWkF&52hj(4?cpq-^r)YPI(K0HdNrU9)h zVVx6lXBbI0QiVt9vp#s#%iF=D-U+88c+|%+c+}Ui@u(mD;893_8sO1@a8MhMRPTUC z1HBzQ3K>Mhcr=(8JQ_kBVmum3pYdoIvGM43V(@4ubiSeOia>^)E^h8=If6N7I*)!U~%^k3Kn;NzhH6q_gcR# z`Q6ek&i+n|v&T!jID4#MarbD!;;a%#@`(iSTXypf|X}1CW;wiQso(oiDHJBRC&f?qL_7;>nmm!6Ft7gL@~3NC}tKD z#SC*EqL|HU<(Vnbn)A)%f|YOXEm-+xQY*(yZ2iq{&L}mP2Olcft^3Rp?g__vA}q*+ZJ0{*QDn;QIE>lpl7=NSB3?--=s;Mn;02>r&tM~Q8N z-bk!PMI*mkHvVm<)A+ZA*!Z`V*!Z`N82sB#9RmLC2%8#7V`s)QsF8Gne{x&?+f9e@ zZx6BYZ!fX&Zyz!Ex1T!1_;-Ll@b6%>Q5*jb5qI;DL{u{ViE73_nZ`eLHU4$;GR8mM z3jD(miWvViR4w|{j7O>Xr$+_i`^c1J^g$82+`=d?K#t!xfKyJ{~2EvsB0+9DSiojYG1v#V%7nN|`li+cm* zWrJK`%SpMw(tVE}U8TRa1~E8IAF<_vsl=G{Y1API%Ji_Q5j5>V;X}}8hD~i` zL8vNnX*p=2u_1rYjs-e5!F0rez<+f;1WaFurBAvV`N885^*t6S=LGOL1h*8A`-Fq~ zaBH1(m&X5)Tws%=b%IG%4v5=e@*@w(g-(`s^#MfdBl=^WwLSuCu_mC9+M-s-^$@9D zl(0C6GBz37UNlLmzbJ>KQ>_zBverl3ADZ(Xu~}k%n2q31h*6cx5F@+oFC<1)E_A!HU(gR*XdO)JL&G%&QpLLQ;&h;8K6Z$Oxbq89@{y4J!55xNW?O5yo4^ z$i}N!VZ0F^T?ON3sMaBZXxpBG zY}?{btSM|;tv+8USBea2%vy&ccfwkaU9DV+MN+N9e?v`?u9j;HTcpaLe;2K}w)orD zIz+rMgd&KS4YB$>s7JAQX&qX;Ci5ys%B8dpEnZrO-PO|5`v|SSIPHlra&7T=!CHrp zRZClou3Cox2w@QoB0;S~46>>z^bo0C>(Jt*b!d~Jb=cMVn?1yiSJj zs($sY_^c%EF5g!Z z@_o^28TnxGSwok_XDu<}vyM6h!B`(QHR7|uvBl>R`VpT;z1`xok$#KMCSr@vX5y~a z_tl8cR{BE_pKW1NBR<HBK%`9$i{NP*8M6HZ6)`6AS5*woO$oNfa%-1I~mco2}$}#5a(~dD;pK)yS^%ng$UvCrJe7!?# z^Yt#V&DVRxHedgZ81wbtsY5Vd|08T_%-8?S_`}qwYyVfqQnvp8HyyVAKTF(~ha{h) z>aBnBNDeL4p6RpR7gCq{{f2$kLpMsJqfV5S-q9URHjlV`wP*DqKFmWB4X3+RVHG+* z(lah%Vb>sy7S$J$qK`eS=+&>>3iPXD26|SXEwtP<$!y5!pjWj_6i{16>c{xS(y=AQ zwuT3OkI;@WE?eY3A;xiY#pt0{%z+hKbW%7UY<-Sc-ugVhEUuRS{?$03SnDRKk78}> zO0gCZQ@dhqF;uKAhKjMRJH=QFA)T)nTMQLrn{3562ZLus%BL%0r#|U&JT@}_xD!Lc z9)FY+kGlLH7OdOhod3Ku)8XsR4Y{L)M^FA(DI04h&)oQ(>3M#is7n)6~l)MRt#;hiXk3? zF^brP&Sy2!B}NG&Mi%-WJ$?=`GU`@e28rUATI&jVAmsmr7=0xkHt9y{Us~(vpIb5d zyXy5$j~;(prD%O;Ys+8X(^z__)`8Lp)MprZBmssu!&arNv_o+wm}SsYCFv^TMX?Dqud%dkS7ab3(xjY2ID1av9b~$YL5; zA4|ePjd(0|jCkDd*y8a3{fLKc---ve_aYXL2kEtVpiEFaR#1mveOM~5;<1u_Y<;XE zMm$zihhS3IgiVb}U+dW7v5tO`B6V0#W%1ZRjCedk9fEi~8a8!T0UK#rJT?&{9-FB{ z5RWa{UPO&Wu{GMLu|BqCtk9vr*zWDvxOOVwK+z(YAER(JKPTAB=I11_&CgTBHa|}j+x(m&w)r_t zZ1Z!5*yiUfG3E!4SOm{^z92o{1;=>4XB^}Co^_1pd(N@N|9SfD`CcHl=etO3&v%K~ zp6@cTJ>L~#d%hQm?fG6J#`C?88gh;Y#Q*)&kjHtrjfW&3pu(mr9%diM(}YcJ<9V6b z#`6lXjptQj8_!i@jOQA42*#th2FCqvgiUStdyUxc_d2oN?+s$R--n2CKg}y`3awk>cuK#gjT>lf)kPq{K=lLWxz;{C=7m@MMt;QSei`}jw?F&$o)7u;j<)`; z+~V^v`&oQe5_kXVd(R!5hY+l%o!M3>Z87em-xlj`;xRlV*+YezE@UqaC4uDGN2Mf@ z@O~;wCI^U>WN7^SzW3aoE}xE;PecvNC!&r$Kd4nbKT?C9|2TCBo?o?jV0-?P^x5-2 zMQqRi|FQQLPsxZ zWI8CD#9=lLjhzeVo+RqF#28Q9%Ot7GI*S`U-*S`^z zUClxBxe1hA%E9!#87_Tq0cGcLn6>rK1;zW{Mm){l|8`>b{&&Dl&pY9I|0!Ua=5u%Y zpuOHbaC^Ob;d;HOGki?v$GvI8TIWAN%+7xhuJa!PW%qH=c=8_oF1YFO2wZwZ9pPho zzZs3!9BsUh5wZ7s9B%V}0j*5Zt)1G%*c7Hj-ftZI1i5rrEkD zoSh!~*3Ocr^^j^#_y#@C?Zq?AbJ4zjOZNC7nWd%mP*mw_-EhWoUx{F2+74O|m18?z zp|wrN4XN0BrnA z!dK+bSO?Jf`x@FDmv7w`$M~1_b|qn%!gV=oeety{+-f$;UE@vDOSi_Ww{DF$hGydp z*Tx%D(@CpvUYcHX)%3yTDp?ITil&K$jvCLxwM*zZs_-?yb!+2jT+?$5+{QN+ZsQvV z*Z9^1(=@)d(g!uZwVi8x>lD5^ID2adp=U}MQyW%KR%yhZkP(%B>qj9Q!gb9^({|9h zAsG+X`ra5!)B4^deNgLrQ|Gq6ClI&wy%~H`&u<^KzPBKrwqH8sdHueXZ-u*0g?g+Ph?gY1d?hIExcLCFs&xz@SR&Tq)mCv*s zU-I2?G`<{v#5MjsvqNd$tMENQ8~@&L8-GY;;}0oq{2{f*uM||%_$O5sQ&KXwdXL7H;D^4sPQ+9&Y110j}|#2&QR#C#4T+d?!2C_)aPOC{TKy>g}`D z&j4C_tuL{s!iREb>~vsA&poQv_nD=ABXDpbg0paE>3_!8h4v3dZWpekoeidG5a*;1 zD(TamXK^TYE^#ZK^Wc+uJ_D%uE+C#}>;FPxQM66tMS!jUi{V=Df%usCrH$A8CQ|F? zvcdzD@5`NAzONu|`Mwfv`MwHn`Mw&id|v~mDc{$o4_ZB52e*2>1g`O=-GHO<<@h76 z_M5UpX}`Jf8$lcYEpQwEt#BLvZEzd^?Qo6%4lqsQzcYPMv{tE8k0RvvGp;-T~6+R6dR2yH%9a#Ar#U=D+@pEj2b^}i?K9=;_%Yegb<2txQE03WMsXV4; zi>+t9aygBAfDP*@tsi1+MEsxu1IBy%fjyrY4ycWr;7;oK%&>pYZ+mRLZbtuoIW)F8 zp!K>%;Q<=tmd;iGX;F_%HNLZgHfbSU?)KN zON()bs7+)SK;xa59YBqDSLZg~-H6+GcZb_}_ki1Y_k?S_dx2>h@80Qy8m}a+rtzla zI}=sCrA2B~Z=q`jHQq_-gErnsy^U9;(HgHxr#0S#;TrEDV4B8zX!@Y(dl=mG4IM4t zlWDi{909lSOo5wzN5W0Nqu?6P(O{a!b4>c6#&fK5jpw++4+o{+@!l@|PAFWZ-&(IH z!iREb>?B}F&u0d$*Sw@gsmDdL>3=FPOaEoN8`116GL?YDJv|!AAw+NdGXN#!%+eH~ zq@Cs5*7G#tlgej>?4wDYojz#m`5br_m)z-a72mmFn%2j8>4P!JCU8Dr`Mm&c`MnTs z`Mn5k`Mnr!`Mm_L{9X#CDZiJc4_dul4p)BDV%!>U+LbsO?^PK9HQuY8+jy@bZsWZc zZsWZUZsWZkuJPUgrfIx4rVnboH#ygMZ!Y`_Q1zI03y$hBbj_f~dt3UTjrVrAjrR_? zjrUHtjrT6N#(OuIrt#jBK4|*h3pag3N6Yv9wA*+dfZKQ;gxh!?g4=i=hHE^JfN2`f zqv?Yh&kW}p&trw(2TH%ky!n&BWa2Gju+ft(ruAirhFrdsz$sIb zC^prWXdy|8s{SEaOfF7uK1SNUCCOvoveJnAkU5*~&GDd0=E6O&^0{#j=y}#Zsr403 zd~TSpp3>U4<|l6Z)^ND?t+Ww1@up2=B%r~edEB!b(j@D~QJSYkexd-HNNOHhXQwEj zhJ2*CbohVJJl20|mzsarQ|BMFmQ?&ss-^imt;c4uIoOhIZ5~nYhqRV_)TwO=aed7p zY3qnOjrz`@>aiTNaZq;ejxz*`Byr$LZyzo^yG#2%~O6#lf|L}Kh*+1%h z>15?|>Qc4FqouF)Qoz`Ntf4GZQ9&2Dm<$9@BKH{yE zk526p`Opxn*}kEvL_Tbav2QF>d&m9Gvd)zcT{5cK{f;gzt$kw!xbk6_q{zog#M6|I zmD309&D2!CV3QlEw85@MyC$(Zn5N0Dkv`a|WE8IDV>CQO#3`Rsm5;R8lip2MKBsDZ z+(M_l?3Y~2DzJ~r_4C-wZUP5Ic!+btjCiQD?v z7_NM50;WmSP16S@`UK~ekIjf%acmB^d~5+%KDGqYl#i{_2RoH)jcfVX2CjT;3#KU_ z+ZBH-s70}Twt-q7I}{$NTcqdnsTSQ%-ai&)6WAG8ur}_3n-?&-6X9`j!zrIrV^e7O zZa`cd8@@Xb7te<80oX-$Pk3xfI3NA($q|TP`b>eFK1af1Q^zU)ZmKr@*cY2njr89j^JE z0m_c%po`;~pe&YhTtpjw7NDEUsKX`{zx* z^g+%40_XOA7ZSJky9jRYcQM@F?-ID)FLcGn^!k@IUURh9znqA@{uOY0{VU=2`d7jA z`d5RpOF3vh*MPF~IhelJ!lmzZpllk4SwH&Q6J)^d=O8^E0A<&6n1w@Q4*~<5`_G3; z?D2vHx`7}5&)=iw%M8ZRH8@SfXux&%F zYjA8=x(25$fTL@0T3qfrt)FYhHCWqZHC=-mRzVrT&Nh z_9D-Sp(2J1Sfs;w-;+QdUOMnpS2s_9N+1=N7Z^- z*V`YhWIbHvXZ;$A{A}R-ph`BxReoCcs0Z|Xhcc<>JCyx`~YjdG6~i@b@%y+LdO4c{GzO`_p(k7}Dq+@r=O)3ome*k-gh+%_vo-@4{TYV4XD zsnaz#O{tA*?v5D%V-sltDvj1=qta<@Mp0U}SshHf?&(yL)inP@D{I};A4c5fANMjg z|H-u5{No%Jk~e zZhD;!mtN<9vST>t9&I`(o5W!@4vn1)=pHTVw!|3E`RRi;o(teMp14P~@mxf^jVJC= zt$yPkRpW^|p)aQQ``>+!8oD;G99{TDZ;UI=Ic}dbrK!2Ds*PBPhF?gXVJ+ zD2sby)AweA()Sinb{>aWd%jcE``<=9&EEfZV)p)bz)jCP;d=imV47ay?fyH zdiTQhdQoTin9jey@tUKZ{{Rs?KkiX={zIkzeW1qkaN&1>rpF_2>5&$fM(L5aptsU6 zOSYEpQU*5nw~v=_jJbB{hN}grZq;mo4kBs`I9^^0d~ogE+5k12xF%=w5S)Wr!;Wk6 zu^PyQ+cF&)0XUUfw#284S!DPX`zEbz zCi>?#6y-m@zF%xt8&w|L*@l&CyNlmWW~BH0g=w(!wVlR8H`|uu{KbgNw4KHck!{oQ zJ?Ij|)7DL=Jn~w(@(%7wmG|MUSou=8E3|I&sPLq zj`4;r8CHKAQuMbWNB>ny-x#XRZ&l*fc{RAb*y?bb-x_cYVicIBL5@xzT(0MLM4I2& z(ype~_q^lawq_$Q>k({hEx^XRHr&R$4&25YU2VMaQW~#G82K=XTlt96(|FV3t@I+H zdj`cfF8+AX#;4M6jZaIdHNFXO8{cMdz4+!}n)KWveNdup>0IO6s_-cN*?a!hKzeRd z+Sde!6(ZOccWC9?;ST9}POD96huWpJdF@C%Hnr%`jeSu2-_A|{Zh-c`T^imTwf{|Y zen=&|;vQW2Zn)b2cCVq>|MqaM{clg_lX`wfr2TJiZ@2v~wz_?5W4IA)V$oGe(@RuS zQYTdw$+wqm?SBW-PyIE8YATkTqK4l3KowHh{>rQG__<-(R+3?LB`oo$UN0;5vT_ zn5OfOEdJr37Q<252CANqc5d~24Dnb5O^0IvTW`m~t)7pEtDa8)(^StVrVpx~(@w%s zJ*UOEZN4g{*5XyE#dr?`)6{=z`k>}_x^vC%jKX#4Zmrid;Wods;5NT$aGPHjuKAq} zrfGiXqz`I-)17O6=N7J|(AxjbgKNE}MP4-Cv zc7hM$(AeF;z(NG~6qnGw#s7H00^L9rrk&OjJYGH)LiFt4b2Tii8%MS0ur<8+P-)X@ z-E+qD5010q5b_+|IFPR-md#CUvKpTG_+{V8Y+{V8&+{V8QT;pFBOw;&n$UzjUrt#~Pu*Eo9 zvg4(-hSEZJ%_l8}X5(Fj1{?3Ha2s#jQ`&e}r(JKp2AHP7jY=Q1!HJGGy+qtInglUErL>yHr;-gD!%=!}*wE%EJvS;m z-g;PV9FIG+@{MtA@ooaw;?DIA<)P7paLVD3N;bo_^}RV<>w60@?ZBRUO0Dm$vJITn zb5FT{y{C+Bw!XI|ux~`;upP&JD&HPg;sj<`e8=MN07}f*OS4^K@0>np$=C&M`J4#1 zeC`UjeC`HUK6eMxRBwBv4_dwL3AcL7@e#)M=AiNA_@Rv7B#8EuD5S9QOUl;xC&6v} zN=0k@N>z+sDXgaPTZ&`+Rsu2pLrd?yK-FW~VK}PCw9ws(dom3+-Xq|q_Y}B|_ei+u zeH2`J9}T8yyvL*un%>94P4CcA;|ZN5Dfx#jyB;+F4g;g;{~;8u^6{k2k@s9&>zzv0FH3d^vt7E&ABNj_AA#F=ABEd^XTUYy$G|j= z_wn>W)B6dy#+w#8YCN}O02F_^@TWi<-!pI<-?MNV-*a#q-}7*d?*%YTp$%c9IgL1GXQGQf2{E7;GjYT zZ{ZHC{O#fr`grkMwVqp#Hat7+|L!wKv;An#(Xgr=Qr#H-!L4b7-Ta ztHnL}s?PQ1t2x(rS1)`SP-`}A4IHi6&^3e7H$H15xABf4X8MkW+jz&pZMNfx`k;xm4&3yOCd+rYHXcdc8c(Fc#-q||jVDS^;~7spP2*9?R@0kqQdx{=)57De zrQZZ^mwuZSJ_;OG8#l)tTKN{ZLwY`QXw%rLc4=)cTN9t9zp?+B$F@zV8*obfy>W2u zPp!`whculz?!ZC&(~e-;K|P;24($2NaX`;=>`6V(vG?!!d)WQ*h0E_e_pN+)+>;=ZxpjSiG)YZ&C)p@p0Q15lyAFKS_$% zpCnN=6`3Tg7Dd?5klO0?P{LNPhrw4O^Yvd%T$oWi2S zEtxts_L$HWAJcg4EnE7=&}_Wn+IUytd^ z-J9bfm2850aO>;lSg#Xmm-vjenRBhz&7Du`c@C@#|CZiv_b^)#-?uhyjk{0Jb6`z! z+uEh|nPofTCRW^=rI>1pdoru19qDiNv=iLwX=k`Z-UUokJxxp>%wm_jE8Oa78+arI zr#uf<@>=&;8tb91!u?nT7LyEoj%D`{He4e2yqlQcfFNb+hL@1)9Nyh>TvZX8u_ zY1)dT-a^+5YP>3mYBt^|9UJeV^s@0D1~+{Vhikl(!8GZ6MEaoVI|V)mhsHuj%lA=) zZ9H+0W8;Z?G8@ma^tbUG2iJIx2h%j36VeAYp12pwn8p+LV&X>!qi}m!v$Ag0l5uAY=7u_ZnuHO8thBilA&(nw~dEKU^IciX6 zJ6F=rajxQ+?tD_ub6^$MdERctcRq1j&lkW|v=@SDS|1ms4{Cj+U5sP-y##Lgy%cWw zy$o*oje9f8Z`_+HzgN;PP5HelebDOdYPj;77UQ<{d@T(c?{(P$)OfFVZsU!6G8^xW z^t18a1h?_t4A*#X0n;?zThj+M-rJmOytfyA4XAody8}n{7`kRqz<6xS` z^F;cf#`C0ejpwPt9|C8u&w(Q>{hlf9cY?zT5j=}KwDRY0hgAMN?yQx+fUEU9vxZ_l zzgYO0;Go+067ImtUoI}8SBk$#ZN}>ct#8oW!)qYrWt;XGc=T+xlboPJ8eU6)7=8+* zrkI`y7}J-)CQB;;k}n?AOV(;ioRvYVVCJM(6jsxHE# z*2-l}FCTR314S)%w$v_z)1e z%5JN+{=C2Spf_^1Y|rPiWoo|SC6>+?D$jJ6YW=BBJm_A$b{R0BQ^^vzOI99k1e;g~ zu#@}Xi*aa7Z`FE`97D-sQj>-ngQv!1&6>CR(U#|bhuPJZ*s7lu;8s5?!mWN{%eDH6 zEm`%m3jK1=vHFqJvF26-)2x10Cua4t2HfgLscfye(QvDuNWJQ3Eb%m}pC}cppEc=Y z^%G52KWo#jH?^0D`dOEFnkHqJs{YB-tXqQkP`m+{rlf3`K4|r`5nM?f52h*U8>bI; zD%k|r>St59)z1XD)z4;dtDnu`i*jge3qbX=W#IwZsJ1FxOQH49Vr#fIx>8@T_re)yw+FqI~~>6&iMwQ)z>a??N1ZIG^?*&iCKN^ z2Dkd!9d7&69&oF#J>jaaw7qat9D8Q~wEEfyZuPY<-0EvTxawj39v zaS=L@gOYL(n5OzVIDOFS>kzo=>rgPQul&|Kc_*FnZ#Yj=2j*A%$bS4d^` z6;j&%6jH0c(jpbwbS*_uUzx&f=xCd_Qr+6zqZCFEY)qxn`tfFz()^`Sa5C8)G8g6wxhz=U;EYYzXG?~H9W3o+PRv<-@ z8`p6YEw1BM*Ks|!x}J^mBN;g5dTw;*^F{;?MvS@(fxQQb?5 zYPxZfRMm7%Y^{?uYg0&W>mpJzwzmI=>tu9okCbcOq(w<6Au5$>tG8}jBB|(}x!J7t z#Onr~8OJz8j$Wud_Uq>>k3H?Vp8dLaFMFW%2%z;@Hgct$w{m1Tk3CH}Z|!BudE_RC zp`1r94Y5%kt5~2SX0B&r!2Q_#7&>bk@Sh&R@SvO+2y zYKf^`oz|tFY4PC+ z6WA1(tMNHb;4o)%ZRpusTGxhW=~t~A?uY;L_fT<7$k$Pw%$h#zI|Ixmpsa8`Rm=vu#n44Z!2lK$K4r1T2q{qG!#X-mNcTJY( z;RG$OBjA?Dk#OZLE%u*Pla>8vmC9rP(V~t0Cd0O|?{r!}cZ+%$&+DXF zJ;eS~FJjGg_JjWK;k$8)@;@QZ1(pBSo}>J4?(NF|7S1jITN1bYZw0sfZwG^G>T^DwskL7mkM+X=Az?+mx(?E<&_PlQ|kcZFO2cY`bcyMt+~ z_IwW?Mcg#*2`K-2Wna+pzc<|SzYpBM3C zKRBrH0PP0{7al{2O{xhT0xVn_1&89sCfCFc0~Tz2j)!xIO%kVkA3w73IUd1b1c%0^ z0K*FrMC#_RJW@Mf<&pY%D_3d62ZhLMhAqEQT9)4^Jw6lZy1oZ=;mYsXV4CuK zPWqtbcRF18-3d%vr{{Zk)AM}#n4TBFP0tJA((@uPP3z_2^g-!)iF4EQQsUC{GH*9M zFDGt#UI8~fuY{YPSHU|ye~%?SuOXghdR|LRdRmFa{&9Ww1x=3|;HJloaMR-^xb(Og zOp_jIx8PWP-3m87Zi7pY+rc!`;|^k`$DMG~<1V=AaW}lv^Y>WN<6h!v(&N7LLFsXS z;n#txuLlYbP<=hq9_oSZB z_O{{7O8W^M8XE${M%D14z;TVwaTo^;bT%;Un4Zt}u~9aSa{xzW$8xWIWaV?=YRwnx z#=JBi$%1v`X!DVLF&~q)wSk8GHlIk3%_q`l^NI9oK9=^l=Tli!v-!m3$L6E*iVKHr zYcU^{Wth?#f4riyt)?|>+h*&tU~C8DYF90f)@Q*Ed<=)iVtI{DR+itW%42!1(Yox% zHD=k`rT=+S)>>;WnS+`AHP__mh5pa~-FT_zd!G3{SKnYTu4*u9EyJq8sI}ylv#2@C zS=5~6ENV|Vn?273RfAD$8MB{Lz%llT zrz($}Jz06=?up7HcaQfxr+uupN6xg-w)P2a%&nZMCek8zs)@A7nQ9_(l|j`+!)a1YM6R;ilyu5vU~=V=v%@NnoY`O_XPN~2S>`6O zoYf7iIcm6aloosWe~_cdO?LWU$Wi1b&sUDpB3J*1=jbP`3v0Rle3%N=-=IWpa&LUM zXYYHb=XyJ%XYYHoXYaFh5PP52K`TdE2a%f`hV6~9o@^b&I?_6b^^^Uz4y-g=&oE*= z**b`Iq;=3*N47V{da}K6e%@nTzEQay8dG_!r%{!U#9h7Tdb?`tV_fSVG}e(WR;{(O zOzUGr>mD?&yG!*vOV>rRb-nG>@x=8uF0xH5+z2*2y4uNcy|s(E-YOp8x60;&p6jjZ zqjkMieWb-TSM`y$JdWyPg$#gJA1lIDA1i@rs*jb^2dzFbQSf4NOygC?(Zw zpIn2e)kmaK^)b5k_WQTy*2L;#Ed8uL!nOK{%c#{yoT|atxzCa?jZq;1&H=BT7@8{(GlZQ+3YQ?Y~puvFYQKeMx$q(a`2-^?4={)9Wm_=`{^*_1T3>ud~54)#o|s zgQnMXxb~xS!8C0O=cNxuQ8a<`0oCUP4Q-Cn>q6(9N-n}Ry)K4JuS>u*>2+!Pp!B-T zx%9fc@YBKk5Fz&pxa!j+Y1P|Rw3~ic!>#i*aMSNvxb(XYOp|`srw^KbH^8OejbNJe zyD5Fp^t%}@{cZu%q~ERSgPlrl!!`YGhg-ef0k?X)6K?f(7u@RYZn*Tj2TYTG_ZI(3 zQ0x1?Yy-8v?=SptaDhSu58#fh{6X9il|O_#y!F_rrT-(eoBof&rT+{tP5M8UK4|(s z4wwE3fn&$Uj z`e3J$_i=50AHX%g55Y9e?~BEM2ULE)lx?8$`{lx41hu}tQh0#Y*H@iueWiU3N9!xD zgBdjazCq0N`zBoaeG5#Je&0?XH2uB7Q`6vx)b&*0MUEHKUH{|jO^|6js2|6hS=n*XoU2W|epfouN11=BSD z-=z=Q{C^ME{Qm%^Y5spqAM8}}CtREVpW&MSU%)iY|F7wTn*ZONYyN*P{O6$RC+#0N zs-L)SWzh8b7ctXkz(8^7GZ0LZK7*W_KC=*)K7+ko`poLw^cg~2`V95-xfR9kf&mXQ+3V)bx^EZ7tE=YX7)+Mi%kA-PhJ{IxUQ$7}TZuwY@xbm^Mw<{k@ zIJbN(NnH8pczd6|#&X_KpJGc9w|p!Ow|p!Ew|p!Mw|p!IS3cGh^qbY+3bbp!D}rg7 z?@G>XzAF>gd{^;y&39GjHs95VYrd;{d!K$j=Dd?{tW*%U`HqI$e8<2w-(Bk|t^AFn zUGrHJOw)YUa&Gfko4Dq)j<;(*>pHjjtVdk)S>N0H^v@SK@8lcnIRJ5+&qi>~XT0~< zd^Rq8EU5f#;_b@criCvLYCTQxcCDw)oZIzkbK+W0M+*AQ^1mhR(rYU}UwUor-1ORp zxb)iA+ojib&P}iFiA%2?yuDBV-k0-^`V`xVxaqYs-15H*-0FQI-0FQ-xb&JP=r^11 z?zC&Zdw^-0@1D+WzIzeZeE0Tt&37N?Hs5`TYrgw=d!K&O;=Ge@tlzc}xA`6b*L)B3 z{+jPW&NbhIool{_6uuj1*P}z>s*h^~{bqU`PP_D&T+WX^(&Gr{rpFZG(&I>PmmWts zH$9FfEUiGYrRY@d<)R7Kc~a(`f~D=af6>-h?YH!zkuW@eky_UGGQwyPQJ1JtzqIe-y7jJ-<#l?Z+s5Q z(`-Js(60I13Z`j3w>h`@+)iBcxx?EvpF5q~eC{Hy`P}X8efs?GypwON=K#cQKKH>j zpZmSP=JP<|H-pOGgWj(EJyiH*pw`R7-mdlXh;zHXJW5>a_2dAsy_+PUfV3~}l8the_K81S6)j`|dPp1A4t0^IUH6K?hXBHZfzCAjqZ zg`nSTzOT@(`MwIKX}+&HxB0$KT=RXy+cn=eo!fjrMqKlK%iH?~40zjlC*N5A&MpX~dUvk*e$u(-`>DcT2JQOtX}Id+UxI!!Jw8jj^!QvkKl(_I&pS6gzCc`h zyyxxG<9+9*#|Olv$A{kDr_cY+JMpe@_!4o`ADrN=kG zH0klp!aoCQy?o2twO+nm_zcjlFW-UN_2s*8U0=Re`isT&<@<%71?uz754?Roef}?e zA#h$!YV1ewd6Eqn@MHMg&F=_)QqGAn)Gpm{KkWIf#|J&X_0WbnOFbvPlN#)N#{c)e zqt4-neCs4Dzxi0J^7wc;u5w-eTh9#R_Q2Leq*rSqEz++wk*4x!JrjxTR%=3KRZVLm zEtaFLi6~F4iL@x+zGS7mJFT*hHDSx5)u^tmH4!gmYa-st*2EzC+XXa+st0kJLN(RH za+Sq*l*>Cmsgf0NPwe@7uM>K{qdva&Um5qf%42&uw)Iog`0dVWwM**@t4PgJwQ&vH zBP)+oT0M-W$?9PY-0ER0Jc2l-$?73Ko9j*OC1S8^H{F|~?UC`;5_4T|w|ZEQxYfh@ zaI1$6;8qVC!aF_RQL7ln6Hl`}a${n3kL(VFYd_c&wBM{uXn1o}{x@^3{BQ33(f|J6 zQRi@X!m<4C47cR%0=N86gj@c1gFI-}=ecm{c^;T%dY(_r^t=FW zdR_=OJuiZHdj9T0dR{_2&GfvKnDmV6c(!Z(UY2U)w)8j_C>2VX>^tc(`>G_UYdfZApO?upxJ}5nIFZ?o4^>s(# z0jjS%ovXg?a<2NiyYMqW-K5;(?F-iLs1GN;KyADacVy-FvL`FGF{(Qf+3 zGk()Qp1qj}2HfWV zCcM-09ku5F7V$Kj|J%eg|B2ZK+WbBNxB2PTA?9bdl(D`(Nj%Nw_bFnU->0(;wE2Ao zZu9#r+~)T=xXthL@J`Qn)SBOW#M3mt_tOV8zYhxkIH>%7Sa^W)`^Cav0B!&N5?t#m z?aMe?Uuj>#(fW$(UItCSuMso-z7Dtb@eR1Gk8i?Fzi+{%-?zau)9*XPOuz5KO~3EK zO~3EMJ3Ze~OTQlyPqX^?5i#kP_G29B_md2O((k9vO~0QJmwwZ{-Sqhdant9QaOv|a zFiraWI(^Xe`3+q9{1!|zeSSyG^!Yv9^!Wqa^!X#aGho1(M4~t*0s30W`fP&~Ej<8Qki9bGYfX1zdV<38tA| zTM;+CwuYNt+razs#PVHrr{_Cr>9sxm(k%Zw5Vv~Y5iY%U^8V6mXXmEZF2to*SI}>! z$F8(XkKO!y>9MRRR3U_=6khso9{KmHQ)Fgll^Tz*U_%|T<_;=J~ueG`P@ic^SQ~} zZ9X>>xB1)xxB1)(@6&(9Zi9F9`5#QveC}|r`P}JT^SP_=YeD7jZf{rq?kW5N(DuW7 z;dcGF4{q0w`{7zIUla73>GdG(R__nNt==Don_iE=rPrfin&~xzxasv6-1K@J-j^qq z@2WfcjXLo(>GhOz%m35Ft=^x3ORs0Wzw~;}x#{&haq0Dod@s=Sm`S_zc+t<79xpjJ zJzgd*Jznv4)8kd*rpIe=)8ln`pZ+WM2E5br9kulM81XdI<1OOS<8Rpp+I&7vyXE&2 zaLeyIaGTG&aLwnFV4BV6Q^ajPpN89fJ_GN|6ZKnlc&Fz(YR%{K#M3mNFF4nH-YfiV zQ2Bk|+m+uBoGZT{I#+(bSojN|*29;)UF+e?g+Bn=_2VmWyMBBXuItCwN`JAqetf;~ zQ$c+``G&X8SHGhkL400LYV2F^d6Jdys^@M#4t}S+#$5hdd8?xhyo9@fFZ6#$+>KXz zzUMpQ=jwY5#*GJeO>9=cE`USe4{&H~C=d@08$JxUukks~#^K(ce-GfEo`1vPZaOtK zCvZ~F-!Y%q^X~zi(2}L~cd#MfaplDXk~h9Uu#biDoue-6)sC)iT>g)$Jkon)<&pk% z`gy;;CDM)URQk5kBK>V!88ATYDod=Z^3w*yA*>shq2=zY|FAfKvq*MU+J%9T}}EgS6Tc!GRr$ZzLFJiP5%|)$M$?jd`!>Z zF`NFey_o*7{Yd}Sc%3xqpWBp{XX}rM*MP6ZA*?$Hklw|*qj5~{F>up+EZp=S2RFUf zgx7lS##@=*Ytt^hONn%$=)G<@?=IAO3a zCVlrvA2faUgqyy5!KLrsV4C#Zr}&$LDx!U}4OEfsSNJF}im(an4@8kRd=d~v-0%Yc z75U(XHb=|HK}0Mc2g5BNhrlf#hr%r%hryMP!@)G=V{-bSrA-xItxtGAg84dY7$-NR=;NxH!;qEORVW&n)Et1ebDOnJh) zn(1{rG1Kb~xaoB#-1NE&ZhD0j(n}Im6H%y|=@q9+FMG-O4Vb-U==ESdyR}|psHWG$ z^pjpTrMMq^)Xz7)W)L^M9)nA-$H6q|^+fS+1GRrXnQfrz@2SEs25tX*8a|FgW6uC% z%l{j%#31h@RW3|BH<0n?P9SJMYAKd-@+ zpVz@O)$<$agR18@om)MBjJW0JEx7XYHkhV*{&@PJ<>wP{%g;M-tLJy&%Fp6pu7A_# zQ$$UlPs2^0&%jNe&%&k8=fE`S^ZE2a)8`9t>GK|#CVk#dACx{HI5&MhByReA5iWhc z1g1%!FQ*ThK3{>GK3|1PpRa*w(&y{N|0JmTP5TCp>Q^O+b>nFIeT#tU_iec8_Z_(D z_g%R3`yQAk{l1?*X!`vCF8zK8rb)jar4LHKA3HbwenQ;z`zc)d{R~W#em_qiH2r=7 zH~oGIxBB`OT>5PdrkOs!A!hpg7H<0d4sQDV9xi?U0H#TwKc)|wK7WEspFe|X(&sPf zgVN`(&P|`c5jTDQ4wpXv0Mn$;Khp*FCtNi%7nr7+Nt+u-H8W2JK-J8=&aGzVBd(g6-`iC)!<}2rj390`GZJoV zY5}-vrdaTsj1pzKakreHVqBzKg+4-?%oIzDv+<`Ys8Vz8x@4`u3#{ zn!ZcHrSH;Un(4a?G3mQ(wt>=jIp?PD^2DX@3f?Y#S9EUru0-7QT^TNYR{_(c@2bUL z5Y(DXQ~Af9A9b8T>21rV-jJwW%d4fgmS0QnSe~YLEML<*mbd90%U^o0#p|R=ZyRDu z?9jeP4D&K(tCX{O?q#TK4^Mx2$$X)foalveEOj2y)oSM-UM#-yeZu3IqFz? z7VBkT4R4NjSF$~> z^xUC_T6*qCTzc;0?b35+=ceZ_#HHs%Zr&hyYSV)D5@r~4-iGy@O^PQL&FXtHG3DckYy*{#Db6h)QJTt!NgSVnECsFl zR;pT^b!w}=4T=%RJdOB zbTG~II)j)7b!N7K((5eerq?v$nsnFOCCb^(O}ul6o4C{A68&5-O?sVIe7$vRb2}fd z`W*$PnVuICv--OTZhBq}xB9yTZhBq{m!6k_Y0~rZ^g+|}3b^#V5==8auOcQrug*45 zle)&a>3J=2>3N;EOV8__o1QliH$88JM-k(cXC2aW^M-ZM)c*OHx2yghFZ=?~_RlBa<2W?-Brvu<B* z;-0mJTKRd7xaH@0xQX)u+{Bv+m#8m-X%hdX^g+wd%W&oA6)?^6^C~gb^K01#s-9nW zZuR^IapmVtZ&y8k%(>O`Tf{9tZ^NygKMq%Z76sER+3yfDecpweKA(h}KA(b1pHG8n z(&sbjgQm}C;nL@GV4CUkd1BJ%3)u!rpZA=bKJOEkJ|B3y^!d=a>GMV6rq7q)(&x)y zn)LZf@jn5oe$&2+qx!XyYt`4+X*d180XO}=2{-+|1($x`2GgY9chUz*sLkw*{D&HLI^*5;c8( z1vhSQ?F*3k%fyeUrkDUJq*o~dX08ugvr>NM(H zbsF`Z?W)r`(g#(itvXkoTB)_}_oB|NPNUvcr>#2IewG&XuKg=5>U>@hb&=ji0O;|&h17_5w<#8Xad<9(9$BH!+ z&r?=%ZuPM;an*-O82gwcuBQ4}t+Mz$pp;azeQXV)Rv(c{)yL@C+n-N0kJGI_#?sH~ zBV4PGxb#_l#HkvL-IB$_Mk~SA5RIr;_ow zRv#O~tv)t^TYc!QTmNp!1i13O8JMPgZ=ODA`Q8Gqd~XS+X+PL1ebDl~HC*}L224Ay z|9M>#QNFj!Ht?8_{@)7wxgMQL_Q$n+Pl7Ao2Y_kH_kqRV6x4ojP_}{Egbpq|N^g;# z=XDGBJg-U?*G^|Ku8q`^Th5;Mn?_0=M<0rP_KJ6iZp_%a(YoFO@_! z+dNb{vA$GN)l}pvxoWn)qBOO>RI=5yzEslHI@LWH*YrLGZtLq*xUH|#;I{uxg~z6k zQ}!k4bw)#*qwPm$5;48bf}38`;IN9Sf=P*TSXWbzqwGyFPu;^t%Br{cZ%)q~A^HgQnljaOrmom?r&hO&{!3avQGc zcRSqb?GCur+nsQ$x4Yn0Z+F9`-#uWO^t-qCSAtsK_hlQX^?iTghl6&b{{Va>hsGWR zMie4=2zPkT_oJr&Bea|TkHV$@3@}alKbAgd`acer{!f5u(*McyLDT;!xb%M-Oq2f4 zqz`r~c^237e-3W?KMyzkUx1tbGvU(TO0ZRbFVSxEe;Ka%zXGOd{;#GF+WcRGYyPi; zX`25V>4P@^H{qK9$G|kr|E=`FP9<;S+WbEbxA}hpuK7;{(=5O560`Yz60Z4u3QW`d zKAk>j^ZN{3^ZP8Aruls?ebDCjdAR2H1u#wXdoO*kQ_1_dHop(xn%{?Dn&$V#;=cnb zzhBBWQ2G6G;V*((UtcLaK*Hr|>30^G zX7m3AF`NG{;hO)iz%f4`uvNS=`&!Uxb(^Ab#aRH z$=@UeH+|xHo%G4yBt^UQiRW}dbTED5xt;Wh-y&tZ^oidhCGVv3(f?av;gXLUhzN9$#3 z;ah+U;@{zIBq7 z@66V!T=KU*&_#Oeo-ER5Ya-ICHIWwS*P2LEd9?0XW4qOwP+3*enn;V~Xlo+MQ)?nE z%C|3Bxtw=em-*NuY+1A#)wOjG5HDqGBHqf@MASum(Bs7NU4rUCQ>dnTSgx|xGvwuo zs~%SH_7i))LpY%}u7rDh&)+p4*OD;4Q!boH_Jd8EzTE)je?r5Xqw>F*bLD??=e8egL0tLY(%Y5) zt(;r_w4v^4>1tYECs)?mZ%-j!*Vjk?_BDE#o)^J8AN||c$bj9-n9|b(3+I^M&ir+Rh-Zo0NOJeZl%2!r{c@Ca39eA271< zIo{7<1c$~R0EV}2b6fl8L$ure`7k^#+BoHBRoXw(;?iRKr!GCQz8}jDpsnx6;kJK1 z0k{40Nx0SHQ}9mDcL>t|8RBVn{d|^~t?%dH(m(Ba9O*wc1E5_$X2Na$FTyqdm%ud5 z|K;>SoBu0t?QgGwX*U1Yh}ryKhui$$fZP1vgm-$rL(u%+BA#aRf18-*KQY@to8Kqk zHb31u#QbziQBCvvWM!@S#diss->1FZ=Jy%mHowopZGNAF+x$Kc@AQ0!p!vN=JWca^ zKYdX1`=IcTgUauRg$F3VUo89uQ0pu0OE_9zXj@H)^830Ycufa{fufuJ9 zd;>21(!Pmf_3S!;JVAVy(CPUOLGz364zio(*ZK}Y^ULoL{z@O^KYr_*{gwaL z?|qg3_X*VBB)IJf!4Gk48roVVM2)+BE8SqpCSSsUJ`|B9^x?|k%cU#A}NU4rQq-yxV@ z@m+%SYJG>G{Kt0(`68D8_%6ZfeMj_Gz3&93sor;XZr7h(h-?4pW?#_iXII))Kk+O* z`>1|)_t&%f*@L+1XHRdp`q_)P)z98=(_up8CB8$j>q~rxpzBLoe3zi> zOWLWtzOFB=?+|o-$?p(G&^~YWF5e-{Q+a%cFn4n~&u9BHIj34T+?oBC{BAVA(Ep6T zY1apnS?W3Qcl(2#KhpDzKR%c>9fkn$!L8v#fw*usd>HUR<8z#iLwqpADSt0;U*mI} zgTuW&e%FpuYgUZhe&MiMH61V)U1Xq4m2Gf)u+a~|( z|4v{^zHzzTR({6TP~>M^;o3f0|7gLQ@WVJXwia+`A%eAW*Xifo$gA?%TBcf$>-Be$ zqxSV1-dz`buK(Zl=tfxUal>%R!ScNkA?^Y3*2?cXw%G_l@_WL+qK&uNnCe;^;xIGoJU@_h>2 z@_j1Y@_icI@;w!9`92-4e4hcPDc@(N4=UehIk&-0BX0Tb!ZoS0!8GOjob*A7GTphv zJJ-3yJEu_+VOA9Gu zku{OHj_LZ9_bZVK?VpySSWlM1)_PK^Tb&<;TRvyNEuW9UEuW9WEuT-oHHjy|G)?xY z^g)U7v~$bnGsG>Q&%%{YO{tplsVP@eK3}LTHlvx&mCqNQTRvYRZuxu}ZtLk4xbpcb zn5KNbmOfb5QzM-Q`-ZnmHj`))Bgjw^#2e{lm2O6 z#F74A$^a<+zg+n1;NgV`zJhyL;?US&K=qRL102=M4>JI&UVh}<>gC78V-ih=p8!@b zKZRSp{0y#o`8k-Tdih2Apz7t9&aGa4McnG;*KpO#Z@@H(_S^J9)ywakt6qNZT=nt? z=T!?&t!Mnw zyY-A;dgn9#IN$V+XZ@ykJnNU<@oYcGC%x0+8Nc*yJ>!?&`HcT>bhPyu&-f3^v-PZ> zd24;9#WVhTz3Xm3L(Nw=p7ASR@oYaI6)Il~yMC6hc*bw}if8*JH&>p7R+>pPd;8#tHV8#*_= zHzIC&kB3X|jlI9Ek4=b6?|7CeH%xj@DE;HR6wi_$;N*ZSD9@C86! zztXmXua#^-H>9cg?8Y;G}@)^(imCx2Qe&sWs?dR($pL_c2DWCCdKiiehc($M1@)^(gEuZm> z-`3B5ysq-OzrVinImvllKix}t57YZV`bqDDn*Lpyxt<^F=bPS#5I4OKg`3`o!AEYY`Ep?9Ju9cI$ZfW7fe&W&U3DOo$uW8bpdh9*M)H9 z>mu*3d|m8Z`MSip@^z_mtn#R z^poD#d4K7By>rw12I8jojd0WZCb;Q+GhBM#0;WmtTb)bq+nk%;w-YzL?|@71JH5a3 zzRS7vzT3IyUjy3ucm!_i<59TQ z$BfcnEY`-zFU;ah`ia#CYY!p9}ka{&0*%Abahsr(uE=$`+-`lj%7Ce6{9z|IBhu+{4u_-Ee32ePN7KPV6x<6lpW!=R&Dqkht zuy`P}WaBkQwRak?8=v`}>;Edh8)4;VsiwU-DnDsU<0wDHx_vk`pWS8Q>c1Rl_fX3> zy!lD2<#Pq%md_R8md};omd};p%I7Lzn)117`k?Zuvae?OjOAhZjOC+zYFSlNKDF$s zDWA41VRm&VYaW&R~6_%3pjI zOudzl4T+~&{x%|J`Rn}*xiRhPzX_PHr~aEZe870n@;3o)`P&R``P&?B`P%}n{A~%Q zDSum~4=R6KJGcC8L)`MWEnNBA4op-2woe~a{&sM#^|+&Rt;e05+j`uYxaDsbxUI*D z@JycESZ7*au?|x|@!jbs+l_YubDT@8>CPqQxz269oJZXBKOb(%x&SWymj}~KpNoi@J{QAHpG)AT&!uqba~YT> zeJ)QQls;EDH+`-oZu(pWmp)g6Y0~GK^g-!!t#j#fopb4Py>rv&2I8jAjd1C66PPA_ zZZ7_Xpz1U2797>*rWpWDzuVxZ-|cYI?+&=>cPCu>-36veKS@?iM4@V?pH6M*7cVXS z>@8z4*^oj%8*(g0+u~xe+7{Sa-?8t*Ua=m)z^#8RbMYTSAD(g-0JHU;-=55 zaOv|Jm?nK*FaBeo>g$cd15{sc7Je&e``^dl<2W?-7BIHw|1UVE{{IC}rhPPr#y$az zDnu|8*NWj?xaH@QaLdo9;Fh0H!<-xpR{FgOrNj8O`osBO`mVTO`mVVrO&s( zH0ks0^g-$K9p|RccZr)m--An^?}KU5=LhM7(&vZHrO%I?OP?P*H+_CW-1PY=T>AVB zOp`u8FaB3S+aG@cSN*1q$1(kW1vmYE4LALM12_GC3zvSs1Jk76@6!jR-yfWtet#rx z`uzzm{r(K5Nx#3O4@$qkI+uQbb1wbp~X7J!dUrsn|gF_kX_AKmjE-6;J= zm$>X54r_2|Y*FH?C(}>N;j1;D_w(7#Qsvyzs~b4;-=7JT_U2j7^U2Dyp67c0trcB( zXRTdYpHYSow+r}CxYg7!xYg8baI2}=;Z{>~z*SRof@!L$xzYz!Q*%4Fnwp2WYHD6@ zS53|5Ts1YnbJf&v=c=g@&Q((*om)*UK-_9-LAb5Ch2T@-&o}TIJL2DehaLU0UH#J* z!%_dmGXPGmf8M_+{BRD9Edr>$)6nLq_P)ZG1P?1juoUj0l`oB3_lW*yOv^T1x&f+} z}`RWHjsSG}y@{NYMg#C@ppm2e-dd}Um#msQ|aFRQ|>UR3^3FSab=hSio$)Qgr? zHLDjbzo-{mmazxfvW>)SZxc{R4>{#s#(2+v{os#p7rr5A^%AeE_DxHBfZ8V%z6ogcvKd_UvN@QhNo`U5 zWk8$!mT-wP2uxG`Y@I%+`q{?$BR#*vez-Pnhimn-J>2SN2e{SGj&Q4=o#0kKJHxf# z>;k4~znPdmcz4h5u&sV}qh0&W?qHhsn?2G8wcqUNT>H&l&b8mfwK!v{pMBB?t$y}} zTm9?@xBA&1u6mdRrl}qdNFP+bqhH3Xehwn0{s(6psQ!l(ejsS|6R)dwE0Ji=E-IB) zqq?^C8@*L)zgZTp`Y6_osi{87l)DjEeV8Pz>ye~u)rX{Q)rX{S)rV5kst={ERUb-i z)Q6=!_Lq~1r>Q4QpA^vjsl$9crm|NLwN)&GLR&jmC2a^rQ?eo<);Q2WJ&UkF<9 zTmo0oTneUXf4QvqF%<1DmuDNeR(-~^6?{z&ja>=Y=6w}>Y|k^EF+I>Z~^>;_M zfmVNa!c~8FfoZBgol;HproRbOfGx@vzi1EAWUD*Or1>hEc|>M!jX9Mxai z@;EkFZA~$mx@C!L@GlTgv;5B_X8C^+ZeqR!H?d!aD;ckVX-d|s>4Qq}sL2THzw z5l%TMpV2R4>Yw&29QFTo2L3Ph-U3*XBiYgxYep=!Sff#0F*7r?n5AwpGc#khn3s$gK3^9+6p*Rdvzo|LcN(fwuaH zBt&{iM62dh3({(w>EhbBV1JzK|U{)DOg|G9NFp>FM4!lUVuhtnn!Soi!fi zzq7`p{Kwi(?r-^zH6F`b=U$>S^kv9=@pM|_$eVr?heH9t%@W(z(*EuIZ! zt!J@{V~uCgiersuk&0uTXW_ojVJ}oahkYSk7p(nzyzT-O4}j-y%Olr{a=oeaYC=EU zEg`?4jYWqCqgQOkW~&R~IMo$%;JA)822#eu&=^RG{py%$|JI-Se>*#%)qjG5$4A?k znGkGaW+JeSnTf$RW+nk^%uI?-(U_SmZM4SBbvBu1_j&00Lhu_A`^k5q^Gk{ftMF!VwW^5fzDCO(Br9&v?YbM9yzvtNUHGtpp z75iDfW}#jEXGN!||7^vc8EyHR9c=lU18n)46KwgK3#@$2jZRU%=1Ci^e9i0F@--iR zMftK}5%0ll*u)x-hE)~iOT(^;@@2!aa}OND*YdR(dnsQw>?2=Gl%stIZTA#m zsxih{>BD$iI&HM_w~S-uV_C2eaAN5 zHo$NB+YoHyZ6mOaw-{&2PmyLAhVnDKbu^*G_a-fFx0atx@zne@v0u$kvpMbRzXdu! zzM=kGwzyquvixj?-}19H*z&Ut*z&V2Sozrwoud3~pEg?g*}<{pXGi?X&raU1{Os&l z`Ps#>^0TXBo+k)Q0cG3^>uc8IuV*Gq&%Ds6D;R61)0 zI@Qi|9EB2te*$!h@h>Vm{0CLW{~@#+|A&Ib|6%A9@qc*QXz_o9W8?ow{Cd%&yj}bs z?N}#$jAI3LtYZb;I2Ji092v0vGH>ze(`gbw~L>%9gClH9E+cG9gCmy9E+dx9UDIv;5U9Q1dE@G z&?(~Q;$okOw)y`O@Dg?Y1^WDZ8QA!{9Blku0XF`w1dG3`&?(~Y>a@|~?;6L(-?jL~ zpSn~Le>y}J@u!!lBL3_Y;u(pZVyq!q2%W(hrDFWW)M)jksW9p*=f8MStFMtb?BJuo z_TqPd?d0wR>*Vi3rzp6)(?%=!dmI}-_u>~n_j$Ycx!mkRguZJC5 zeLaHT_<0m8ejY=osJQmj7=*~p%(31Gg_ps87b7x z&C#>qh1j$*KFad*JlOK{0@(8NBG~ft5?J|p8J(j1yplFr`FYi`<>xj0%FpZGu9JSl zvGVh#W98>9$I8#!j+LKx99w?g#c%m}4{Y`OK3MrlnHj_Q`4DXUd;~UrJ_Z{8u%vpU#?*`01<}iJw?2YF{m`ADzzy ziJ#6Iknt01N5)UA@ra+!=YqsftQG0_f9Ew+U!650)mN?={gif_A7f2uF`TW$+R>tk z%G%K)6~~&DVo9x6f2C4rWaBt#4eEE)e6ju-)EY!T6Z>Rs1c?dn^7n<~j_ail@Llw&Ed}$5cEe=Ft^Tg?UuPQ)3=k z@idr6R6H$aoOJ7(4mDB9S?lUP)6cVeuQX=P-mN%t7Z<!66dcoQnzcZ|u}B{3*!b11!S8C`uAxR221Vr_|whE&3V1 z5sLU-$M;w9uj|A?_M-8nOq@omn@}$e zK2K@!@ogj9vDh5fcWoXqIM36XSBo&mWqWLxv59N+F%^%GY1gut?~khO-^R3gIp+H# zYWswk7Q{qgZHO`5oiUter)!z>;1AIwMsbibHpYv6F^>A*U&|u4Jcu|;i5SIM#FozH zfBssga;c&Mw{q$Xj3_&s3;wIuGAs9(3p5<6XfCknsI%bqf6KKju3;IGPTHok2rjN+ z*{bB%n7!+U@oxD1#wNYxnLgJZ7vX%o#f32R&qPnGR*}G;7=)YLEl*Di~*b8 z*sF}w9Vctl{Uhae zfs2yR1+X(tbYbj_6J0>zJ#(XGmnOh#)fG8oJWq7^T^|AvxFP>8w-1X<7*N8#@C`?<7+Xn z@wGVE>S+mZt*3UWPkb$fKSg{kUF^69*c`G9{$3GG*LUp^vx}uYs39{fL1r5-uu^ks7{@z4#xKVUhJE9 zM*ZtORA=6?I*55kb&wMCkLn=h+ZauvGXH4Yq)dpRI#8%pR0l>yrw(G?u{xNPy{rym z-myA}c}ICqiFwEJ{BN%fmdBWPECDh9%$G+i*9Z-o&b*U@R^4LWu|YjOyUx;iOVjzW zoS1(G>hWj9?Dfq%nsoH9%6F^T!;GC;-#94cGi7Fsk)1!y)0qe3R4tzoisdurohFY~ z?xifBG4Cj!bJZ>}u4BGQpN;F7cPyWxvXjrC+VUCmj^%R!`ddC@{;_eo5bc)Fn17Vd zm~Uu9^dd3ev?wOQm~RqWK4adoe8#+^d@h-N(Lr+Si229z8S_uC?{haw=CW<~cB_2G ze3L%qbNOP&p`u7y#|o$!N@Ly&zB@SYG|{5*zVcuf85-}aI97cOb*%ajMOAFPYf9_f zI|j8@A8XLwuxTYyVf7JHs_Mg17WJ`C?tr%Xh*VpBXiD$YN0f%u#|E@peQXG}7uyJI z^|3M7>SGvK!4F5Ls6IAH8?7SU)UnmaX85f>HV3Odwm_#?eQb%(>SHT#ukZJGR3F>m zPf>krn>JeYv7KYp$M%j@A3GGhB046a*0CchCaD(hgtEzOXRzI5?E;QT5TktlCML-i z?}nPPwb|~@CMH>o_*ix4J=2~zW0J-wkDy`_Z}Hx!N&DVIS$_AW-SWF1*z&tSSou8w zonpm(AU@?cE@mYS40QWk#GBKH3$;V`WH2qSP zUk#Zm%C8Nn82?Re?c{d^e&yFfjQgbHy}$8!0)FH3M6mIB5?Fkmj7|}sr=*S6i=FCN ze4ggm_&goI@p%SVe4dF;F+R`2XMCOw?)81{M&spN{3#kQDd%B`&y@2q#AnI{7#c5D zg2C5C*#T{QT?{t9E&&@~mx9IDW#|;~m2x?T_)56~LwsGC4z%%g71;Q?8Z5r9L8lmB z*Wxq2t^@b_K6fL&Zor=+zHUq#ExvAYEWU1bEWU0j_(HVims`DE^>kRP8ht=93kVjd^_EJ$4Y$_8Av7qP5wM$EIP^%J`^b3y}I2rY3}MS65s^ zCvbdJ1ruT(S@A@eF%h-CiBapfwzkcfn2JZVAWdv7o){a7$7t=`69oMhPo$?kN*pTE zXYoXO6_2Go;<3w4=bj)gPZp2LE8ilg?{sW@uR=HaM0%URT%&C5}9mb0im%URT(a+VS`w`!tt%QUpj zN9HQ(uy$#}e7xo?@S}q{YkO*v>EtXYBDIb~51XhWcbdRDIg1IdJyhf@CcqZQJaK2= zJaI=~&Q5LnvWO1 zBS&9F5(W?1g!Nv<(fsbKjKd_FZpB_04@F`^J&gb&Mm`b&Q{U*%5u?sD0IF zjXBWjI>wReI>t}#ue!F<>|D=c99dn*I8t4A#*xj9G56VA_;2Svo9kjc+1wU6(p=WL z-pF@Ey=XG^1urCB>~GvXd}hT0|8KswjkfzEArxrnwq#Pv2VvMmlXoGtF5 zW*nSHTc`3rb8EF*<$o5(%D+yrit=wE#0_U&Yon9pe-0eV|D1L2xIdfAaZ|zEn3n%} zz{>x;=oIB&6j!l%ZGOC#{{_Ix|AOcg%l|_7EdL9G?b^2p*z&(9*z&&^Sou#`9K%j- z39wFnNpy;lw-i2+yL7gpMgB65m7HZAEC0(m?p3fnrsaPHu=2kmIz{R|)=s2(=VzG$n5jlg#BjlotA!@yP#!@(BpCSZ}XDLO^dg@WqfF81RpkJVm@l{r-+XcX`_t~4b9-=cyx;RI3aDc_&CwA_&CXNuY!{? zjgM2n;^S0wiugFK*oUK4e<`P9sQyyUz)=0AoQa|Oi*cJyjWuMfG$++Gz22p=0CkBK)eSi@ja^UE)~$UFul;UFNt~!R467-xXl-cO^PS{9Tnc z+W5N~Z2VmV7Jt{GQ^enO#XbwI@q2x?p*4PQD0nyY)CEZ0h&ffoH(^d$@y(b+`relq z|F_a^{NDx^|F@%4#Q(^&(c*uUW8?o0{Nn#kZx{b}ITrtSI~M=ast7fA=&;(HKm@jV1qd?^oOD87_OFcjaT=|Ee2kAW56X^i z9E-p2JMLBR15D%ZhhXuS@(qUgJ1QM$i|@x^i|;33#rIQmisJiO+Gxf1bH^6nFYqhA zUwXUZ`;}wG_iM+B?>CNn75o;{;`<#~@%>r_ReEbot`bhZ`hUz2b&lswY zxGtsB`1vb7 zb(c;≫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 UUvV5%`PaAuoA0CF)NpwJ3(guf8~^|S literal 0 HcmV?d00001 diff --git a/resources/3rdparty/sylvan/models/lifts.7.ldd b/resources/3rdparty/sylvan/models/lifts.7.ldd new file mode 100644 index 0000000000000000000000000000000000000000..0d357553ff0da73f9fef9ecbaea8766bac5a249e GIT binary patch literal 99124 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 a@^;pa&*y`DPc0w)Jrn-5p-&C}c>N81Yb)6R literal 0 HcmV?d00001 diff --git a/resources/3rdparty/sylvan/models/schedule_world.2.8-rgs.bdd b/resources/3rdparty/sylvan/models/schedule_world.2.8-rgs.bdd deleted file mode 100755 index 7c5354aef1d1c178c65ea8258707736f924766d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 73472 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 BL5ctX diff --git a/resources/3rdparty/sylvan/models/schedule_world.2.bdd b/resources/3rdparty/sylvan/models/schedule_world.2.bdd new file mode 100644 index 0000000000000000000000000000000000000000..ad61659786b97c471a7905d3083ce9f00124b897 GIT binary patch literal 18556 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 literal 0 HcmV?d00001 diff --git a/resources/3rdparty/sylvan/models/schedule_world.2.ldd b/resources/3rdparty/sylvan/models/schedule_world.2.ldd new file mode 100644 index 0000000000000000000000000000000000000000..9bd77e0e926072755e57dd8a5a120cfc35568105 GIT binary patch literal 4728 zcmbuCPl%RP6vkh59RFlGO{V!55gAHl5Q!*>kcbQyGK7mT6ciaGA}UBkWFXO?5U~)E zkcbc$5fag&MT84+ArcW0(IUi!gbRs?h!*Poow*P1^PX>F`trj2-Sa#5x#ymH?|I+R zl}*#!Ep27#yKSc7jA9QMV-6;sYm9!rG3J8A3yska8DkD7UYvMI;ztuNHzvOC5MFKL zm}?TRO}x&Svl%hQd@S+$#2bxSf7BRrlQH9)jWM4{{AA*%f>%{9*>PjDD?d>Bhsv|8 zJlNa@%&Fl+C+&m9X6%vjFy?$edR2_#af8Gs7x(!Z{mz+HV$CbhobqVD#cViHd|HcY z^Zol-;eWV1B*Vgs4C@*9!9Smw7%;Xm2qOA)!uot z@Jr7a=j+URyrI+rTGr)_W1rkRcO(6ZV*8q`hmW}Ii8qryWxeh}ITC}jV{N_`jOSc+ zw)D!4_0Wp7j%pSy@mNPS>wG_Y?$6_^W|co{`dN`vzjJ)g#8d6*Y^JI`=1iwmJ#gN- zGv$Xb-y8MFy(%B}!I^6=cD`rVDsN(76JKYa<4&j5-I9auRQbV*E8qXo6PrhOs#vh^ zQ+}OYKXbSP^t@}_mueZ-{c10+)pr2hzkLG~SNDT9-zn!#Tykf9-f{F=8}{}4(dnB( zJbk04iuYf2%8i_{bNy%^)9LtDbQ@Lb?HL2Uw9h8qYK-|@;^&Q-|AH~*i;1@fk5n&b z+&1QWJVti3!||76%oy{f#5;pGR4?b$Z9bp%UhWPzyMjlnm+yMppvm~HZ%>$;s-ssw z8L!pv3v+XI@a<{a-D3Lw;qi93fe#py|EtEBuO)un82uZ;Pn#EWePtBgHhDfXC*J#M z{)ymi)yuyfy3OAgMo!r<@jf)hJe~MV;ZGTjs^632+>wO-OBYIXF zGY{*1V~qK2;!DAMtGBnFd_M6mSEafuVeA*yUhkjW+K-=p`QK?7=3iUht~wO^nlbBt zXUzQX6aQe0{zqfXpNtv**%QikVE(V6Z-1`0W>`1k_pR#f#$$etce5(h z{U)RKx1!HqCB^TaCh@zTrn#Ns{hs&_W9I*v_%CD3zZ3rxJW;*fdLrI%(%(rOe-xW{ zs<(Sy)VHrsya9f!4JMu&e7q`p<9R+v7o_k%yv{mH8Du1EcQy&zp3`YJEon&1ywM_7+1-k5m0@wb!yP2+o4<8lB1 literal 0 HcmV?d00001 diff --git a/resources/3rdparty/sylvan/models/schedule_world.3.8-rgs.bdd b/resources/3rdparty/sylvan/models/schedule_world.3.8-rgs.bdd deleted file mode 100755 index a4e3e444d0d0d25ba351a6868a75f94e5c72dc1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 97456 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 FPXff)gt`C# literal 0 HcmV?d00001 diff --git a/resources/3rdparty/sylvan/src/CMakeLists.txt b/resources/3rdparty/sylvan/src/CMakeLists.txt old mode 100755 new mode 100644 index 0c516c483..7e36c6741 --- a/resources/3rdparty/sylvan/src/CMakeLists.txt +++ b/resources/3rdparty/sylvan/src/CMakeLists.txt @@ -37,6 +37,8 @@ set(HEADERS sylvan_table.h sylvan_tls.h storm_wrapper.h + sylvan_bdd_storm.h + sylvan_mtbdd_storm.h sylvan_storm_rational_function.h sylvan_storm_rational_number.h ) @@ -47,10 +49,8 @@ option(BUILD_STATIC_LIBS "Enable/disable creation of static libraries" ON) add_library(sylvan ${SOURCES}) find_package(GMP REQUIRED) -find_package(Hwloc REQUIRED) -include_directories(sylvan ${HWLOC_INCLUDE_DIR} ${GMP_INCLUDE_DIR}) -target_link_libraries(sylvan m pthread ${GMP_LIBRARIES} ${HWLOC_LIBRARIES}) +target_link_libraries(sylvan m pthread ${GMP_LIBRARIES}) if(UNIX AND NOT APPLE) target_link_libraries(sylvan rt) @@ -60,12 +60,10 @@ option(SYLVAN_STATS "Collect statistics" OFF) if(SYLVAN_STATS) set_target_properties(sylvan PROPERTIES COMPILE_DEFINITIONS "SYLVAN_STATS") endif() -set_target_properties(sylvan PROPERTIES COMPILE_DEFINITIONS "STORM_SILENCE_WARNINGS") install(TARGETS sylvan DESTINATION "${CMAKE_INSTALL_LIBDIR}") install(FILES ${HEADERS} DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}") - # MODIFICATIONS NEEDED MADE FOR STORM # We need to make sure that the binary is put into a folder that is independent of the diff --git a/resources/3rdparty/sylvan/src/avl.h b/resources/3rdparty/sylvan/src/avl.h index 38277523d..858859d6b 100755 --- a/resources/3rdparty/sylvan/src/avl.h +++ b/resources/3rdparty/sylvan/src/avl.h @@ -1,6 +1,6 @@ /* * Copyright 2011-2016 Formal Methods and Tools, University of Twente - * Copyright 2016 Tom van Dijk, Johannes Kepler University Linz + * Copyright 2016-2017 Tom van Dijk, Johannes Kepler University Linz * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/resources/3rdparty/sylvan/src/lace.c b/resources/3rdparty/sylvan/src/lace.c index abdbbca39..08e9f8843 100755 --- a/resources/3rdparty/sylvan/src/lace.c +++ b/resources/3rdparty/sylvan/src/lace.c @@ -15,6 +15,7 @@ * limitations under the License. */ +#define _GNU_SOURCE #include // for errno #include // for sched_getaffinity #include // for fprintf @@ -26,28 +27,46 @@ #include #include -// work around for missing MAP_ANONYMOUS definition in sys/mman.h on -// older OS X versions -#if !(defined MAP_ANONYMOUS) && defined MAP_ANON -#define MAP_ANONYMOUS MAP_ANON -#endif - #include -#include -// public Worker data -static Worker **workers = NULL; -static size_t default_stacksize = 0; // set by lace_init -static size_t default_dqsize = 100000; +#if LACE_USE_HWLOC +#include +/** + * HWLOC information + */ static hwloc_topology_t topo; static unsigned int n_nodes, n_cores, n_pus; +#endif + +/** + * (public) Worker data + */ +static Worker **workers = NULL; + +/** + * Default sizes for program stack and task deque + */ +static size_t default_stacksize = 0; // 0 means "set by lace_init" +static size_t default_dqsize = 100000; +/** + * Verbosity flag, set with lace_set_verbosity + */ static int verbosity = 0; -static int n_workers = 0; -static int enabled_workers = 0; +/** + * Number of workers and number of enabled/active workers + */ +static unsigned int n_workers = 0; +static unsigned int enabled_workers = 0; +/** + * Datastructure of the task deque etc for each worker. + * - first public cachelines (accessible via global "workers" variable) + * - then private cachelines + * - then the deque array + */ typedef struct { Worker worker_public; char pad1[PAD(sizeof(Worker), LINE_SIZE)]; @@ -56,26 +75,51 @@ typedef struct { Task deque[]; } worker_data; +/** + * (Secret) holds pointers to the memory block allocated for each worker + */ static worker_data **workers_memory = NULL; + +/** + * Number of bytes allocated for each worker's worker data. + */ static size_t workers_memory_size = 0; -// private Worker data (just for stats at end ) +/** + * (Secret) holds pointer to private Worker data, just for stats collection at end + */ static WorkerP **workers_p; -// set to 0 when quitting +/** + * Flag to signal all workers to quit. + */ static int lace_quits = 0; -// for storing private Worker data +/** + * Thread-specific mechanism to access current worker data + */ #ifdef __linux__ // use gcc thread-local storage (i.e. __thread variables) static __thread WorkerP *current_worker; #else static pthread_key_t worker_key; #endif + +/** + * worker_attr used for creating threads + * - initialized by lace_init + * - used by lace_spawn_worker + */ static pthread_attr_t worker_attr; +/** + * The condition/mutex pair for when the root thread sleeps until the end of the program + */ static pthread_cond_t wait_until_done = PTHREAD_COND_INITIALIZER; static pthread_mutex_t wait_until_done_mutex = PTHREAD_MUTEX_INITIALIZER; +/** + * Data structure that contains the stack and stack size for each worker. + */ struct lace_worker_init { void* stack; @@ -84,8 +128,14 @@ struct lace_worker_init static struct lace_worker_init *workers_init; +/** + * Global newframe variable used for the implementation of NEWFRAME and TOGETHER + */ lace_newframe_t lace_newframe; +/** + * Get the private Worker data of the current thread + */ WorkerP* lace_get_worker() { @@ -96,14 +146,20 @@ lace_get_worker() #endif } +/** + * Find the head of the task deque, using the given private Worker data + */ Task* lace_get_head(WorkerP *self) { Task *dq = self->dq; + + /* First check the first tasks linearly */ if (dq[0].thief == 0) return dq; if (dq[1].thief == 0) return dq+1; if (dq[2].thief == 0) return dq+2; + /* Then fast search for a low/high bound using powers of 2: 4, 8, 16... */ size_t low = 2; size_t high = self->end - self->dq; @@ -118,6 +174,7 @@ lace_get_head(WorkerP *self) } } + /* Finally zoom in using binary search */ while (low < high) { size_t mid = low + (high-low)/2; if (dq[mid].thief == 0) high = mid; @@ -127,22 +184,27 @@ lace_get_head(WorkerP *self) return dq+low; } -size_t +/** + * Get the number of workers + */ +unsigned int lace_workers() { return n_workers; } +/** + * Get the default stack size (or 0 for automatically determine) + */ size_t lace_default_stacksize() { return default_stacksize; } -#ifndef cas -#define cas(ptr, old, new) (__sync_bool_compare_and_swap((ptr),(old),(new))) -#endif - +/** + * If we are collecting PIE times, then we need some helper functions. + */ #if LACE_PIE_TIMES static uint64_t count_at_start, count_at_end; static long long unsigned us_elapsed_timer; @@ -169,7 +231,9 @@ us_elapsed(void) } #endif -/* Barrier */ +/** + * Lace barrier implementation, that synchronizes on all currently enabled workers. + */ typedef struct { volatile int __attribute__((aligned(LINE_SIZE))) count; volatile int __attribute__((aligned(LINE_SIZE))) leaving; @@ -178,11 +242,14 @@ typedef struct { barrier_t lace_bar; +/** + * Enter the Lace barrier and wait until all workers have entered the Lace barrier. + */ void lace_barrier() { int wait = lace_bar.wait; - if (enabled_workers == __sync_add_and_fetch(&lace_bar.count, 1)) { + if ((int)enabled_workers == __sync_add_and_fetch(&lace_bar.count, 1)) { lace_bar.count = 0; lace_bar.leaving = enabled_workers; lace_bar.wait = 1 - wait; // flip wait @@ -193,12 +260,18 @@ lace_barrier() __sync_add_and_fetch(&lace_bar.leaving, -1); } +/** + * Initialize the Lace barrier + */ static void lace_barrier_init() { memset(&lace_bar, 0, sizeof(barrier_t)); } +/** + * Destroy the Lace barrier (just wait until all are exited) + */ static void lace_barrier_destroy() { @@ -206,9 +279,13 @@ lace_barrier_destroy() while (lace_bar.leaving != 0) continue; } -static void +/** + * For debugging purposes, check if memory is allocated on the correct memory nodes. + */ +static void __attribute__((unused)) lace_check_memory(void) { +#if LACE_USE_HWLOC // get our current worker WorkerP *w = lace_get_worker(); void* mem = workers_memory[w->worker]; @@ -229,14 +306,10 @@ lace_check_memory(void) hwloc_membind_policy_t policy; int res = hwloc_get_area_membind_nodeset(topo, mem, sizeof(worker_data), memlocation, &policy, HWLOC_MEMBIND_STRICT); if (res == -1) { -#ifndef STORM_SILENCE_WARNINGS fprintf(stderr, "Lace warning: hwloc_get_area_membind_nodeset returned -1!\n"); -#endif } if (policy != HWLOC_MEMBIND_BIND) { -#ifndef STORM_SILENCE_WARNINGS fprintf(stderr, "Lace warning: Lace worker memory not bound with BIND policy!\n"); -#endif } #endif @@ -258,22 +331,27 @@ lace_check_memory(void) hwloc_bitmap_free(cpuset); hwloc_bitmap_free(cpunodes); hwloc_bitmap_free(memlocation); +#endif } -WorkerP * -lace_init_worker(int worker) +void +lace_pin_worker(void) { - // Get our core +#if LACE_USE_HWLOC + // Get our worker + unsigned int worker = lace_get_worker()->worker; + + // Get our core (hwloc object) hwloc_obj_t pu = hwloc_get_obj_by_type(topo, HWLOC_OBJ_CORE, worker % n_cores); // Get our copy of the bitmap hwloc_cpuset_t bmp = hwloc_bitmap_dup(pu->cpuset); - // Get number of PUs in set + // Get number of PUs in bitmap int n = -1, count=0; while ((n=hwloc_bitmap_next(bmp, n)) != -1) count++; - // Check if we actually have logical processors + // Check if we actually have any logical processors if (count == 0) { fprintf(stderr, "Lace error: trying to pin a worker on an empty core?\n"); exit(-1); @@ -293,18 +371,46 @@ lace_init_worker(int worker) // Pin our thread... if (hwloc_set_cpubind(topo, bmp, HWLOC_CPUBIND_THREAD) == -1) { -#ifndef STORM_SILENCE_WARNINGS fprintf(stderr, "Lace warning: hwloc_set_cpubind returned -1!\n"); -#endif } - // Free allocated memory + // Free our copy of the bitmap hwloc_bitmap_free(bmp); - // Get allocated memory - Worker *wt = &workers_memory[worker]->worker_public; - WorkerP *w = &workers_memory[worker]->worker_private; + // Pin the memory area (using the appropriate hwloc function) +#ifdef HWLOC_MEMBIND_BYNODESET + int res = hwloc_set_area_membind(topo, workers_memory[worker], workers_memory_size, pu->nodeset, HWLOC_MEMBIND_BIND, HWLOC_MEMBIND_STRICT | HWLOC_MEMBIND_MIGRATE | HWLOC_MEMBIND_BYNODESET); +#else + int res = hwloc_set_area_membind_nodeset(topo, workers_memory[worker], workers_memory_size, pu->nodeset, HWLOC_MEMBIND_BIND, HWLOC_MEMBIND_STRICT | HWLOC_MEMBIND_MIGRATE); +#endif + if (res != 0) { + fprintf(stderr, "Lace error: Unable to bind worker memory to node!\n"); + } + + // Check if everything is on the correct node + lace_check_memory(); +#endif +} + +void +lace_init_worker(unsigned int worker) +{ + // Allocate our memory + workers_memory[worker] = mmap(NULL, workers_memory_size, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0); + if (workers_memory[worker] == MAP_FAILED) { + fprintf(stderr, "Lace error: Unable to allocate memory for the Lace worker!\n"); + exit(1); + } + + // Set pointers + Worker *wt = workers[worker] = &workers_memory[worker]->worker_public; + WorkerP *w = workers_p[worker] = &workers_memory[worker]->worker_private; w->dq = workers_memory[worker]->deque; +#ifdef __linux__ + current_worker = w; +#else + pthread_setspecific(worker_key, w); +#endif // Initialize public worker data wt->dq = w->dq; @@ -318,7 +424,11 @@ lace_init_worker(int worker) w->split = w->dq; w->allstolen = 0; w->worker = worker; +#if LACE_USE_HWLOC w->pu = worker % n_cores; +#else + w->pu = -1; +#endif w->enabled = 1; if (workers_init[worker].stack != 0) { w->stack_trigger = ((size_t)workers_init[worker].stack) + workers_init[worker].stacksize/20; @@ -328,20 +438,10 @@ lace_init_worker(int worker) w->rng = (((uint64_t)rand())<<32 | rand()); #if LACE_COUNT_EVENTS - // Reset counters + // Initialize counters { int k; for (k=0; kctr[k] = 0; } #endif - // Set pointers -#ifdef __linux__ - current_worker = w; -#else - pthread_setspecific(worker_key, w); -#endif - - // Check if everything is on the correct node - lace_check_memory(); - // Synchronize with others lace_barrier(); @@ -350,9 +450,14 @@ lace_init_worker(int worker) w->level = 0; #endif - return w; + if (worker == 0) { + lace_time_event(w, 1); + } } +/** + * Some OSX systems do not implement pthread_barrier_t, so we provide an implementation here. + */ #if defined(__APPLE__) && !defined(pthread_barrier_t) typedef int pthread_barrierattr_t; @@ -442,13 +547,13 @@ lace_resume() } /** - * With set_workers, all workers 0..(N-1) are enabled and N..max are disabled. - * You can never disable the current worker or reduce the number of workers below 1. + * Disable worker . + * If the given worker is the current worker, this function does nothing. */ void -lace_disable_worker(int worker) +lace_disable_worker(unsigned int worker) { - int self = lace_get_worker()->worker; + unsigned int self = lace_get_worker()->worker; if (worker == self) return; if (workers_p[worker]->enabled == 1) { workers_p[worker]->enabled = 0; @@ -456,10 +561,14 @@ lace_disable_worker(int worker) } } +/** + * Enable worker . + * If the given worker is the current worker, this function does nothing. + */ void -lace_enable_worker(int worker) +lace_enable_worker(unsigned int worker) { - int self = lace_get_worker()->worker; + unsigned int self = lace_get_worker()->worker; if (worker == self) return; if (workers_p[worker]->enabled == 0) { workers_p[worker]->enabled = 1; @@ -467,26 +576,38 @@ lace_enable_worker(int worker) } } +/** + * Enables all workers 0..(N-1) and disables workers N..max. + * This function _should_ be called by worker 0. + * Ignores the current worker if >= N. + * The number of workers is never reduces below 1. + */ void -lace_set_workers(int workercount) +lace_set_workers(unsigned int workercount) { if (workercount < 1) workercount = 1; if (workercount > n_workers) workercount = n_workers; enabled_workers = workercount; - int self = lace_get_worker()->worker; + unsigned int self = lace_get_worker()->worker; if (self >= workercount) workercount--; - int i; - for (i=0; ienabled = (i < workercount || i == self) ? 1 : 0; } } -int +/** + * Get the number of currently enabled workers. + */ +unsigned int lace_enabled_workers() { return enabled_workers; } +/** + * Simple random number generated (like rand) using the given seed. + * (Used for thread-specific (scalable) random number generation. + */ static inline uint32_t rng(uint32_t *seed, int max) { @@ -500,6 +621,9 @@ rng(uint32_t *seed, int max) return next % max; } +/** + * (Try to) steal and execute a task from a random worker. + */ VOID_TASK_0(lace_steal_random) { Worker *victim = workers[(__lace_worker->worker + 1 + rng(&__lace_worker->seed, n_workers-1)) % n_workers]; @@ -515,26 +639,19 @@ VOID_TASK_0(lace_steal_random) } } -VOID_TASK_1(lace_steal_random_loop, int*, quit) -{ - while(!(*(volatile int*)quit)) { - lace_steal_random(); - - if (must_suspend) { - lace_barrier(); - do { - pthread_barrier_wait(&suspend_barrier); - } while (__lace_worker->enabled == 0); - } - } -} - +/** + * Variable to hold the main/root task. + */ static lace_startup_cb main_cb; +/** + * Wrapper around the main/root task. + */ static void* lace_main_wrapper(void *arg) { - lace_init_main(); + lace_init_worker(0); + lace_pin_worker(); LACE_ME; WRAP(main_cb, arg); lace_exit(); @@ -547,7 +664,10 @@ lace_main_wrapper(void *arg) return NULL; } -#define lace_steal_loop(quit) CALL(lace_steal_loop, quit) +/** + * Main Lace worker implementation. + * Steal from random victims until "quit" is set. + */ VOID_TASK_1(lace_steal_loop, int*, quit) { // Determine who I am @@ -599,12 +719,12 @@ VOID_TASK_1(lace_steal_loop, int*, quit) /** * Initialize worker 0. + * Calls lace_init_worker and then signals the event. */ void lace_init_main() { - WorkerP * __attribute__((unused)) __lace_worker = lace_init_worker(0); - lace_time_event(__lace_worker, 1); + lace_init_worker(0); } /** @@ -614,16 +734,13 @@ lace_init_main() * For worker 0, use lace_init_main */ void -lace_run_worker(int worker) +lace_run_worker(void) { - // Initialize local datastructure - WorkerP *__lace_worker = lace_init_worker(worker); - Task *__lace_dq_head = __lace_worker->dq; - - // Steal for a while - lace_steal_loop(&lace_quits); + // Run the steal loop + LACE_ME; + CALL(lace_steal_loop, &lace_quits); - // Time the quit event + // Time worker exit event lace_time_event(__lace_worker, 9); // Synchronize with lace_exit @@ -633,7 +750,10 @@ lace_run_worker(int worker) static void* lace_default_worker_thread(void* arg) { - lace_run_worker((int)(size_t)arg); + int worker = (int)(size_t)arg; + lace_init_worker(worker); + lace_pin_worker(); + lace_run_worker(); return NULL; } @@ -646,6 +766,7 @@ lace_spawn_worker(int worker, size_t stacksize, void* (*fun)(void*), void* arg) size_t pagesize = sysconf(_SC_PAGESIZE); stacksize = (stacksize + pagesize - 1) & ~(pagesize - 1); // ceil(stacksize, pagesize) +#if LACE_USE_HWLOC // Get our logical processor hwloc_obj_t pu = hwloc_get_obj_by_type(topo, HWLOC_OBJ_PU, worker % n_pus); @@ -655,6 +776,9 @@ lace_spawn_worker(int worker, size_t stacksize, void* (*fun)(void*), void* arg) fprintf(stderr, "Lace error: Unable to allocate memory for the pthread stack!\n"); exit(1); } +#else + void *stack_location = mmap(NULL, stacksize+ pagesize, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0); +#endif if (0 != mprotect(stack_location, pagesize, PROT_NONE)) { fprintf(stderr, "Lace error: Unable to protect the allocated program stack with a guard page!\n"); @@ -679,22 +803,23 @@ lace_spawn_worker(int worker, size_t stacksize, void* (*fun)(void*), void* arg) return res; } -static int -get_cpu_count() -{ - int count = hwloc_get_nbobjs_by_type(topo, HWLOC_OBJ_PU); - return count < 1 ? 1 : count; -} - +/** + * Set the verbosity of Lace. + */ void lace_set_verbosity(int level) { verbosity = level; } +/** + * Initialize Lace for work-stealing with workers, where + * each worker gets a task deque with elements. + */ void -lace_init(int _n_workers, size_t dqsize) +lace_init(unsigned int _n_workers, size_t dqsize) { +#if LACE_USE_HWLOC // Initialize topology and information about cpus hwloc_topology_init(&topo); hwloc_topology_load(topo); @@ -702,15 +827,23 @@ lace_init(int _n_workers, size_t dqsize) n_nodes = hwloc_get_nbobjs_by_type(topo, HWLOC_OBJ_NODE); n_cores = hwloc_get_nbobjs_by_type(topo, HWLOC_OBJ_CORE); n_pus = hwloc_get_nbobjs_by_type(topo, HWLOC_OBJ_PU); +#elif defined(sched_getaffinity) + cpu_set_t cs; + CPU_ZERO(&cs); + sched_getaffinity(0, sizeof(cs), &cs); + unsigned int n_pus = CPU_COUNT(&cs); +#else + unsigned int n_pus = sysconf(_SC_NPROCESSORS_ONLN); +#endif // Initialize globals - n_workers = _n_workers; - if (n_workers == 0) n_workers = get_cpu_count(); + n_workers = _n_workers == 0 ? n_pus : _n_workers; enabled_workers = n_workers; if (dqsize != 0) default_dqsize = dqsize; + else dqsize = default_dqsize; lace_quits = 0; - // Create barrier for all workers + // Initialize Lace barrier lace_barrier_init(); // Create suspend barrier @@ -724,37 +857,9 @@ lace_init(int _n_workers, size_t dqsize) exit(1); } - // Allocate memory for each worker + // Compute memory size for each worker workers_memory_size = sizeof(worker_data) + sizeof(Task) * dqsize; - for (int i=0; iworker_public; - workers_p[i] = &workers_memory[i]->worker_private; - } - - // Pin allocated memory of each worker - for (int i=0; inodeset, HWLOC_MEMBIND_BIND, HWLOC_MEMBIND_STRICT | HWLOC_MEMBIND_MIGRATE | HWLOC_MEMBIND_BYNODESET); -#else - int res = hwloc_set_area_membind_nodeset(topo, workers_memory[i], workers_memory_size, core->nodeset, HWLOC_MEMBIND_BIND, HWLOC_MEMBIND_STRICT | HWLOC_MEMBIND_MIGRATE); -#endif - if (res != 0) { -#ifndef STORM_SILENCE_WARNINGS - fprintf(stderr, "Lace error: Unable to bind worker memory to node!\n"); -#endif - } - } - // Create pthread key #ifndef __linux__ pthread_key_create(&worker_key, NULL); @@ -773,7 +878,11 @@ lace_init(int _n_workers, size_t dqsize) } if (verbosity) { +#if LACE_USE_HWLOC fprintf(stderr, "Initializing Lace, %u nodes, %u cores, %u logical processors, %d workers.\n", n_nodes, n_cores, n_pus, n_workers); +#else + fprintf(stderr, "Initializing Lace, %u available cores, %d workers.\n", n_pus, n_workers); +#endif } // Prepare lace_init structure @@ -788,11 +897,18 @@ lace_init(int _n_workers, size_t dqsize) #endif } +/** + * Start the worker threads. + * If cb is set, then the current thread is suspended and Worker 0 is a new thread that starts with + * the given cb(arg) as the root task. + * If cb is not set, then the current thread is Worker 0 and this function returns. + */ void lace_startup(size_t stacksize, lace_startup_cb cb, void *arg) { if (stacksize == 0) stacksize = default_stacksize; + /* Report startup if verbose */ if (verbosity) { if (cb != 0) { fprintf(stderr, "Lace startup, creating %d worker threads with program stack %zu bytes.\n", n_workers, stacksize); @@ -803,22 +919,21 @@ lace_startup(size_t stacksize, lace_startup_cb cb, void *arg) } } - /* Spawn workers */ - int i; - for (i=1; id.args.arg_1 = t; t2->d.args.arg_2 = &done; - while (!cas(&lace_newframe.t, 0, &_t2)) lace_yield(__lace_worker, __lace_dq_head); + while (!__sync_bool_compare_and_swap(&lace_newframe.t, 0, &_t2)) lace_yield(__lace_worker, __lace_dq_head); lace_sync_and_exec(__lace_worker, __lace_dq_head, &_t2); } @@ -1113,10 +1238,13 @@ lace_do_newframe(WorkerP *__lace_worker, Task *__lace_dq_head, Task *t) compiler_barrier(); - while (!cas(&lace_newframe.t, 0, &_s)) lace_yield(__lace_worker, __lace_dq_head); + while (!__sync_bool_compare_and_swap(&lace_newframe.t, 0, &_s)) lace_yield(__lace_worker, __lace_dq_head); lace_sync_and_exec(__lace_worker, __lace_dq_head, &_t2); } +/** + * Called by _SPAWN functions when the Task stack is full. + */ void lace_abort_stack_overflow(void) { diff --git a/resources/3rdparty/sylvan/src/lace.h b/resources/3rdparty/sylvan/src/lace.h index 4f49f63dc..0b4b7a06f 100755 --- a/resources/3rdparty/sylvan/src/lace.h +++ b/resources/3rdparty/sylvan/src/lace.h @@ -23,40 +23,281 @@ #ifndef __LACE_H__ #define __LACE_H__ +#ifdef __has_include +# if __has_include("lace_config.h") +# include +# else +# define LACE_PIE_TIMES 0 +# define LACE_COUNT_TASKS 0 +# define LACE_COUNT_STEALS 0 +# define LACE_COUNT_SPLITS 0 +# define LACE_USE_HWLOC 0 +# endif +#endif + #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ -/* Some flags */ +/** + * Using Lace. + * + * Optionally set the verbosity level with lace_set_verbosity. + * Then call lace_init to initialize the system. + * - lace_init(n_workers, deque_size); + * set both parameters to 0 for reasonable defaults, using all available cores. + * + * You can create Worker threads yourself or let Lace create threads with lace_startup. + * + * When creating threads yourself, call the following functions: + * - lace_init_worker to allocate and initialize the worker data structures + * this method returns when all workers have called lace_init_worker + * - lace_pin_worker (optional) to pin the thread and memory to a core + * The main worker can now start its root task. All other workers: + * - lace_run_worker to perform work-stealing until the main worker calls lace_exit + * + * When letting Lace create threads with lace_startup + * - Call lace_startup with a callback to create N threads. + * Returns after the callback has returned and all created threads are destroyed + * - Call lace_startup without a callback to create N-1 threads. + * Returns control to the caller. When lace_exit is called, all created threads are terminated. + */ -#ifndef LACE_DEBUG_PROGRAMSTACK /* Write to stderr when 95% program stack reached */ -#define LACE_DEBUG_PROGRAMSTACK 0 -#endif +/** + * Type definitions used in the functions below. + * - WorkerP contains the (private) Worker data + * - Task contains a single Task + */ +typedef struct _WorkerP WorkerP; +typedef struct _Task Task; -#ifndef LACE_LEAP_RANDOM /* Use random leaping when leapfrogging fails */ -#define LACE_LEAP_RANDOM 0 -#endif +/** + * The macro LACE_TYPEDEF_CB(typedefname, taskname, parametertypes) defines + * a Task for use as a callback function. + */ +#define LACE_TYPEDEF_CB(t, f, ...) typedef t (*f)(WorkerP *, Task *, ##__VA_ARGS__); -#ifndef LACE_PIE_TIMES /* Record time spent stealing and leapfrogging */ -#define LACE_PIE_TIMES 0 -#endif +/** + * The lace_startup_cb type for a void Task with one void* parameter. + */ +LACE_TYPEDEF_CB(void, lace_startup_cb, void*); -#ifndef LACE_COUNT_TASKS /* Count number of tasks executed */ -#define LACE_COUNT_TASKS 0 -#endif +/** + * Set verbosity level (0 = no startup messages, 1 = startup messages) + * Default level: 0 + */ +void lace_set_verbosity(int level); + +/** + * Initialize Lace for workers with a deque size of per worker. + * If is set to 0, automatically detects available cores. + * If is est to 0, uses a reasonable default value. + */ +void lace_init(unsigned int n_workers, size_t dqsize); + +/** + * Let Lace create worker threads. + * If is set to 0, uses a reaonable default value. + * If cb, arg are set to 0, then the current thread is initialized as the main Worker (Worker 0). + * + * If cb,arg are set, then the current thread is suspended. A new thread is made for Worker 0 and + * the task cb with paremeter arg is called; when cb returns, Lace is exited automatically. + */ +void lace_startup(size_t stacksize, lace_startup_cb, void* arg); + +/** + * Initialize worker , allocating memory. + * If is 0, then the current thread is the main worker. + */ +void lace_init_worker(unsigned int worker); + +/** + * Use hwloc to pin the current thread to a CPU and its allocated memory in the closest domain. + * Call this *after* lace_init_worker and *before* lace_run_worker. + */ +void lace_pin_worker(void); + +/** + * Perform work-stealing until lace_exit is called. + */ +void lace_run_worker(void); + +/** + * Steal a random task. + */ +#define lace_steal_random() CALL(lace_steal_random) +void lace_steal_random_CALL(WorkerP*, Task*); + +/** + * Enter the Lace barrier. (all active workers must enter it before we can continue) + */ +void lace_barrier(); + +/** + * Suspend all workers except the current worker. + * May only be used when all other workers are idle. + */ +void lace_suspend(); + +/** + * Resume all workers. + */ +void lace_resume(); + +/** + * When all other workers are suspended, some workers can be disabled using the following functions. + * With set_workers, all workers 0..(N-1) are enabled and N..max are disabled. + * You can never disable the current worker or reduce the number of workers below 1. + * You cannot add workers. + */ +void lace_set_workers(unsigned int workercount); + +/** + * Disable a suspended worker. + */ +void lace_disable_worker(unsigned int worker); + +/** + * Enable a suspended worker. + */ +void lace_enable_worker(unsigned int worker); + +/** + * Retrieve the number of enabled/active workers. + */ +unsigned int lace_enabled_workers(); + +/** + * Retrieve the number of Lace workers + */ +unsigned int lace_workers(); + +/** + * Retrieve the default program stack size + */ +size_t lace_default_stacksize(); + +/** + * Retrieve the current worker data. + */ +WorkerP *lace_get_worker(); + +/** + * Retrieve the current head of the deque + */ +Task *lace_get_head(WorkerP *); + +/** + * Exit Lace. + * This function is automatically called when lace_startup is called with a callback. + * This function must be called to exit Lace when lace_startup is called without a callback. + */ +void lace_exit(); + +/** + * Create a pointer to a Tasks main function. + */ +#define TASK(f) ( f##_CALL ) + +/** + * Call a Tasks implementation (adds Lace variables to call) + */ +#define WRAP(f, ...) ( f((WorkerP *)__lace_worker, (Task *)__lace_dq_head, ##__VA_ARGS__) ) + +/** + * Sync a task. + */ +#define SYNC(f) ( __lace_dq_head--, WRAP(f##_SYNC) ) + +/** + * Sync a task, but if the task is not stolen, then do not execute it. + */ +#define DROP() ( __lace_dq_head--, WRAP(lace_drop) ) + +/** + * Spawn a task. + */ +#define SPAWN(f, ...) ( WRAP(f##_SPAWN, ##__VA_ARGS__), __lace_dq_head++ ) + +/** + * Directly execute a task. + */ +#define CALL(f, ...) ( WRAP(f##_CALL, ##__VA_ARGS__) ) + +/** + * Signal all workers to interrupt their current tasks and instead perform (a personal copy of) the given task. + */ +#define TOGETHER(f, ...) ( WRAP(f##_TOGETHER, ##__VA_ARGS__) ) + +/** + * Signal all workers to interrupt their current tasks and help the current thread with the given task. + */ +#define NEWFRAME(f, ...) ( WRAP(f##_NEWFRAME, ##__VA_ARGS__) ) + +/** + * (Try to) steal a task from a random worker. + */ +#define STEAL_RANDOM() ( CALL(lace_steal_random) ) + +/** + * Get the current worker id. + */ +#define LACE_WORKER_ID ( __lace_worker->worker ) + +/** + * Get the core where the current worker is pinned. + */ +#define LACE_WORKER_PU ( __lace_worker->pu ) + +/** + * Initialize local variables __lace_worker and __lace_dq_head which are required for most Lace functionality. + */ +#define LACE_ME WorkerP * __attribute__((unused)) __lace_worker = lace_get_worker(); Task * __attribute__((unused)) __lace_dq_head = lace_get_head(__lace_worker); -#ifndef LACE_COUNT_STEALS /* Count number of steals performed */ -#define LACE_COUNT_STEALS 0 +/** + * Check if current tasks must be interrupted, and if so, interrupt. + */ +void lace_yield(WorkerP *__lace_worker, Task *__lace_dq_head); +#define YIELD_NEWFRAME() { if (unlikely((*(Task* volatile *)&lace_newframe.t) != NULL)) lace_yield(__lace_worker, __lace_dq_head); } + +/** + * True if the given task is stolen, False otherwise. + */ +#define TASK_IS_STOLEN(t) ((size_t)t->thief > 1) + +/** + * True if the given task is completed, False otherwise. + */ +#define TASK_IS_COMPLETED(t) ((size_t)t->thief == 2) + +/** + * Retrieves a pointer to the result of the given task. + */ +#define TASK_RESULT(t) (&t->d[0]) + +/** + * Compute a random number, thread-local (so scalable) + */ +#define LACE_TRNG (__lace_worker->rng = 2862933555777941757ULL * __lace_worker->rng + 3037000493ULL) + +/* Some flags that influence Lace behavior */ + +#ifndef LACE_DEBUG_PROGRAMSTACK /* Write to stderr when 95% program stack reached */ +#define LACE_DEBUG_PROGRAMSTACK 0 #endif -#ifndef LACE_COUNT_SPLITS /* Count number of times the split point is moved */ -#define LACE_COUNT_SPLITS 0 +#ifndef LACE_LEAP_RANDOM /* Use random leaping when leapfrogging fails */ +#define LACE_LEAP_RANDOM 1 #endif #ifndef LACE_COUNT_EVENTS #define LACE_COUNT_EVENTS (LACE_PIE_TIMES || LACE_COUNT_TASKS || LACE_COUNT_STEALS || LACE_COUNT_SPLITS) #endif +/** + * Now follows the implementation of Lace + */ + /* Typical cacheline size of system architectures */ #ifndef LINE_SIZE #define LINE_SIZE 64 @@ -167,10 +408,6 @@ typedef enum { CTR_MAX } CTR_index; -struct _WorkerP; -struct _Worker; -struct _Task; - #define THIEF_EMPTY ((struct _Worker*)0x0) #define THIEF_TASK ((struct _Worker*)0x1) #define THIEF_COMPLETED ((struct _Worker*)0x2) @@ -215,7 +452,7 @@ typedef struct _WorkerP { size_t stack_trigger; // for stack overflow detection uint64_t rng; // my random seed (for lace_trng) uint32_t seed; // my random seed (for lace_steal_random) - int16_t worker; // what is my worker id? + uint16_t worker; // what is my worker id? uint8_t allstolen; // my allstolen volatile int8_t enabled; // if this worker is enabled @@ -228,145 +465,10 @@ typedef struct _WorkerP { int16_t pu; // my pu (for HWLOC) } WorkerP; -#define LACE_TYPEDEF_CB(t, f, ...) typedef t (*f)(WorkerP *, Task *, ##__VA_ARGS__); -LACE_TYPEDEF_CB(void, lace_startup_cb, void*); - -/** - * Using Lace. - * - * Optionally set the verbosity level with lace_set_verbosity. - * Call lace_init to allocate all data structures. - * - * You can create threads yourself or let Lace create threads with lace_startup. - * - * When creating threads yourself: - * - call lace_init_main for worker 0 - * this method returns when all other workers have started - * - call lace_run_worker for all other workers - * workers perform work-stealing until worker 0 calls lace_exit - * - * When letting Lace create threads with lace_startup - * - calling with startup callback creates N threads and returns - * after the callback has returned, and all created threads are destroyed - * - calling without a startup callback creates N-1 threads and returns - * control to the caller. When lace_exit is called, all created threads are terminated. - */ - -/** - * Set verbosity level (0 = no startup messages, 1 = startup messages) - * Default level: 0 - */ -void lace_set_verbosity(int level); - -/** - * Initialize master structures for Lace with workers - * and default deque size of . - * Does not create new threads. - * Tries to detect number of cpus, if n_workers equals 0. - */ -void lace_init(int n_workers, size_t dqsize); - -/** - * After lace_init, start all worker threads. - * If cb,arg are set, suspend this thread, call cb(arg) in a new thread - * and exit Lace upon return - * Otherwise, the current thread is initialized as worker 0. - */ -void lace_startup(size_t stacksize, lace_startup_cb, void* arg); - -/** - * Initialize worker 0. This method returns when all other workers are initialized - * (using lace_run_worker). - * - * When done, run lace_exit so all worker threads return from lace_run_worker. - */ -void lace_init_main(); - -/** - * Initialize the current thread as the Lace thread of worker , and perform - * work-stealing until lace_exit is called. - * - * For worker 0, call lace_init_main instead. - */ -void lace_run_worker(int worker); - -/** - * Steal a random task. - */ -#define lace_steal_random() CALL(lace_steal_random) -void lace_steal_random_CALL(WorkerP*, Task*); - -/** - * Barrier (all workers must enter it before progressing) - */ -void lace_barrier(); - -/** - * Suspend and resume all other workers. - * May only be used when all other workers are idle. - */ -void lace_suspend(); -void lace_resume(); - -/** - * When all tasks are suspended, workers can be temporarily disabled. - * With set_workers, all workers 0..(N-1) are enabled and N..max are disabled. - * You can never disable the current worker or reduce the number of workers below 1. - * You cannot add workers. - */ -void lace_disable_worker(int worker); -void lace_enable_worker(int worker); -void lace_set_workers(int workercount); -int lace_enabled_workers(); - -/** - * Retrieve number of Lace workers - */ -size_t lace_workers(); - -/** - * Retrieve default program stack size - */ -size_t lace_default_stacksize(); - -/** - * Retrieve current worker. - */ -WorkerP *lace_get_worker(); - -/** - * Retrieve the current head of the deque - */ -Task *lace_get_head(WorkerP *); - -/** - * Exit Lace. Automatically called when started with cb,arg. - */ -void lace_exit(); - #define LACE_STOLEN ((Worker*)0) #define LACE_BUSY ((Worker*)1) #define LACE_NOWORK ((Worker*)2) -#define TASK(f) ( f##_CALL ) -#define WRAP(f, ...) ( f((WorkerP *)__lace_worker, (Task *)__lace_dq_head, ##__VA_ARGS__) ) -#define SYNC(f) ( __lace_dq_head--, WRAP(f##_SYNC) ) -#define DROP() ( __lace_dq_head--, WRAP(lace_drop) ) -#define SPAWN(f, ...) ( WRAP(f##_SPAWN, ##__VA_ARGS__), __lace_dq_head++ ) -#define CALL(f, ...) ( WRAP(f##_CALL, ##__VA_ARGS__) ) -#define TOGETHER(f, ...) ( WRAP(f##_TOGETHER, ##__VA_ARGS__) ) -#define NEWFRAME(f, ...) ( WRAP(f##_NEWFRAME, ##__VA_ARGS__) ) -#define STEAL_RANDOM() ( CALL(lace_steal_random) ) -#define LACE_WORKER_ID ( __lace_worker->worker ) -#define LACE_WORKER_PU ( __lace_worker->pu ) - -/* Use LACE_ME to initialize Lace variables, in case you want to call multiple Lace tasks */ -#define LACE_ME WorkerP * __attribute__((unused)) __lace_worker = lace_get_worker(); Task * __attribute__((unused)) __lace_dq_head = lace_get_head(__lace_worker); - -#define TASK_IS_STOLEN(t) ((size_t)t->thief > 1) -#define TASK_IS_COMPLETED(t) ((size_t)t->thief == 2) -#define TASK_RESULT(t) (&t->d[0]) - #if LACE_DEBUG_PROGRAMSTACK static inline void CHECKSTACK(WorkerP *w) { @@ -402,14 +504,6 @@ extern lace_newframe_t lace_newframe; void lace_do_together(WorkerP *__lace_worker, Task *__lace_dq_head, Task *task); void lace_do_newframe(WorkerP *__lace_worker, Task *__lace_dq_head, Task *task); -void lace_yield(WorkerP *__lace_worker, Task *__lace_dq_head); -#define YIELD_NEWFRAME() { if (unlikely((*(Task* volatile *)&lace_newframe.t) != NULL)) lace_yield(__lace_worker, __lace_dq_head); } - -/** - * Compute a random number, thread-local - */ -#define LACE_TRNG (__lace_worker->rng = 2862933555777941757ULL * __lace_worker->rng + 3037000493ULL) - /** * Make all tasks of the current worker shared. */ diff --git a/resources/3rdparty/sylvan/src/sylvan.h b/resources/3rdparty/sylvan/src/sylvan.h index aac4026ae..41ae81948 100755 --- a/resources/3rdparty/sylvan/src/sylvan.h +++ b/resources/3rdparty/sylvan/src/sylvan.h @@ -1,6 +1,6 @@ /* * Copyright 2011-2016 Formal Methods and Tools, University of Twente - * Copyright 2016 Tom van Dijk, Johannes Kepler University Linz + * Copyright 2016-2017 Tom van Dijk, Johannes Kepler University Linz * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,24 +17,49 @@ /** * Sylvan: parallel MTBDD/ListDD package. - * - * This is a multi-core implementation of MTBDDs with complement edges. - * - * This package requires parallel the work-stealing framework Lace. - * Lace must be initialized before initializing Sylvan + * Include this file. */ #include +#include +#include #include #include // for FILE #include // for realloc +#include +#include + +#if SYLVAN_STATS +#ifdef __MACH__ +#include +#else +#include +#endif +#endif + +/** + * Sylvan header files outside the namespace + */ #include #include +#ifdef __cplusplus +//namespace sylvan { +#endif + +/** + * Sylvan header files inside the namespace + */ + #include #include +#include #include #include #include + +#ifdef __cplusplus +//} +#endif diff --git a/resources/3rdparty/sylvan/src/sylvan_bdd.c b/resources/3rdparty/sylvan/src/sylvan_bdd.c index bb1aa0aed..e874d7276 100755 --- a/resources/3rdparty/sylvan/src/sylvan_bdd.c +++ b/resources/3rdparty/sylvan/src/sylvan_bdd.c @@ -1,6 +1,6 @@ /* * Copyright 2011-2016 Formal Methods and Tools, University of Twente - * Copyright 2016 Tom van Dijk, Johannes Kepler University Linz + * Copyright 2016-2017 Tom van Dijk, Johannes Kepler University Linz * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,20 +15,12 @@ * limitations under the License. */ -#include +#include -#include #include #include -#include -#include -#include -#include #include -#include -#include - #include static int granularity = 1; // default @@ -45,12 +37,6 @@ sylvan_get_granularity() return granularity; } -BDD -sylvan_ithvar(BDDVAR level) -{ - return sylvan_makenode(level, sylvan_false, sylvan_true); -} - /** * Implementation of unary, binary and if-then-else operators. */ @@ -1834,10 +1820,10 @@ TASK_IMPL_3(BDD, sylvan_union_cube, BDD, bdd, BDDSET, vars, uint8_t *, cube) } else if (v > n_level) { BDD high = node_high(bdd, n); BDD low = node_low(bdd, n); - SPAWN(sylvan_union_cube, high, vars, cube); + bdd_refs_spawn(SPAWN(sylvan_union_cube, high, vars, cube)); BDD new_low = sylvan_union_cube(low, vars, cube); bdd_refs_push(new_low); - BDD new_high = SYNC(sylvan_union_cube); + BDD new_high = bdd_refs_sync(SYNC(sylvan_union_cube)); bdd_refs_pop(1); if (new_low != low || new_high != high) { result = sylvan_makenode(n_level, new_low, new_high); diff --git a/resources/3rdparty/sylvan/src/sylvan_bdd.h b/resources/3rdparty/sylvan/src/sylvan_bdd.h index 4d32fc910..f7ae74091 100755 --- a/resources/3rdparty/sylvan/src/sylvan_bdd.h +++ b/resources/3rdparty/sylvan/src/sylvan_bdd.h @@ -1,6 +1,6 @@ /* * Copyright 2011-2016 Formal Methods and Tools, University of Twente - * Copyright 2016 Tom van Dijk, Johannes Kepler University Linz + * Copyright 2016-2017 Tom van Dijk, Johannes Kepler University Linz * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,10 +23,19 @@ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ - + /* For strictly non-MT BDDs */ -#define sylvan_isconst(bdd) (bdd == sylvan_true || bdd == sylvan_false) -#define sylvan_isnode(bdd) (bdd != sylvan_true && bdd != sylvan_false) +static inline int +sylvan_isconst(MTBDD bdd) +{ + return bdd == mtbdd_true || bdd == mtbdd_false ? 1 : 0; +} + +static inline int +sylvan_isnode(MTBDD bdd) +{ + return bdd != mtbdd_true && bdd != mtbdd_false ? 1 : 0; +} /** * Granularity (BDD only) determines usage of operation cache. @@ -43,15 +52,16 @@ extern "C" { void sylvan_set_granularity(int granularity); int sylvan_get_granularity(void); -/* Create a BDD representing just or the negation of */ -BDD sylvan_ithvar(BDDVAR var); -#define sylvan_nithvar(var) sylvan_not(sylvan_ithvar(var)) - /* * Unary, binary and if-then-else operations. * These operations are all implemented by NOT, AND and XOR. */ -#define sylvan_not(a) (((BDD)a)^sylvan_complement) +static inline BDD +sylvan_not(BDD a) +{ + return a ^ sylvan_complement; +} + TASK_DECL_4(BDD, sylvan_ite, BDD, BDD, BDD, BDDVAR); #define sylvan_ite(a,b,c) (CALL(sylvan_ite,a,b,c,0)) TASK_DECL_3(BDD, sylvan_and, BDD, BDD, BDDVAR); @@ -68,6 +78,13 @@ TASK_DECL_3(BDD, sylvan_xor, BDD, BDD, BDDVAR); #define sylvan_diff(a,b) sylvan_and(a,sylvan_not(b)) #define sylvan_less(a,b) sylvan_and(sylvan_not(a),b) +/* Create a BDD representing just or the negation of */ +static inline BDD +sylvan_nithvar(uint32_t var) +{ + return sylvan_not(sylvan_ithvar(var)); +} + /** * Existential and universal quantification. */ @@ -265,7 +282,11 @@ sylvan_fprint(FILE *f, BDD bdd) sylvan_serialize_totext(f); } -#define sylvan_print(dd) sylvan_fprint(stdout, dd) +static void __attribute__((unused)) +sylvan_print(BDD bdd) +{ + return sylvan_fprint(stdout, bdd); +} #include "sylvan_bdd_storm.h" diff --git a/resources/3rdparty/sylvan/src/sylvan_bdd_storm.h b/resources/3rdparty/sylvan/src/sylvan_bdd_storm.h index f28259a84..737ca0c65 100644 --- a/resources/3rdparty/sylvan/src/sylvan_bdd_storm.h +++ b/resources/3rdparty/sylvan/src/sylvan_bdd_storm.h @@ -1,6 +1,14 @@ +#ifdef __cplusplus +extern "C" { +#endif + #define bdd_isnegated(dd) ((dd & sylvan_complement) ? 1 : 0) #define bdd_regular(dd) (dd & ~sylvan_complement) #define bdd_isterminal(dd) (dd == sylvan_false || dd == sylvan_true) TASK_DECL_3(BDD, sylvan_existsRepresentative, BDD, BDD, BDDVAR); #define sylvan_existsRepresentative(a, vars) (CALL(sylvan_existsRepresentative, a, vars, 0)) + +#ifdef __cplusplus +} +#endif diff --git a/resources/3rdparty/sylvan/src/sylvan_cache.c b/resources/3rdparty/sylvan/src/sylvan_cache.c index 295679f59..8a39d751a 100755 --- a/resources/3rdparty/sylvan/src/sylvan_cache.c +++ b/resources/3rdparty/sylvan/src/sylvan_cache.c @@ -1,6 +1,6 @@ /* * Copyright 2011-2016 Formal Methods and Tools, University of Twente - * Copyright 2016 Tom van Dijk, Johannes Kepler University Linz + * Copyright 2016-2017 Tom van Dijk, Johannes Kepler University Linz * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,19 +15,20 @@ * limitations under the License. */ +#include + #include // for errno -#include // for fprintf -#include // for uint32_t etc -#include // for exit #include // for strerror #include // for mmap -#include - #ifndef MAP_ANONYMOUS #define MAP_ANONYMOUS MAP_ANON #endif +#ifndef CACHE_MASK +#define CACHE_MASK 1 +#endif + #ifndef compiler_barrier #define compiler_barrier() { asm volatile("" ::: "memory"); } #endif diff --git a/resources/3rdparty/sylvan/src/sylvan_cache.h b/resources/3rdparty/sylvan/src/sylvan_cache.h index e40185454..88afb1af1 100755 --- a/resources/3rdparty/sylvan/src/sylvan_cache.h +++ b/resources/3rdparty/sylvan/src/sylvan_cache.h @@ -1,6 +1,6 @@ /* * Copyright 2011-2016 Formal Methods and Tools, University of Twente - * Copyright 2016 Tom van Dijk, Johannes Kepler University Linz + * Copyright 2016-2017 Tom van Dijk, Johannes Kepler University Linz * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,21 +15,15 @@ * limitations under the License. */ -#include +/* Do not include this file directly. Instead, include sylvan_int.h */ -#include // for uint32_t etc - -#ifndef CACHE_H -#define CACHE_H +#ifndef SYLVAN_CACHE_H +#define SYLVAN_CACHE_H #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ -#ifndef CACHE_MASK -#define CACHE_MASK 1 -#endif - /** * Operation cache * diff --git a/resources/3rdparty/sylvan/src/sylvan_common.c b/resources/3rdparty/sylvan/src/sylvan_common.c index 38d3a8876..71f748f8c 100755 --- a/resources/3rdparty/sylvan/src/sylvan_common.c +++ b/resources/3rdparty/sylvan/src/sylvan_common.c @@ -1,6 +1,6 @@ /* * Copyright 2011-2016 Formal Methods and Tools, University of Twente - * Copyright 2016 Tom van Dijk, Johannes Kepler University Linz + * Copyright 2016-2017 Tom van Dijk, Johannes Kepler University Linz * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/resources/3rdparty/sylvan/src/sylvan_common.h b/resources/3rdparty/sylvan/src/sylvan_common.h index bc6841134..4e55d9153 100755 --- a/resources/3rdparty/sylvan/src/sylvan_common.h +++ b/resources/3rdparty/sylvan/src/sylvan_common.h @@ -1,6 +1,6 @@ /* * Copyright 2011-2016 Formal Methods and Tools, University of Twente - * Copyright 2016 Tom van Dijk, Johannes Kepler University Linz + * Copyright 2016-2017 Tom van Dijk, Johannes Kepler University Linz * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,6 +15,8 @@ * limitations under the License. */ +/* Do not include this file directly. Instead, include sylvan.h */ + #ifndef SYLVAN_COMMON_H #define SYLVAN_COMMON_H diff --git a/resources/3rdparty/sylvan/src/sylvan_gmp.c b/resources/3rdparty/sylvan/src/sylvan_gmp.c index bda6c2eee..394033f6f 100755 --- a/resources/3rdparty/sylvan/src/sylvan_gmp.c +++ b/resources/3rdparty/sylvan/src/sylvan_gmp.c @@ -1,6 +1,6 @@ /* * Copyright 2011-2016 Formal Methods and Tools, University of Twente - * Copyright 2016 Tom van Dijk, Johannes Kepler University Linz + * Copyright 2016-2017 Tom van Dijk, Johannes Kepler University Linz * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,14 +16,11 @@ */ #include +#include -#include #include #include -#include -#include - static uint32_t gmp_type; /** diff --git a/resources/3rdparty/sylvan/src/sylvan_gmp.h b/resources/3rdparty/sylvan/src/sylvan_gmp.h index 7675999c0..8bf3b909a 100755 --- a/resources/3rdparty/sylvan/src/sylvan_gmp.h +++ b/resources/3rdparty/sylvan/src/sylvan_gmp.h @@ -1,6 +1,6 @@ /* * Copyright 2011-2016 Formal Methods and Tools, University of Twente - * Copyright 2016 Tom van Dijk, Johannes Kepler University Linz + * Copyright 2016-2017 Tom van Dijk, Johannes Kepler University Linz * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -19,13 +19,14 @@ * This is an implementation of GMP mpq custom leaves of MTBDDs */ -#ifndef SYLVAN_GMP_H -#define SYLVAN_GMP_H - #include #include +#ifndef SYLVAN_GMP_H +#define SYLVAN_GMP_H + #ifdef __cplusplus +namespace sylvan { extern "C" { #endif /* __cplusplus */ @@ -185,6 +186,7 @@ TASK_DECL_2(MTBDD, gmp_strict_threshold_d, MTBDD, double); #ifdef __cplusplus } +} #endif /* __cplusplus */ #endif diff --git a/resources/3rdparty/sylvan/src/sylvan_int.h b/resources/3rdparty/sylvan/src/sylvan_int.h index e8a96df81..0a54d34ce 100755 --- a/resources/3rdparty/sylvan/src/sylvan_int.h +++ b/resources/3rdparty/sylvan/src/sylvan_int.h @@ -1,6 +1,6 @@ /* * Copyright 2011-2016 Formal Methods and Tools, University of Twente - * Copyright 2016 Tom van Dijk, Johannes Kepler University Linz + * Copyright 2016-2017 Tom van Dijk, Johannes Kepler University Linz * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,14 +16,22 @@ */ /** - * Internals of Sylvan + * Sylvan: parallel MTBDD/ListDD package. + * Include this file for access to internals. */ #include +#ifdef __cplusplus +namespace sylvan { +#endif + +/** + * Sylvan internal header files inside the namespace + */ + #include #include -#include #ifndef SYLVAN_INT_H #define SYLVAN_INT_H @@ -42,68 +50,68 @@ extern llmsset_t nodes; */ // BDD operations -#define CACHE_BDD_ITE (0LL<<40) -#define CACHE_BDD_AND (1LL<<40) -#define CACHE_BDD_XOR (2LL<<40) -#define CACHE_BDD_EXISTS (3LL<<40) -#define CACHE_BDD_PROJECT (4LL<<40) -#define CACHE_BDD_AND_EXISTS (5LL<<40) -#define CACHE_BDD_AND_PROJECT (6LL<<40) -#define CACHE_BDD_RELNEXT (7LL<<40) -#define CACHE_BDD_RELPREV (8LL<<40) -#define CACHE_BDD_SATCOUNT (9LL<<40) -#define CACHE_BDD_COMPOSE (10LL<<40) -#define CACHE_BDD_RESTRICT (11LL<<40) -#define CACHE_BDD_CONSTRAIN (12LL<<40) -#define CACHE_BDD_CLOSURE (13LL<<40) -#define CACHE_BDD_ISBDD (14LL<<40) -#define CACHE_BDD_SUPPORT (15LL<<40) -#define CACHE_BDD_PATHCOUNT (16LL<<40) +static const uint64_t CACHE_BDD_ITE = (0LL<<40); +static const uint64_t CACHE_BDD_AND = (1LL<<40); +static const uint64_t CACHE_BDD_XOR = (2LL<<40); +static const uint64_t CACHE_BDD_EXISTS = (3LL<<40); +static const uint64_t CACHE_BDD_PROJECT = (4LL<<40); +static const uint64_t CACHE_BDD_AND_EXISTS = (5LL<<40); +static const uint64_t CACHE_BDD_AND_PROJECT = (6LL<<40); +static const uint64_t CACHE_BDD_RELNEXT = (7LL<<40); +static const uint64_t CACHE_BDD_RELPREV = (8LL<<40); +static const uint64_t CACHE_BDD_SATCOUNT = (9LL<<40); +static const uint64_t CACHE_BDD_COMPOSE = (10LL<<40); +static const uint64_t CACHE_BDD_RESTRICT = (11LL<<40); +static const uint64_t CACHE_BDD_CONSTRAIN = (12LL<<40); +static const uint64_t CACHE_BDD_CLOSURE = (13LL<<40); +static const uint64_t CACHE_BDD_ISBDD = (14LL<<40); +static const uint64_t CACHE_BDD_SUPPORT = (15LL<<40); +static const uint64_t CACHE_BDD_PATHCOUNT = (16LL<<40); // MDD operations -#define CACHE_MDD_RELPROD (20LL<<40) -#define CACHE_MDD_MINUS (21LL<<40) -#define CACHE_MDD_UNION (22LL<<40) -#define CACHE_MDD_INTERSECT (23LL<<40) -#define CACHE_MDD_PROJECT (24LL<<40) -#define CACHE_MDD_JOIN (25LL<<40) -#define CACHE_MDD_MATCH (26LL<<40) -#define CACHE_MDD_RELPREV (27LL<<40) -#define CACHE_MDD_SATCOUNT (28LL<<40) -#define CACHE_MDD_SATCOUNTL1 (29LL<<40) -#define CACHE_MDD_SATCOUNTL2 (30LL<<40) +static const uint64_t CACHE_MDD_RELPROD = (20LL<<40); +static const uint64_t CACHE_MDD_MINUS = (21LL<<40); +static const uint64_t CACHE_MDD_UNION = (22LL<<40); +static const uint64_t CACHE_MDD_INTERSECT = (23LL<<40); +static const uint64_t CACHE_MDD_PROJECT = (24LL<<40); +static const uint64_t CACHE_MDD_JOIN = (25LL<<40); +static const uint64_t CACHE_MDD_MATCH = (26LL<<40); +static const uint64_t CACHE_MDD_RELPREV = (27LL<<40); +static const uint64_t CACHE_MDD_SATCOUNT = (28LL<<40); +static const uint64_t CACHE_MDD_SATCOUNTL1 = (29LL<<40); +static const uint64_t CACHE_MDD_SATCOUNTL2 = (30LL<<40); // MTBDD operations -#define CACHE_MTBDD_APPLY (40LL<<40) -#define CACHE_MTBDD_UAPPLY (41LL<<40) -#define CACHE_MTBDD_ABSTRACT (42LL<<40) -#define CACHE_MTBDD_ITE (43LL<<40) -#define CACHE_MTBDD_AND_ABSTRACT_PLUS (44LL<<40) -#define CACHE_MTBDD_AND_ABSTRACT_MAX (45LL<<40) -#define CACHE_MTBDD_SUPPORT (46LL<<40) -#define CACHE_MTBDD_COMPOSE (47LL<<40) -#define CACHE_MTBDD_EQUAL_NORM (48LL<<40) -#define CACHE_MTBDD_EQUAL_NORM_REL (49LL<<40) -#define CACHE_MTBDD_MINIMUM (50LL<<40) -#define CACHE_MTBDD_MAXIMUM (51LL<<40) -#define CACHE_MTBDD_LEQ (52LL<<40) -#define CACHE_MTBDD_LESS (53LL<<40) -#define CACHE_MTBDD_GEQ (54LL<<40) -#define CACHE_MTBDD_GREATER (55LL<<40) -#define CACHE_MTBDD_EVAL_COMPOSE (56LL<<40) -#define CACHE_MTBDD_NONZERO_COUNT (57LL<<40) -#define CACHE_MTBDD_AND_EXISTS_RN (58LL<<40) -#define CACHE_MTBDD_MINIMUM_RN (59LL<<40) -#define CACHE_MTBDD_MAXIMUM_RN (60LL<<40) -#define CACHE_MTBDD_EQUAL_NORM_RN (61LL<<40) -#define CACHE_MTBDD_EQUAL_NORM_REL_RN (62LL<<40) -#define CACHE_MTBDD_AND_EXISTS_RF (63LL<<40) -#define CACHE_MTBDD_MINIMUM_RF (64LL<<40) -#define CACHE_MTBDD_MAXIMUM_RF (65LL<<40) -#define CACHE_MTBDD_EQUAL_NORM_RF (66LL<<40) -#define CACHE_MTBDD_EQUAL_NORM_REL_RF (67LL<<40) - -#define CACHE_MTBDD_ABSTRACT_REPRESENTATIVE (68LL<<40) +static const uint64_t CACHE_MTBDD_APPLY = (40LL<<40); +static const uint64_t CACHE_MTBDD_UAPPLY = (41LL<<40); +static const uint64_t CACHE_MTBDD_ABSTRACT = (42LL<<40); +static const uint64_t CACHE_MTBDD_ITE = (43LL<<40); +static const uint64_t CACHE_MTBDD_AND_ABSTRACT_PLUS = (44LL<<40); +static const uint64_t CACHE_MTBDD_AND_ABSTRACT_MAX = (45LL<<40); +static const uint64_t CACHE_MTBDD_SUPPORT = (46LL<<40); +static const uint64_t CACHE_MTBDD_COMPOSE = (47LL<<40); +static const uint64_t CACHE_MTBDD_EQUAL_NORM = (48LL<<40); +static const uint64_t CACHE_MTBDD_EQUAL_NORM_REL = (49LL<<40); +static const uint64_t CACHE_MTBDD_MINIMUM = (50LL<<40); +static const uint64_t CACHE_MTBDD_MAXIMUM = (51LL<<40); +static const uint64_t CACHE_MTBDD_LEQ = (52LL<<40); +static const uint64_t CACHE_MTBDD_LESS = (53LL<<40); +static const uint64_t CACHE_MTBDD_GEQ = (54LL<<40); +static const uint64_t CACHE_MTBDD_GREATER = (55LL<<40); +static const uint64_t CACHE_MTBDD_EVAL_COMPOSE = (56LL<<40); +static const uint64_t CACHE_MTBDD_NONZERO_COUNT = (57LL<<40); +static const uint64_t CACHE_MTBDD_AND_EXISTS_RN = (58LL<<40); +static const uint64_t CACHE_MTBDD_MINIMUM_RN = (59LL<<40); +static const uint64_t CACHE_MTBDD_MAXIMUM_RN = (60LL<<40); +static const uint64_t CACHE_MTBDD_EQUAL_NORM_RN = (61LL<<40); +static const uint64_t CACHE_MTBDD_EQUAL_NORM_REL_RN = (62LL<<40); +static const uint64_t CACHE_MTBDD_AND_EXISTS_RF = (63LL<<40); +static const uint64_t CACHE_MTBDD_MINIMUM_RF = (64LL<<40); +static const uint64_t CACHE_MTBDD_MAXIMUM_RF = (65LL<<40); +static const uint64_t CACHE_MTBDD_EQUAL_NORM_RF = (66LL<<40); +static const uint64_t CACHE_MTBDD_EQUAL_NORM_REL_RF = (67LL<<40); + +static const uint64_t CACHE_MTBDD_ABSTRACT_REPRESENTATIVE = (68LL<<40); #ifdef __cplusplus } @@ -112,4 +120,8 @@ extern llmsset_t nodes; #include #include +#ifdef __cplusplus +} /* namespace */ +#endif + #endif diff --git a/resources/3rdparty/sylvan/src/sylvan_ldd.c b/resources/3rdparty/sylvan/src/sylvan_ldd.c index 6449e2f7d..0835933de 100755 --- a/resources/3rdparty/sylvan/src/sylvan_ldd.c +++ b/resources/3rdparty/sylvan/src/sylvan_ldd.c @@ -1,6 +1,6 @@ /* * Copyright 2011-2016 Formal Methods and Tools, University of Twente - * Copyright 2016 Tom van Dijk, Johannes Kepler University Linz + * Copyright 2016-2017 Tom van Dijk, Johannes Kepler University Linz * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -15,20 +15,12 @@ * limitations under the License. */ -#include +#include -#include #include #include -#include -#include -#include -#include #include -#include -#include - #include #include #include @@ -54,13 +46,15 @@ VOID_TASK_IMPL_1(lddmc_gc_mark_rec, MDD, mdd) * External references */ -refs_table_t mdd_refs; +refs_table_t lddmc_refs; +refs_table_t lddmc_protected; +static int lddmc_protected_created = 0; MDD lddmc_ref(MDD a) { if (a == lddmc_true || a == lddmc_false) return a; - refs_up(&mdd_refs, a); + refs_up(&lddmc_refs, a); return a; } @@ -68,13 +62,36 @@ void lddmc_deref(MDD a) { if (a == lddmc_true || a == lddmc_false) return; - refs_down(&mdd_refs, a); + refs_down(&lddmc_refs, a); } size_t lddmc_count_refs() { - return refs_count(&mdd_refs); + return refs_count(&lddmc_refs); +} + +void +lddmc_protect(MDD *a) +{ + if (!lddmc_protected_created) { + // In C++, sometimes lddmc_protect is called before Sylvan is initialized. Just create a table. + protect_create(&lddmc_protected, 4096); + lddmc_protected_created = 1; + } + protect_up(&lddmc_protected, (size_t)a); +} + +void +lddmc_unprotect(MDD *a) +{ + if (lddmc_protected.refs_table != NULL) protect_down(&lddmc_protected, (size_t)a); +} + +size_t +lddmc_count_protected(void) +{ + return protect_count(&lddmc_protected); } /* Called during garbage collection */ @@ -82,9 +99,24 @@ VOID_TASK_0(lddmc_gc_mark_external_refs) { // iterate through refs hash table, mark all found size_t count=0; - uint64_t *it = refs_iter(&mdd_refs, 0, mdd_refs.refs_size); + uint64_t *it = refs_iter(&lddmc_refs, 0, lddmc_refs.refs_size); while (it != NULL) { - SPAWN(lddmc_gc_mark_rec, refs_next(&mdd_refs, &it, mdd_refs.refs_size)); + SPAWN(lddmc_gc_mark_rec, refs_next(&lddmc_refs, &it, lddmc_refs.refs_size)); + count++; + } + while (count--) { + SYNC(lddmc_gc_mark_rec); + } +} + +VOID_TASK_0(lddmc_gc_mark_protected) +{ + // iterate through refs hash table, mark all found + size_t count=0; + uint64_t *it = protect_iter(&lddmc_protected, 0, lddmc_protected.refs_size); + while (it != NULL) { + MDD *to_mark = (MDD*)protect_next(&lddmc_protected, &it, lddmc_protected.refs_size); + SPAWN(lddmc_gc_mark_rec, *to_mark); count++; } while (count--) { @@ -93,33 +125,77 @@ VOID_TASK_0(lddmc_gc_mark_external_refs) } /* Infrastructure for internal markings */ +typedef struct lddmc_refs_task +{ + Task *t; + void *f; +} *lddmc_refs_task_t; + +typedef struct lddmc_refs_internal +{ + const MDD **pbegin, **pend, **pcur; + MDD *rbegin, *rend, *rcur; + lddmc_refs_task_t sbegin, send, scur; +} *lddmc_refs_internal_t; + DECLARE_THREAD_LOCAL(lddmc_refs_key, lddmc_refs_internal_t); -VOID_TASK_0(lddmc_refs_mark_task) +VOID_TASK_2(lddmc_refs_mark_p_par, const MDD**, begin, size_t, count) { - LOCALIZE_THREAD_LOCAL(lddmc_refs_key, lddmc_refs_internal_t); - size_t i, j=0; - for (i=0; ir_count; i++) { - if (j >= 40) { - while (j--) SYNC(lddmc_gc_mark_rec); - j=0; + if (count < 32) { + while (count) { + lddmc_gc_mark_rec(**(begin++)); + count--; } - SPAWN(lddmc_gc_mark_rec, lddmc_refs_key->results[i]); - j++; - } - for (i=0; is_count; i++) { - Task *t = lddmc_refs_key->spawns[i]; - if (!TASK_IS_STOLEN(t)) break; - if (TASK_IS_COMPLETED(t)) { - if (j >= 40) { - while (j--) SYNC(lddmc_gc_mark_rec); - j=0; + } else { + SPAWN(lddmc_refs_mark_p_par, begin, count / 2); + CALL(lddmc_refs_mark_p_par, begin + (count / 2), count - count / 2); + SYNC(lddmc_refs_mark_p_par); + } +} + +VOID_TASK_2(lddmc_refs_mark_r_par, MDD*, begin, size_t, count) +{ + if (count < 32) { + while (count) { + lddmc_gc_mark_rec(*begin++); + count--; + } + } else { + SPAWN(lddmc_refs_mark_r_par, begin, count / 2); + CALL(lddmc_refs_mark_r_par, begin + (count / 2), count - count / 2); + SYNC(lddmc_refs_mark_r_par); + } +} + +VOID_TASK_2(lddmc_refs_mark_s_par, lddmc_refs_task_t, begin, size_t, count) +{ + if (count < 32) { + while (count) { + Task *t = begin->t; + if (!TASK_IS_STOLEN(t)) return; + if (t->f == begin->f && TASK_IS_COMPLETED(t)) { + lddmc_gc_mark_rec(*(BDD*)TASK_RESULT(t)); } - SPAWN(lddmc_gc_mark_rec, *(BDD*)TASK_RESULT(t)); - j++; + begin += 1; + count -= 1; } + } else { + if (!TASK_IS_STOLEN(begin->t)) return; + SPAWN(lddmc_refs_mark_s_par, begin, count / 2); + CALL(lddmc_refs_mark_s_par, begin + (count / 2), count - count / 2); + SYNC(lddmc_refs_mark_s_par); } - while (j--) SYNC(lddmc_gc_mark_rec); +} + +VOID_TASK_0(lddmc_refs_mark_task) +{ + LOCALIZE_THREAD_LOCAL(lddmc_refs_key, lddmc_refs_internal_t); + SPAWN(lddmc_refs_mark_p_par, lddmc_refs_key->pbegin, lddmc_refs_key->pcur-lddmc_refs_key->pbegin); + SPAWN(lddmc_refs_mark_r_par, lddmc_refs_key->rbegin, lddmc_refs_key->rcur-lddmc_refs_key->rbegin); + CALL(lddmc_refs_mark_s_par, lddmc_refs_key->sbegin, lddmc_refs_key->scur-lddmc_refs_key->sbegin); + SYNC(lddmc_refs_mark_r_par); + SYNC(lddmc_refs_mark_p_par); } VOID_TASK_0(lddmc_refs_mark) @@ -130,12 +206,12 @@ VOID_TASK_0(lddmc_refs_mark) VOID_TASK_0(lddmc_refs_init_task) { lddmc_refs_internal_t s = (lddmc_refs_internal_t)malloc(sizeof(struct lddmc_refs_internal)); - s->r_size = 128; - s->r_count = 0; - s->s_size = 128; - s->s_count = 0; - s->results = (BDD*)malloc(sizeof(BDD) * 128); - s->spawns = (Task**)malloc(sizeof(Task*) * 128); + s->pcur = s->pbegin = (const MDD**)malloc(sizeof(MDD*) * 1024); + s->pend = s->pbegin + 1024; + s->rcur = s->rbegin = (MDD*)malloc(sizeof(MDD) * 1024); + s->rend = s->rbegin + 1024; + s->scur = s->sbegin = (lddmc_refs_task_t)malloc(sizeof(struct lddmc_refs_task) * 1024); + s->send = s->sbegin + 1024; SET_THREAD_LOCAL(lddmc_refs_key, s); } @@ -146,6 +222,83 @@ VOID_TASK_0(lddmc_refs_init) sylvan_gc_add_mark(TASK(lddmc_refs_mark)); } +void +lddmc_refs_ptrs_up(lddmc_refs_internal_t lddmc_refs_key) +{ + size_t size = lddmc_refs_key->pend - lddmc_refs_key->pbegin; + lddmc_refs_key->pbegin = (const MDD**)realloc(lddmc_refs_key->pbegin, sizeof(MDD*) * size * 2); + lddmc_refs_key->pcur = lddmc_refs_key->pbegin + size; + lddmc_refs_key->pend = lddmc_refs_key->pbegin + (size * 2); +} + +MDD __attribute__((noinline)) +lddmc_refs_refs_up(lddmc_refs_internal_t lddmc_refs_key, MDD res) +{ + long size = lddmc_refs_key->rend - lddmc_refs_key->rbegin; + lddmc_refs_key->rbegin = (MDD*)realloc(lddmc_refs_key->rbegin, sizeof(MDD) * size * 2); + lddmc_refs_key->rcur = lddmc_refs_key->rbegin + size; + lddmc_refs_key->rend = lddmc_refs_key->rbegin + (size * 2); + return res; +} + +void __attribute__((noinline)) +lddmc_refs_tasks_up(lddmc_refs_internal_t lddmc_refs_key) +{ + long size = lddmc_refs_key->send - lddmc_refs_key->sbegin; + lddmc_refs_key->sbegin = (lddmc_refs_task_t)realloc(lddmc_refs_key->sbegin, sizeof(struct lddmc_refs_task) * size * 2); + lddmc_refs_key->scur = lddmc_refs_key->sbegin + size; + lddmc_refs_key->send = lddmc_refs_key->sbegin + (size * 2); +} + +void __attribute__((unused)) +lddmc_refs_pushptr(const MDD *ptr) +{ + LOCALIZE_THREAD_LOCAL(lddmc_refs_key, lddmc_refs_internal_t); + *lddmc_refs_key->pcur++ = ptr; + if (lddmc_refs_key->pcur == lddmc_refs_key->pend) lddmc_refs_ptrs_up(lddmc_refs_key); +} + +void __attribute__((unused)) +lddmc_refs_popptr(size_t amount) +{ + LOCALIZE_THREAD_LOCAL(lddmc_refs_key, lddmc_refs_internal_t); + lddmc_refs_key->pcur -= amount; +} + +MDD __attribute__((unused)) +lddmc_refs_push(MDD lddmc) +{ + LOCALIZE_THREAD_LOCAL(lddmc_refs_key, lddmc_refs_internal_t); + *(lddmc_refs_key->rcur++) = lddmc; + if (lddmc_refs_key->rcur == lddmc_refs_key->rend) return lddmc_refs_refs_up(lddmc_refs_key, lddmc); + else return lddmc; +} + +void __attribute__((unused)) +lddmc_refs_pop(long amount) +{ + LOCALIZE_THREAD_LOCAL(lddmc_refs_key, lddmc_refs_internal_t); + lddmc_refs_key->rcur -= amount; +} + +void __attribute__((unused)) +lddmc_refs_spawn(Task *t) +{ + LOCALIZE_THREAD_LOCAL(lddmc_refs_key, lddmc_refs_internal_t); + lddmc_refs_key->scur->t = t; + lddmc_refs_key->scur->f = t->f; + lddmc_refs_key->scur += 1; + if (lddmc_refs_key->scur == lddmc_refs_key->send) lddmc_refs_tasks_up(lddmc_refs_key); +} + +MDD __attribute__((unused)) +lddmc_refs_sync(MDD result) +{ + LOCALIZE_THREAD_LOCAL(lddmc_refs_key, lddmc_refs_internal_t); + lddmc_refs_key->scur -= 1; + return result; +} + VOID_TASK_DECL_0(lddmc_gc_mark_serialize); /** @@ -155,7 +308,7 @@ VOID_TASK_DECL_0(lddmc_gc_mark_serialize); static void lddmc_quit() { - refs_free(&mdd_refs); + refs_free(&lddmc_refs); } void @@ -163,9 +316,14 @@ sylvan_init_ldd() { sylvan_register_quit(lddmc_quit); sylvan_gc_add_mark(TASK(lddmc_gc_mark_external_refs)); + sylvan_gc_add_mark(TASK(lddmc_gc_mark_protected)); sylvan_gc_add_mark(TASK(lddmc_gc_mark_serialize)); - refs_create(&mdd_refs, 1024); + refs_create(&lddmc_refs, 1024); + if (!lddmc_protected_created) { + protect_create(&lddmc_protected, 4096); + lddmc_protected_created = 1; + } LACE_ME; CALL(lddmc_refs_init); @@ -2000,7 +2158,7 @@ VOID_TASK_3(lddmc_match_sat, struct lddmc_match_sat_info *, info, lddmc_enum_cb, ri->mdd = mddnode_getright(na); di->mdd = mddnode_getdown(na); ri->match = b; - di->match = mddnode_getdown(nb); + di->match = p_val == 1 ? mddnode_getdown(nb) : b; ri->proj = proj; di->proj = mddnode_getdown(p_node); ri->count = info->count; diff --git a/resources/3rdparty/sylvan/src/sylvan_ldd.h b/resources/3rdparty/sylvan/src/sylvan_ldd.h index 394e773ce..8ee19caa0 100755 --- a/resources/3rdparty/sylvan/src/sylvan_ldd.h +++ b/resources/3rdparty/sylvan/src/sylvan_ldd.h @@ -1,6 +1,6 @@ /* * Copyright 2011-2016 Formal Methods and Tools, University of Twente - * Copyright 2016 Tom van Dijk, Johannes Kepler University Linz + * Copyright 2016-2017 Tom van Dijk, Johannes Kepler University Linz * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -24,11 +24,10 @@ extern "C" { #endif /* __cplusplus */ - typedef uint64_t MDD; // Note: low 40 bits only -#define lddmc_false ((MDD)0) -#define lddmc_true ((MDD)1) +static const MDD lddmc_false = 0; +static const MDD lddmc_true = 1; /* Initialize LDD functionality */ void sylvan_init_ldd(void); @@ -53,19 +52,49 @@ MDD lddmc_make_copynode(MDD ifeq, MDD ifneq); int lddmc_iscopy(MDD mdd); MDD lddmc_followcopy(MDD mdd); -/* Add or remove external reference to MDD */ -MDD lddmc_ref(MDD a); -void lddmc_deref(MDD a); +/** + * Infrastructure for external references using a hash table. + * Two hash tables store external references: a pointers table and a values table. + * The pointers table stores pointers to MDD variables, manipulated with protect and unprotect. + * The values table stores MDD, manipulated with ref and deref. + * We strongly recommend using the pointers table whenever possible. + */ -/* For use in custom mark functions */ -VOID_TASK_DECL_1(lddmc_gc_mark_rec, MDD) -#define lddmc_gc_mark_rec(mdd) CALL(lddmc_gc_mark_rec, mdd) +/** + * Store the pointer in the pointers table. + */ +void lddmc_protect(MDD* ptr); + +/** + * Delete the pointer from the pointers table. + */ +void lddmc_unprotect(MDD* ptr); + +/** + * Compute the number of pointers in the pointers table. + */ +size_t lddmc_count_protected(void); + +/** + * Store the MDD