proposition: Lemma map_last_sym : forall (A B : Type) (f : A -> B) (a : A) (l : list A), @app _ (@map A B f l) (@cons _ (f a) (@nil _)) = @map _ _ f (@app A l (@cons _ a (@nil _))).
proof: Proof. intros. autoinduct || (idtac "step2 test7 fails (many arguments)"; induction l). all: (simpl; congruence) || (idtac "step2 test7 (many arguments) autoinduct runs, but chooses argument that doesn't finish this proof"; admit). Admitted. Lemma add_right_alias_O : forall (m : nat), add_right_alias O m = m. Proof. intros. autoinduct || (idtac "step2 test8 fails (aliased constant)"; induction m). all: (simpl; congruence). Qed.
imports: Autoinduct(Autoinduct)