src/Pure/Isar/element.ML
changeset 35625 9c818cab0dd0
parent 35624 c4e29a0bb8c1
child 35767 086504a943af
equal deleted inserted replaced
35624:c4e29a0bb8c1 35625:9c818cab0dd0
   221   let
   221   let
   222     val thy = ProofContext.theory_of ctxt;
   222     val thy = ProofContext.theory_of ctxt;
   223     val cert = Thm.cterm_of thy;
   223     val cert = Thm.cterm_of thy;
   224 
   224 
   225     val th = MetaSimplifier.norm_hhf raw_th;
   225     val th = MetaSimplifier.norm_hhf raw_th;
   226     val is_elim = ObjectLogic.is_elim th;
   226     val is_elim = Object_Logic.is_elim th;
   227 
   227 
   228     val ((_, [th']), ctxt') = Variable.import true [th] (Variable.set_body false ctxt);
   228     val ((_, [th']), ctxt') = Variable.import true [th] (Variable.set_body false ctxt);
   229     val prop = Thm.prop_of th';
   229     val prop = Thm.prop_of th';
   230     val (prems, concl) = Logic.strip_horn prop;
   230     val (prems, concl) = Logic.strip_horn prop;
   231     val concl_term = ObjectLogic.drop_judgment thy concl;
   231     val concl_term = Object_Logic.drop_judgment thy concl;
   232 
   232 
   233     val fixes = fold_aterms (fn v as Free (x, T) =>
   233     val fixes = fold_aterms (fn v as Free (x, T) =>
   234         if Variable.newly_fixed ctxt' ctxt x andalso not (v aconv concl_term)
   234         if Variable.newly_fixed ctxt' ctxt x andalso not (v aconv concl_term)
   235         then insert (op =) (x, T) else I | _ => I) prop [] |> rev;
   235         then insert (op =) (x, T) else I | _ => I) prop [] |> rev;
   236     val (assumes, cases) = take_suffix (fn prem =>
   236     val (assumes, cases) = take_suffix (fn prem =>