src/HOL/Induct/Term.ML
author wenzelm
Thu, 16 Mar 2000 00:35:27 +0100
changeset 8490 6e0f23304061
parent 7847 5a3fa0c4b215
permissions -rw-r--r--
added HOL/PreLIst.thy;

(*  Title:      HOL/Induct/Term.ML
    ID:         $Id$
    Author:     Stefan Berghofer, TU Muenchen
    Copyright   1998  TU Muenchen

Terms over a given alphabet -- function applications
*)

(** a simple theorem about composition of substitutions **)

Goal "(subst_term ((subst_term f1) o f2) t) =  \
  \  (subst_term f1 (subst_term f2 t)) &  \
  \  (subst_term_list ((subst_term f1) o f2) ts) =  \
  \  (subst_term_list f1 (subst_term_list f2 ts))";
by (induct_tac "t ts" 1);
by (ALLGOALS Asm_full_simp_tac);
qed "subst_comp";

(**** alternative induction rule ****)

bind_thm ("term_induct2", prove_goal thy
  "[| !!v. P (Var v);  \
   \  !!f ts. list_all P ts ==> P (App f ts) |] ==>  \
   \    P t & list_all P ts"
  (fn prems =>
    [induct_tac "t ts" 1,
     resolve_tac prems 1,
     resolve_tac prems 1,
     atac 1,
     ALLGOALS Asm_simp_tac]) RS conjunct1);