Hypergraph rewriting