Reasoning about effects: from lists to cyber-physical agents (Logical Methods in Computer Science, 2019)