Self-programmability is essentially the ability of a mechanism to adapt to new, unexpected conditions, while still being able to achieve its goals. In this view, self-programmability requires that a mechanism be able to produce a plan or a strategy that achieves a desired goal, every time conditions change. In other words, the mechanism must be able to plan for a goal. Planning is a branch of AI that addresses the problem of generating a course of action to achieve a desired goal, given a description of the domain of interest and its initial state. The area is central to the development of intelligent agents and autonomous robots. One crucial element of Planning is having a model of the world that is used to perform synthesis for achieving the goal. In a sense, from the conceptual point of view, the essence of planning is program-synthesis under assumptions (assumptions being the model of the world). Planning is performed assuming that the world behaves in a certain way. However, in Planning typically the goal is simply reaching a desired state of affair. Instead WhiteMech want so state to consider agent task that can be very sophisticated. For this reason, in specifying tasks we adopt logical specification languages developed in Formal Methods for model checking (one of the most successful uses of logic in Computer Science). Specifically, we focus on Linear Temporal Logic (LTL), which is the specification formalism most used in Model Checking. However, when we use LTL to specify agent tasks, we adopt its finite trace variant, namely LTLf. The reason to focus on finite traces comes from the consideration that given a task, an intelligent agent should (1) reason on its model of the world, (2) synthesize a course of actions, i.e. the program to execute, (3) execute such program, and (4), when done, be ready for the next task. If the task requires an infinite execution, then the agent would reason only once in its lifetime and then execute the synthetized program forever. While this is perfectly fine if the reasoning is done by the designer as in Formal Methods, it is does not make much sense if the reasoning is done by the intelligent agent itself.
The research within WhiteMech has followed several paths, including, focussing on finite traces for specifying agent tasks, studying of Pure Past Temporal Logics, focussing on Non-Markovian Environment Specification, adopting multiple Environments Models and Synthesis of Best Effort strategies, investigation of Nondeterministic Strategies for resilience, developing a data-aware self-programming framework based on the Situation Calculus, studying of Read-Write Data Integration based on Ontologies, and merging Reasoning and Learning for Non-Markovian Reinforcement Learning and Restraining Bolts (the latter line of work is that it has deeply influenced the proposal of the ICT-48 Network TAILOR, which indeed includes a work-package (WP5) on “Deciding and Learning How to Act” that is based on these ideas). Moreover, selected science, tools, and techniques developed in WhiteMech are transferred to actual applications, ranging from Business Process Management (BPM) to Smart Manufacturing. Notably, the research done within WhiteMech has significantly influenced the “Augmented BPM Manifesto”, a novel manifesto on future forms of BPM.