# HG changeset patch # User Cezary Kaliszyk # Date 1263488003 -3600 # Node ID f2a1ebba9bdc9c950d9369103001c1bab54b5b96 # Parent c3662f8451293315f6d8573c864a02376a51cffb First subgoal. diff -r c3662f845129 -r f2a1ebba9bdc Quot/Examples/LamEx.thy --- a/Quot/Examples/LamEx.thy Thu Jan 14 17:13:11 2010 +0100 +++ b/Quot/Examples/LamEx.thy Thu Jan 14 17:53:23 2010 +0100 @@ -258,24 +258,34 @@ lemma lam_induct_strong: fixes a::"'a::fs_name" - shows - "\\name b. P b (Var name); - \lam1 lam2 b. \\c. P c lam1; \c. P c lam2\ \ P b (App lam1 lam2); - \name lam b. \\c. P c lam; name \ lam\ \ P b (Lam name lam)\ - \ P a lam" + assumes a1: "\name b. P b (Var name)" + and a2: "\lam1 lam2 b. \\c. P c lam1; \c. P c lam2\ \ P b (App lam1 lam2)" + and a3: "\name lam b. \\c. P c lam; name \ lam\ \ P b (Lam name lam)" + shows "P a lam" proof - have "\(pi::name prm). P a (pi \ lam)" proof (induct lam rule: lam_induct) case (1 name pi) - show "P a (pi \ Var name)" - apply - - sorry + show "P a (pi \ Var name)" + apply (simp only: pi_var1) + apply (rule a1) + done next case (2 lam1 lam2 pi) - show "P a (pi \ App lam1 lam2)" sorry + have b1: "P a (pi \ lam1)" by fact + have b2: "P a (pi \ lam2)" by fact + show "P a (pi \ App lam1 lam2)" + apply (simp only: pi_app) + apply (rule a2) + using b1 b2 + sorry next case (3 name lam pi) - show "P a (pi \ Lam name lam)" sorry + have b: "P a (pi \ lam)" by fact + show "P a (pi \ Lam name lam)" + apply (simp add: pi_lam) + using b + sorry qed then have "P a (([]::name prm) \ lam)" by blast then show "P a lam" by simp