anchor.diff:          list_append(VMC, fe(spkr, USER)),
           list_append(VMC, frame(fnQuestioning)),
           
  -        fnvm_exec (en, I, VMC).
  +        fnvm_exec (I, VMC).
   
       nlp_gen(en, 'What (were we talking|did we talk) about (again|)?', 
               inline (l2proc_whatWasOurTopic)).
  
positive.code:     answerz (I, en, personBeenBornWhere, LABEL, BP_LABEL, female) :- 
          sayz(I, en, format_str("she was born in %s", BP_LABEL)).
      
      l4proc (LANG, I, F, fnTelling, place, MSGF, fnBeingBorn) :-
      
          frame (MSGF, child, PERSON),
          frame (MSGF, place, BP),    
      
          person_gender(PERSON, GENDER),
      
          entity_label(LANG, PERSON, LABEL),
          entity_label(LANG, BP, BP_LABEL),
      
  
negative.code:     list_append(VMC, fe(addressee, uriref(aiu:self))),
      list_append(VMC, frame(fnQuestioning)),
      
      fnvm_exec (I, VMC)
  ------------------------------------------------------------
  
  TIP: Since in production the actual translation from natural language to the initial prolog
  terms is done by a seq2seq neural net it is important to give it a target sequence to work with.
  In Zamia-AI this is done by having a flat, uniform layer2 processing as shown above. 
  If you have multiple 'nlp_gen's that you want to produce the same frame structure it is useful
  to put that code into an intermediate rule instead of copy-pasting it into each 'nlp_gen'.
  However this would mean the seq2seq net would only see a single target predicate so there is little
  it can learn from that. 
  To resolve this issue use the 'inline()' predicate to have a macro-like expansion if the called
  predicate. For an example of how this is done, see below.
  
  [source,prolog]
  