<%@ page language="java" contentType="text/html" %> <%-- Include common initialisation code --%> <%@ include file="/arch/common.jsp" %> <%-- The current tab --%> <% String currentTab = "Research"; %> <%-- Content of navigation pane --%> <%@ include file="nav.jsp" %> <% showCurrentLink=true; %> <%-- Current navigation location --%> <% String currentNav = "Reports and Theses"; %> <%-- Include the code for the document header --%> <%@ include file="/arch/header.jsp" %>

Research Report CS-RR-323

<%-- Include the code for the lines and navigation --%> <%@ include file="/arch/middle.jsp" %>

Iain D. Craig, Programs that Model Themselves (May 1, 1997).

Abstract

Work on reflection has frequently concentrated on programming languages and operating systems. This work either involves the use of tower reflection or meta-object protocols. The subject of this paper is a different form of reflection that is, we believe, more powerful and fundamental than the other kinds. Self modelling is a process that has not received attention in the literature; indeed, we believe that we are the first to study the topic in a systematic fashion. We will explain the concept of a self-modelling program and describe some example programs that construct and manipulate models of themselves. The programs that we consider are: a learning program, a conceptual modelling system and a production rule interpreter. We also consider the benefits that are to be gained from engaging in self modelling and we show how the programs that we have described benefit from the additional work required of them. We indicate how additional power can be derived by engaging in self modelling.

Download

cs-rr-323.ps.gz

<%-- Include the code for the document footer --%> <%@ include file="/arch/footer.jsp" %>