Formalizing distributed self-adaptive systems using high-level petri nets