the team name: OZero
for each team member: 
  full name, e-mail, institution, department, and degree program
  Jan Böttcher, boettcher@in.tum.de, TU München, Chair for database systems, PhD student
  Timo Kersten, kersten@in.tum.de, TU München, Chair for database systems, Ph student
  Moritz Kaufmann, kaufmann@in.tum.de, TU München, Chair for database systems, PhD student
  Andreas Kipf, kipf@in.tum.de, TU München, Chair for database systems, Ph student

  a brief description of techniques used for executing queries
  Storage of patterns
    We store the pattern and all its subpatterns (wordwise) in a hashtable. 
    We use the subpatterns for early aborts during our queries.
    To allow concurrent adds/removes and queries: we encode the visibility of a pattern in a MVCC fashion:
       Each operation has a sequence id.
       A query only sees patterns that were added (and not removed) before its sequence id.
  Query:
    look at word ranges from 1 to n
    if the current group of words is not a pattern/subpattern, we abort and proceed with the next word
    if it is a valid pattern: we output it if we have not already seen it

    we mark patterns as seen by maintaining a bit vector for all patterns

    
  
  Some of our optimizations:
    fast hashfunction using crc: we maintain rolling hashes over the words of patterns
    lockfree implementation of CampersCoreBurner's hashtable
    lockfree workerpool


    a list of the third party code used:
    CampersCoreBurner/hashtable (but highly modified)
