Seol mar théacs é seo: Reasoning about concurrent systems: a functional approach