Knowledge-based programming self-applied