Git Product home page Git Product logo

nplib's Introduction

nplib

A library of NP problem encodings for SMT solvers.

The Wikipedia list isn't bad.

Yurichev's Book is a good introduction to Z3py.

This repository aims at being a comprehensive library of SMT formulations for NP hard problems - with benchmarks across encodings and solver back-ends. To this end I might split out a second repo that has optimized builds of various SMT solver back ends.

Exact solutions tell what is possible - a baseline to detect performance regressions.

Design

Intially I would like to stick with z3py. Python lists and dictionaries are easy to serialize from other languages. In the limit I would like Rust/C encodings statically linked to SMT solver binaries.

LLVM IR, eBPF traces, PCAP, and CRIU (Linux Container Images) are common join points in modern software systems - ideally there would be a translation layer to generic SMT encodings.

TLA+, Alloy, and P specifications are a translation layer of interest.

For streaming IO and linear/quadratic compute I like to use coreutils as a baseline.

Wanted forumlations

  • Coloring Solvers for llvm-project, used for register allocation.
  • Codeblock TSP for re-ordering ELF and Mach-O files.
  • Memory permutation solves for an optimal memory permutation given a list of accessses and a cache cost model.
  • pahole optimization of C struct ordering to minimize cache misses.
  • Profile based reordering of C/C++ files for clang-format - it might even be nice to have comments of hot and cold code.
  • SQL schema refactoring - based on a set of queries and data set, it does a bounded refactoring such as splitting off a set of columns to a foreign key, joining tables, or doing datatype reductions on colums then coverting to the output type requested in the query view.
  • Optimal solutions to column compression for row blocks in sqlite.
  • OEIS sequences
  • Task graph scheduling - especially with AWS spot pricing for batch and "data lake" computations. Most loads you can parameterize by latency, bandwidth, and compute - really cool once AWS Snowball and WASM is in the mix and the scheduler tells you to physically ship storage or bake a WASM file to run local compute.
  • Discrete event simulations - package picking, product assembly, delivery optimization, SAAS processing flows, ... intersection of probabilistic programming and SMT solving.
  • Speeding up Machine Learning - exactly solving bounded resource formulations so you have error estimates with lossy optimizers.

nplib's People

Contributors

chadbrewbaker avatar

Stargazers

Joe Scott avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.