52_a_history_of_qed
We 've done some fairly elaborate versions of grep that construct DFAs dynamically on demand , use Boyer - Moore techniques for fast searching of fixed strings , and so on .

%3 0052_0002__'ve_0052_0003__done 've_done 0052_0001__We we 0052_0002__'ve_0052_0003__done->0052_0001__We [arg0] 0052_0004__some_0052_0007__versions some_versions 0052_0002__'ve_0052_0003__done->0052_0004__some_0052_0007__versions [arg1] 0052_0006__elaborate elaborate 0052_0004__some_0052_0007__versions->0052_0006__elaborate [attrib] 0052_0009__grep grep 0052_0004__some_0052_0007__versions->0052_0009__grep of 0052_0005__fairly fairly 0052_0006__elaborate->0052_0005__fairly [qual] 0052_0011__construct construct 0052_0011__construct->0052_0004__some_0052_0007__versions [arg0] 0052_0012__DFAs dfas 0052_0011__construct->0052_0012__DFAs [arg1] 0052_0013__dynamically dynamically 0052_0011__construct->0052_0013__dynamically [mnr] 0052_0015__demand demand 0052_0011__construct->0052_0015__demand on[mnr] 0052_0017__use use 0052_0017__use->0052_0004__some_0052_0007__versions [arg0] 0052_0021__techniques techniques 0052_0017__use->0052_0021__techniques [arg1] 0052_0018__Boye0052_0020__Moore boyer_moore 0052_0021__techniques->0052_0018__Boye0052_0020__Moore [nlyr] 0052_0024__searching searching 0052_0021__techniques->0052_0024__searching for 0052_0023__fast fast 0052_0024__searching->0052_0023__fast [attrib] 0052_0027__strings strings 0052_0024__searching->0052_0027__strings of 0052_0026__fixed fixed 0052_0027__strings->0052_0026__fixed [attrib] 0052_0029__and_0052_0030__so_on and_so_on 0052_0029__and_0052_0030__so_on->0052_0011__construct [conj1] 0052_0029__and_0052_0030__so_on->0052_0017__use [conj2]
arc(r_0052_0002___apos_ve_r_0052_0003__done,r_0052_0001__We,arg0).
arc(r_0052_0002___apos_ve_r_0052_0003__done,r_0052_0004__some_r_0052_0007__versions,arg1).
arc(r_0052_0004__some_r_0052_0007__versions,r_0052_0006__elaborate,attrib).
arc(r_0052_0004__some_r_0052_0007__versions,r_0052_0009__grep,r_0052_0008__of).
arc(r_0052_0006__elaborate,r_0052_0005__fairly,qual).
arc(r_0052_0011__construct,r_0052_0004__some_r_0052_0007__versions,arg0).
arc(r_0052_0011__construct,r_0052_0012__DFAs,arg1).
arc(r_0052_0011__construct,r_0052_0013__dynamically,mnr).
arc(r_0052_0011__construct,r_0052_0015__demand,r_0052_0014__on__mnr).
arc(r_0052_0017__use,r_0052_0004__some_r_0052_0007__versions,arg0).
arc(r_0052_0017__use,r_0052_0021__techniques,arg1).
arc(r_0052_0021__techniques,r_0052_0018__Boyer_r_0052_0020__Moore,nlyr).
arc(r_0052_0021__techniques,r_0052_0024__searching,r_0052_0022__for).
arc(r_0052_0024__searching,r_0052_0023__fast,attrib).
arc(r_0052_0024__searching,r_0052_0027__strings,r_0052_0025__of).
arc(r_0052_0027__strings,r_0052_0026__fixed,attrib).
arc(r_0052_0029__and_r_0052_0030__so_on,r_0052_0011__construct,coord_conj1).
arc(r_0052_0029__and_r_0052_0030__so_on,r_0052_0017__use,coord_conj2).


IP-MAT NP-SBJ PRO We HVP;~cat_Ve 've IP-PPL-CAT DON done NP-OB1 D some ADJP ADVP ADV fairly ADJ elaborate NS versions PP P-ROLE of NP NPR grep IP-REL NP-SBJ RPRO that ILYR ILYR VBP construct NP-OB1 NS DFAs ADVP-MNR ADV dynamically PP-MNR P-ROLE on NP N demand PUNC , CONJP ILYR VBP use NP-OB1 NLYR NPR Boyer PUNC - NPR Moore NS techniques PP P-ROLE for NP ADJP ADJ fast N searching PP P-ROLE of NP ADJP ADJ fixed NS strings PUNC , CONJP CONJ and ADVP-MOD ADV so_on PUNC .
( (IP-MAT (NP-SBJ (PRO We;{we}))
          (HVP;~cat_Ve <apos>ve;{have})
          (IP-PPL-CAT (DON done;{do})
                      (NP-OB1 (D some;{some})
                              (ADJP (ADVP (ADV fairly;{fairly}))
                                    (ADJ elaborate;{elaborate}))
                              (NS versions;{version})
                              (PP (P-ROLE of;{of})
                                  (NP (NPR grep;{grep})))
                              (IP-REL (NP-SBJ (RPRO that;{that}))
                                      (ILYR (ILYR (VBP construct;{construct})
                                                  (NP-OB1 (NS DFAs;{dfas}))
                                                  (ADVP-MNR (ADV dynamically;{dynamically}))
                                                  (PP-MNR (P-ROLE on;{on})
                                                          (NP (N demand;{demand}))))
                                            (PUNC ,)
                                            (CONJP (ILYR (VBP use;{use})
                                                         (NP-OB1 (NLYR (NPR Boyer;{Boyer})
                                                                       (PUNC -)
                                                                       (NPR Moore;{Moore}))
                                                                 (NS techniques;{technique})
                                                                 (PP (P-ROLE for;{for})
                                                                     (NP (ADJP (ADJ fast;{fast}))
                                                                         (N searching;{searching})
                                                                         (PP (P-ROLE of;{of})
                                                                             (NP (ADJP (ADJ fixed;{fixed}))
                                                                                 (NS strings;{string}))))))))
                                            (PUNC ,)
                                            (CONJP (CONJ and;{and})
                                                   (ADVP-MOD (ADV so_on;{so_on})))))))
          (PUNC .))
  (ID 52_a_history_of_qed))