This document discusses using logic meta programming and aspect-oriented programming to implement history-based aspects. It describes how scattering and tangling of crosscutting concerns can be addressed using aspects. It presents HALO, which uses temporal logic programming and CLOS to implement history-based aspects. Declarative meta programming with SOUL is used to represent the base code and aspects, allowing aspects to be defined using logic rules over the meta model.