          #"(.*)rà"      "$1ere" ;; potrà -> potere
          #"(.*)rrà"     "$1lere"  ;; vorrà -> volere
          #"(.*)rrà"     "$1nere" ;; rimarrà -> rimanere
-         ]}
+         ]
+
+     :g [#"^(.*)[ae]re$" "$1erà" ;; parlare,ricevere
+         #"^(.*)ire$"    "$1irà" ;; dormire
+         ]
+     }
 
     {:agr {:synsem {:subcat {:1 {:agr {:number :plur
                                        :person :1st}}}}}

        (do-replace-on infinitive (rest (rest patterns)))))))

(defn expand-replace-patterns-2 [tense-spec patterns]
  (map (fn [{g :g agr :agr}]
         {:u {:agr (unify agr
                          (get-in tense-spec [:synsem]))}
          :g g})
       patterns))


(defonce regular-future-generate-patterns
  (expand-replace-patterns-2
   {:synsem {:infl :future}}
   [{:agr {:synsem {:subcat {:1 {:agr {:person :1st
                                       :number :sing}}}}}
     :g [#"^(.*)[ae]re$" "$1erò" ;; parlare,ricevere
         #"^(.*)care$"   "$1cherò" ;; caricare
         #"^(.*)ire$"    "$1irò" ;; dormire
         ]
     }
    {:agr {:synsem {:subcat {:1 {:agr {:person :2nd
                                       :number :sing}}}}}
     :g [#"^(.*)[ae]re$" "$1erai" ;; parlare,ricevere
         #"^(.*)ire$"    "$1irai" ;; dormire
         ]
     }
    {:agr {:synsem {:subcat {:1 {:agr {:person :3rd
                                       :number :sing}}}}}
     :g [#"^(.*)[ae]re$" "$1erà" ;; parlare,ricevere
         #"^(.*)ire$"    "$1irà" ;; dormire
         ]
     }

    {:agr {:synsem {:subcat {:1 {:agr {:person :1st
                                       :number :plur}}}}}
     :g [#"^(.*)[ae]re$" "$1eremo" ;; parlare => parleremo
         #"^(.*)ire$"    "$1iremo" ;; finire => finiremo
         ]}
    {:agr {:synsem {:subcat {:1 {:agr {:person :2nd
                                       :number :plur}}}}}
     :g [#"^(.*)[ae]re$" "$1erete" ;; parlare => parlerete
         #"^(.*)ire$"    "$1irete" ;; finire => finiremo
         ]}
    {:agr {:synsem {:subcat {:1 {:agr {:person :3rd
                                       :number :plur}}}}}
     :g [#"^(.*)[ae]re$" "$1eranno" ;; parlare => parleranno
         #"^(.*)ire$"    "$1iranno" ;; finire => finiranno
         ]}]))
