In fluent speech word boundaries are often degraded in a way that causes co-articulation across boundaries. A lexical entry should normally provide pronunciations as if the word is being spoken in isolation. It is only once the word has been inserted into the the context in which it is going to spoken can co-articulary effects be applied.
Post lexical rules are a general set of rules which can modify the segment relation (or any other part of the utterance for that matter), after the basic pronunciations have been found. In Festival post-lexical rules are defined as functions which will be applied to the utterance after intonational accents have been assigned.
For example in British English word final /r/ is only produced when the following word starts with a vowel. Thus all other word final /r/s need to be deleted. A Scheme function that implements this is as follows
In English we also use post-lexical rules for phenomena such as vowel reduction and schwa deletion in the possessive "'s".
(define (plr_rp_final_r utt)
(if (and (string-equal "r" (item.name s)) ;; this is an r
;; it is syllable final
(string-equal "1" (item.feat s "syl_final"))
;; the syllable is word final
(not (string-equal "0"
(item.feat s "R:SylStructure.parent.syl_break")))
;; The next segment is not a vowel
(string-equal "-" (item.feat s "n.ph_vc")))
(utt.relation.items utt 'Segment)))