src/Tools/permanent_interpretation.ML
changeset 61352 201c21438177
parent 61336 fa4ebbd350ae
child 61606 6d5213bd9709
equal deleted inserted replaced
61343:5b5656a63bd6 61352:201c21438177
    32 
    32 
    33     (*defining*)
    33     (*defining*)
    34     val pre_defs = map2 (fn ((name, atts), ((b, mx), _)) => fn rhs =>
    34     val pre_defs = map2 (fn ((name, atts), ((b, mx), _)) => fn rhs =>
    35       ((b, mx), ((Thm.def_binding_optional b name, atts), rhs))) raw_defs rhss;
    35       ((b, mx), ((Thm.def_binding_optional b name, atts), rhs))) raw_defs rhss;
    36     val (defs, defs_ctxt) = fold_map Local_Theory.define pre_defs expr_ctxt1;
    36     val (defs, defs_ctxt) = fold_map Local_Theory.define pre_defs expr_ctxt1;
    37     val def_eqns = map (Thm.symmetric o Morphism.thm (Local_Theory.standard_morphism defs_ctxt expr_ctxt1) o snd o snd) defs;
       
    38     val expr_ctxt2 = Proof_Context.transfer (Proof_Context.theory_of defs_ctxt) expr_ctxt1;
    37     val expr_ctxt2 = Proof_Context.transfer (Proof_Context.theory_of defs_ctxt) expr_ctxt1;
       
    38     val def_eqns = defs
       
    39       |> map (Thm.symmetric o
       
    40         Morphism.thm (Local_Theory.standard_morphism defs_ctxt expr_ctxt2) o snd o snd);
    39 
    41 
    40     (*setting up*)
    42     (*setting up*)
    41     val attrss = map (apsnd (map (prep_attr expr_ctxt2)) o fst) raw_eqns;
    43     val attrss = map (apsnd (map (prep_attr expr_ctxt2)) o fst) raw_eqns;
    42     val goal_ctxt = fold Variable.auto_fixes eqns expr_ctxt2;
    44     val goal_ctxt = fold Variable.auto_fixes eqns expr_ctxt2;
    43     val export' = Variable.export_morphism goal_ctxt expr_ctxt2;
    45     val export' = Variable.export_morphism goal_ctxt expr_ctxt2;