# HG changeset patch # User Cezary Kaliszyk # Date 1269428738 -3600 # Node ID b295a928c56b95a79c437fde1a1560e0a2a027c5 # Parent 9db725590fe932b33578493b522d0d26db19c9fb Working on stating induct. diff -r 9db725590fe9 -r b295a928c56b Nominal/ExCoreHaskell.thy --- a/Nominal/ExCoreHaskell.thy Wed Mar 24 12:04:03 2010 +0100 +++ b/Nominal/ExCoreHaskell.thy Wed Mar 24 12:05:38 2010 +0100 @@ -88,6 +88,55 @@ lemmas fv_supp=tkind_ckind_ty_ty_lst_co_co_lst_trm_assoc_lst_pat_vt_lst_tvtk_lst_tvck_lst.supp(1-9,11,13,15) lemmas supp=tkind_ckind_ty_ty_lst_co_co_lst_trm_assoc_lst_pat_vt_lst_tvtk_lst_tvck_lst.fv[simplified fv_supp] +lemma + assumes a01: "P1 KStar" + and a02: "\tkind1 tkind2. \P1 tkind1; P1 tkind2\ \ P1 (KFun tkind1 tkind2)" + and a03: "\ty1 ty2. \P3 ty1; P3 ty2\ \ P2 (CKEq ty1 ty2)" + and a04: "\tvar. P3 (TVar tvar)" + and a05: "\char. P3 (TC char)" + and a06: "\ty1 ty2. \P3 ty1; P3 ty2\ \ P3 (TApp ty1 ty2)" + and a07: "\char ty_lst. P4 ty_lst \ P3 (TFun char ty_lst)" + and a08: "\tvar tkind ty. \P1 tkind; P3 ty\ \ P3 (TAll tvar tkind ty)" + and a09: "\ty1 ty2 ty3. \P3 ty1; P3 ty2; P3 ty3\ \ P3 (TEq ty1 ty2 ty3)" + and a10: "P4 TsNil" + and a11: "\ty ty_lst. \P3 ty; P4 ty_lst\ \ P4 (TsCons ty ty_lst)" + and a12: "\char. P5 (CC char)" + and a13: "\co1 co2. \P5 co1; P5 co2\ \ P5 (CApp co1 co2)" + and a14: "\char co_lst. P6 co_lst \ P5 (CFun char co_lst)" + and a15: "\tvar ckind co. \P2 ckind; P5 co\ \ P5 (CAll tvar ckind co)" + and a16: "\co1 co2 co3. \P5 co1; P5 co2; P5 co3\ \ P5 (CEq co1 co2 co3)" + and a17: "\co. P5 co \ P5 (CSym co)" + and a18: "\co1 co2. \P5 co1; P5 co2\ \ P5 (CCir co1 co2)" + and a19: "\co. P5 co \ P5 (CLeft co)" + and a20: "\co. P5 co \ P5 (CRight co)" + and a21: "\co. P5 co \ P5 (CSim co)" + and a22: "\co. P5 co \ P5 (CRightc co)" + and a23: "\co. P5 co \ P5 (CLeftc co)" + and a24: "\co1 co2. \P5 co1; P5 co2\ \ P5 (CCoe co1 co2)" + and a25: "P6 CsNil" + and a26: "\co co_lst. \P5 co; P6 co_lst\ \ P6 (CsCons co co_lst)" + and a27: "\var. P7 (Var var)" + and a28: "\char. P7 (C char)" + and a29: "\tvar tkind trm. \P1 tkind; P7 trm\ \ P7 (LAMT tvar tkind trm)" + and a30: "\tvar ckind trm. \P2 ckind; P7 trm\ \ P7 (LAMC tvar ckind trm)" + and a31: "\trm ty. \P7 trm; P3 ty\ \ P7 (APP trm ty)" + and a32: "\var ty trm. \P3 ty; P7 trm\ \ P7 (Lam var ty trm)" + and a33: "\trm1 trm2. \P7 trm1; P7 trm2\ \ P7 (App trm1 trm2)" + and a34: "\var ty trm1 trm2. \P3 ty; P7 trm1; P7 trm2\ \ P7 (ExCoreHaskell.Let var ty trm1 trm2)" + and a35: "\trm assoc_lst. \P7 trm; P8 assoc_lst\ \ P7 (Case trm assoc_lst)" + and a36: "\trm ty. \P7 trm; P3 ty\ \ P7 (Cast trm ty)" + and a37: "P8 ANil" + and a38: "\pat trm assoc_lst. \P9 pat; P7 trm; P8 assoc_lst\ \ P8 (ACons pat trm assoc_lst)" + and a39: "\char tvtk_lst tvck_lst vt_lst. \P11 tvtk_lst; P12 tvck_lst; P10 vt_lst\ + \ P9 (K char tvtk_lst tvck_lst vt_lst)" + and a40: "P10 VTNil" + and a41: "\var ty vt_lst. \P3 ty; P10 vt_lst\ \ P10 (VTCons var ty vt_lst)" + and a42: "P11 TVTKNil" + and a43: "\tvar tkind tvtk_lst. \P1 tkind; P11 tvtk_lst\ \ P11 (TVTKCons tvar tkind tvtk_lst)" + and a44: "P12 TVCKNil" + and a45: "\tvar ckind tvck_lst. \P2 ckind; P12 tvck_lst\ \ P12 (TVCKCons tvar ckind tvck_lst)" + shows "P1 tkind \ P2 ckind \ P3 ty \ P4 ty_lst \ P5 co \ P6 co_lst \ + P7 trm \ P8 assoc_lst \ P9 pat \ P10 vt_lst \ P11 tvtk_lst \ P12 tvck_lst" end