src/Pure/Isar/expression.ML
changeset 63086 5c8e6a751adc
parent 63085 88474b9fc844
child 63352 4eaf35781b23
equal deleted inserted replaced
63085:88474b9fc844 63086:5c8e6a751adc
   442 fun prep_statement prep activate raw_elems raw_stmt ctxt =
   442 fun prep_statement prep activate raw_elems raw_stmt ctxt =
   443   let
   443   let
   444     val ((_, _, elems, concl), _) =
   444     val ((_, _, elems, concl), _) =
   445       prep {strict = true, do_close = false, fixed_frees = true}
   445       prep {strict = true, do_close = false, fixed_frees = true}
   446         ([], []) I raw_elems raw_stmt ctxt;
   446         ([], []) I raw_elems raw_stmt ctxt;
   447     val (_, ctxt') = ctxt
   447     val ctxt' = ctxt
   448       |> Proof_Context.set_stmt true
   448       |> Proof_Context.set_stmt true
   449       |> fold_map activate elems;
   449       |> fold_map activate elems |> #2
       
   450       |> Proof_Context.restore_stmt ctxt;
   450   in (concl, ctxt') end;
   451   in (concl, ctxt') end;
   451 
   452 
   452 in
   453 in
   453 
   454 
   454 fun cert_statement x = prep_statement cert_full_context_statement Element.activate_i x;
   455 fun cert_statement x = prep_statement cert_full_context_statement Element.activate_i x;
   473     val ctxt' = ctxt
   474     val ctxt' = ctxt
   474       |> fix_params fixed
   475       |> fix_params fixed
   475       |> fold (Context.proof_map o Locale.activate_facts NONE) deps;
   476       |> fold (Context.proof_map o Locale.activate_facts NONE) deps;
   476     val (elems', ctxt'') = ctxt'
   477     val (elems', ctxt'') = ctxt'
   477       |> Proof_Context.set_stmt true
   478       |> Proof_Context.set_stmt true
   478       |> fold_map activate elems;
   479       |> fold_map activate elems
       
   480       ||> Proof_Context.restore_stmt ctxt';
   479   in ((fixed, deps, elems', ctxt''), (parms, ctxt0)) end;
   481   in ((fixed, deps, elems', ctxt''), (parms, ctxt0)) end;
   480 
   482 
   481 in
   483 in
   482 
   484 
   483 fun cert_declaration x = prep_declaration cert_full_context_statement Element.activate_i x;
   485 fun cert_declaration x = prep_declaration cert_full_context_statement Element.activate_i x;