      {:agr {:synsem {:subcat {:1 {:agr {:number :sing
                                         :gender :fem}}}}}
       :p [
-          #"^([^ ]+)esa"       "$1eso"
-          #"^([^ ]+)([aiu])ta" "$1$2to"
-          #"^([^ ]+)tita"      "$1tito"
-          #"^([^ ]+)asta"      "$1asto"
-          #"^([^ ]+)ata"       "$1are"
-          #"^([^ ]+)ata"       "$1arsi"
-          #"^([^ ]+)ita"       "$1ire"
-          #"^([^ ]+)ita"       "$1irsi"
-          #"^([^ ]+)uta"       "$1ere"
-          #"^([^ ]+)uta"       "$1ersi"
-          #"^([^ ]+)uta"       "$1uto"
+          #"(.*)esa"       "$1eso"
+          #"(.*)([aiu])ta" "$1$2to"
+          #"(.*)tita"      "$1tito"
+          #"(.*)asta"      "$1asto"
+          #"(.*)ata"       "$1are"
+          #"(.*)ata"       "$1arsi"
+          #"(.*)ita"       "$1ire"
+          #"(.*)ita"       "$1irsi"
+          #"(.*)uta"       "$1ere"
+          #"(.*)uta"       "$1ersi"
+          #"(.*)uta"       "$1uto"
           ]
       }
 
      {:agr {:synsem {:subcat {:1 {:agr {:number :plur
                                         :gender :fem}}}}}
       :p [
-          #"^([^ ]+)ese" "$1eso"
-          #"^([^ ]+)([aiu])te" "$1$2to"
-          #"^([^ ]+)tite" "$1tito"
-          #"^([^ ]+)aste" "$1asto"
-          #"^([^ ]+)ese" "$1eso"           ;; scese -> sceso -> scendere
-          #"^([^ ]+)ate" "$1are"
-          #"^([^ ]+)ate" "$1arsi"
-          #"^([^ ]+)ite" "$1ire"
-          #"^([^ ]+)ite" "$1irsi"
-          #"^([^ ]+)ute" "$1ere"
-          #"^([^ ]+)ute" "$1ersi"
-          #"^([^ ]+)ute" "$1irsi"
-          #"^([^ ]+)ute" "$1ire"
-          #"^([^ ]+)ute" "$1uto"
+          #"(.*)ese" "$1eso"
+          #"(.*)([aiu])te" "$1$2to"
+          #"(.*)tite" "$1tito"
+          #"(.*)aste" "$1asto"
+          #"(.*)ese" "$1eso"           ;; scese -> sceso -> scendere
+          #"(.*)ate" "$1are"
+          #"(.*)ate" "$1arsi"
+          #"(.*)ite" "$1ire"
+          #"(.*)ite" "$1irsi"
+          #"(.*)ute" "$1ere"
+          #"(.*)ute" "$1ersi"
+          #"(.*)ute" "$1irsi"
+          #"(.*)ute" "$1ire"
+          #"(.*)ute" "$1uto"
 
           ]
       }

   [{:agr {:synsem {:subcat {:1 {:agr {:number :sing
                                       :person :1st}}}}}
     :p [
         #"^([^' ]+)o$"         "$1are"
         #"^([^' ]+)o$"         "$1ere"
         #"^([^' ]+)isco$"      "$1ire"
         #"^([^' ]+)o$"         "$1ire"
         #"^([^' ]+)o$"         "$1arsi" ;; alzo -> alzarsi
         #"^([^' ]+)o$"         "$1irsi" ;; diverto -> divertirso
         #"^([^' ]+)ico$"       "$1ire" ;; dico -> dire
         ]}
    {:agr {:synsem {:subcat {:1 {:agr {:number :sing
                                       :person :2nd}}}}}
     :p [
         #"^([^' ]+)i$"         "$1are" ;; lavi -> lavare
         #"^([^' ]+)i$"         "$1iare" ;; studi -> studiare
         #"^([^' ]+)i$"         "$1arsi" ;; lavi -> lavarsi
         #"^([^' ]+)cci$"       "$1cciare" ;; abbracci -> abbracciare
         #"^([^' ]+)i$"         "$1ere"
         #"^([^' ]+)i$"         "$1ire" ;; senti -> sentire
         #"^([^' ]+c)hi$"       "$1are" ;; cerchi -> cercare
         #"^([^' ]+)i$"         "$1iarsi" ;; arrabi -> arrabiarsi
         #"^([^' ]+)sci$"       "$1re" ;; finisci -> finire
         #"^([^' ]+)i$"         "$1irsi" ;; diverti -> divertirsi
         #"^([^' ]+)ici$"       "$1ire" ;; dici -> dire
         #"^([^' ]+)hi$"        "$1are" ;; pieghi -> piegare
         ]}  

    {:agr {:synsem {:subcat {:1 {:agr {:number :sing
                                       :person :3rd}}}}}
     
     :p [
         #"^([^' ]+)a$"         "$1are"
         #"^([^' ]+)e$"         "$1ere"
         #"^([^' ]+)e$"         "$1ire"
         #"^([^' ]+)a$"         "$1arsi" ;; prepara -> preperarsi
         #"^([^' ]+)sce$"       "$1re" ;; finisce -> finire
         #"^([^' ]+)te$"        "$1tirsi" ;; diverte -> divertirsi
         #"^([^' ]+)ice$"       "$1ire" ;; dice -> dire
         ]}

    {:agr {:synsem {:subcat {:1 {:agr {:number :plur
                                       :person :1st}}}}}
     :p [
         #"^([^' ]+)iamo$"      "$1are"  ;; parliamo -> parlare
         #"^([^' ]+)iamo$"      "$1iare" ;; mangiamo -> mangiare
         #"^([^' ]+)iamo$"      "$1ere"
         #"^([^' ]+)iamo$"      "$1ire"
         #"^([^' ]+c)hiamo$"    "$1are" ;; sprechiamo -> sprecare
         #"^([^' ]+)iamo$"      "$1iarsi" ;; arrabiamo -> arrabiarsi
         #"^([^' ]+)iamo$"      "$1arsi" ;; chiamiamo -> chiamarsi
         #"^([^' ]+)iamo$"      "$1irsi" ;; divertiamo -> divertirsi
         #"^([^' ]+)ciamo$"     "$1re" ;; diciamo -> dire
         #"^([^' ]+)hiamo$"     "$1are" ;; pieghiamo -> piegare
         ]}

    {:agr {:synsem {:subcat {:1 {:agr {:number :plur
                                       :person :2nd}}}}}
     :p [
         #"^([^' ]+)([aei])te$" "$1$2re" ;; parlate -> parlare
         #"^([^' ]+)([aei])te$" "$1$2rsi" ;; chiamate -> chiamarsi
         ]}
    
    {:agr {:synsem {:subcat {:1 {:agr {:number :plur
                                       :person :3rd}}}}}
     :p [
         #"^([^' ]+)ano$"       "$1are"
         #"^([^' ]+)ono$"       "$1ere"
         #"^([^' ]+)ono$"       "$1ire"
         #"^([^' ]+)ano$"       "$1arsi" ;; alzano -> alzarsi
         #"^([^' ]+)scono$"     "$1re" ;; finiscono -> finire
         #"^([^' ]+)ono$"       "$1irsi" ;; divertono -> divertirsi
         #"^([^' ]+)cono$"      "$1re" ;; dicono -> dire
         #"^([^' ]+)ono$"       "$1irsi" ;; vestono -> vestirsi
         ]}]))

(def replace-patterns

     {:agr {:synsem {:subcat {:1 {:agr {:number :plur
                                        :gender :masc}}}}}
      :p [
          #"(.*)esi"       "$1eso"
          #"(.*)([aiu])ti" "$1$2to"
          #"(.*)titi"      "$1tito"
          #"(.*)asti"      "$1asto"
          #"(.*)ati"       "$1are"
          #"(.*)ati"       "$1arsi"
          #"(.*)esi"       "$1eso"    ;; scesi -> sceso -> scendere
          ]
      }

     {:agr {:synsem {:subcat {:1 {:agr {:number :plur}}}}}
      :p [
          #"(.*)iti" "$1ire"
          #"(.*)iti" "$1irsi"
          #"(.*)uti" "$1ere"
          #"(.*)uti" "$1ersi"
          #"(.*)uti" "$1ire"
          ]}
     
     {:agr :top
      :p [
          #"(.*)ato" "$1are"
          #"(.*)ato" "$1arsi"
          #"(.*)ito" "$1ire"
          #"(.*)ito" "$1irsi"
          #"(.*)uto" "$1ere"
          #"(.*)uto" "$1ersi"
          ]}
     ])))

