Meta-level Programming and Knowledge Representation