Self-* Programming Run-Time Parallel Control Search for Reflection Box Olga Brukman and Shlomi Dolev Department of Computer Science, Ben-Gurion University of the Negev, Beer-Sheva, 84105, Israel {brukman, dolev}@cs.bgu.ac.il Abstract. Real life situations may require an drastic change in a program (control), rather than incremental update, e.g. changing a control in an airplane or in an atomic reactor that experience an unexpected disaster emergency scenario. We suggest a formal framework for automatic runtime control search. We present a catalog of control search algorithms for various settings of an execution environment. The considered environment properties are: (i) determinism – an environment can be either deterministic or probabilistic, (ii) state reflection that allows observation of the current state of the environment, (iii) state set that generalizes the reset capability, allowing setting the environment to a particular state, and (iv) (static or dynamic) replication that allows instantiation of replicas for parallel execution of candidate controls. In deterministic environment settings, a control search algorithm creates all candidate programs, ex- ecutes them in parallel on environment replicas, and returns a program that respects desired spec- ifications. In probabilistic environment settings, a control search algorithm learns the environment probabilistic automaton, and then the control search algorithm is performed in run time, deciding on a next step based on a current state. Keywords: replication, state set, reflection. Categories: C.4, D.1.2, D.2.4, D.2.5. 1 Introduction In the early attempts to reach supersonic speeds, airplane pilots experienced a strange phenomenon of loosing control of the airplane control surfaces, which made their aircraft uncontrollable. The pilots regained control either by reducing the speed or by changing the control procedure to be the opposite [24]. In another case, an airplane flew into a volcano ash cloud. Subsequently, the airplane engines shut down. The pilots saved the airplane by direct it out of the ash cloud, letting the engines cool and then restarting them [7]. These two examples demonstrate the type of dramatic control changes that sometimes have to be made in real time when the environment changes unexpectedly in a manner unexpected by system designers and operators. Today, when a programmer creates a program, he/she designs the program for a certain environment. If the program encounters unanticipated environmental behavior, the program performance may degrade drastically, it may continue to execute while producing a faulty (unexpected) output, or it may crash. Pro- grammers and system administrators use their accumulated knowledge of the system and of the environment to investigate problems. Usually they solve problems by patching the system each time a new problem is detected. In many cases, the solution is postmortem and off-line. Ideally, systems would be autonomous, i.e., the systems would be able to cope with unexpected situations dynamically and automatically, without human intervention. Partially supported by the Lynne and William Frankel Center for Computer Sciences, by a Deutsche Telecom grant, the Rita Altura Trust Chair in Computer Sciences, Israel Science Foundation (grant #428/11), Cabarnit Cyber Security MAGNET Consortium, the Institute for Future Defense Technologies Research Medvedi of the Technion grant, MAFAT, and Israeli Internet Association. The paper abstract appeared in the Sixth NASA Langley Formal Methods Workshop (LFM 2008), NASA Conference Proceedings, April 2008.