src/HOLCF/Tools/adm_tac.ML
changeset 32035 8e77b6a250d5
parent 31023 d027411c9a38
child 33440 181fae134b43
equal deleted inserted replaced
32034:70c0bcd0adfb 32035:8e77b6a250d5
   115                    (make_term t [] paths 0));
   115                    (make_term t [] paths 0));
   116     val tye = Sign.typ_match thy (tT, #T (rep_cterm tt)) Vartab.empty;
   116     val tye = Sign.typ_match thy (tT, #T (rep_cterm tt)) Vartab.empty;
   117     val tye' = Sign.typ_match thy (PT, #T (rep_cterm Pt)) tye;
   117     val tye' = Sign.typ_match thy (PT, #T (rep_cterm Pt)) tye;
   118     val ctye = map (fn (ixn, (S, T)) =>
   118     val ctye = map (fn (ixn, (S, T)) =>
   119       (ctyp_of thy (TVar (ixn, S)), ctyp_of thy T)) (Vartab.dest tye');
   119       (ctyp_of thy (TVar (ixn, S)), ctyp_of thy T)) (Vartab.dest tye');
   120     val tv = cterm_of thy (Var (("t", j), Envir.typ_subst_TVars tye' tT));
   120     val tv = cterm_of thy (Var (("t", j), Envir.subst_type tye' tT));
   121     val Pv = cterm_of thy (Var (("P", j), Envir.typ_subst_TVars tye' PT));
   121     val Pv = cterm_of thy (Var (("P", j), Envir.subst_type tye' PT));
   122     val rule' = instantiate (ctye, [(tv, tt), (Pv, Pt)]) rule
   122     val rule' = instantiate (ctye, [(tv, tt), (Pv, Pt)]) rule
   123   in rule' end;
   123   in rule' end;
   124 
   124 
   125 
   125 
   126 (*** the admissibility tactic ***)
   126 (*** the admissibility tactic ***)