list.rec_on : Π (n : list ?M_1), ?M_2 list.nil → (Π (hd : ?M_1) (tl : list ?M_1), ?M_2 tl → ?M_2 (hd :: tl)) → ?M_2 n