Removed ~10000 hack in function idx that can lead to inconsistencies
when unifying terms with a large number of abstractions.
Goal "xs @ [] = xs";
by(induct_tac "xs" 1);
by(Auto_tac);
qed "app_Nil2";
Addsimps [app_Nil2];
Goal "(xs @ ys) @ zs = xs @ (ys @ zs)";
by(induct_tac "xs" 1);
by(Auto_tac);
qed "app_assoc";
Addsimps [app_assoc];
Goal "rev(xs @ ys) = (rev ys) @ (rev xs)";
by(induct_tac "xs" 1);
by(Auto_tac);
qed "rev_app";
Addsimps [rev_app];
Goal "rev(rev xs) = xs";
by(induct_tac "xs" 1);
by(Auto_tac);
qed "rev_rev";