src/Pure/Isar/expression.ML
changeset 54865 82bfac35f16f
parent 54742 7a86358a3c0b
child 54875 b370e1622e41
equal deleted inserted replaced
54864:a064732223ad 54865:82bfac35f16f
   867   in setup_proof after_qed propss eqns goal_ctxt end;
   867   in setup_proof after_qed propss eqns goal_ctxt end;
   868 
   868 
   869 
   869 
   870 (* various flavours of interpretation *)
   870 (* various flavours of interpretation *)
   871 
   871 
   872 fun assert_not_theory lthy = if Named_Target.is_theory lthy
       
   873   then error "Not possible on level of global theory" else ();
       
   874 
       
   875 fun gen_interpret prep_expr prep_prop prep_attr expression raw_eqns int state =
   872 fun gen_interpret prep_expr prep_prop prep_attr expression raw_eqns int state =
   876   let
   873   let
   877     val _ = Proof.assert_forward_or_chain state;
   874     val _ = Proof.assert_forward_or_chain state;
   878     val ctxt = Proof.context_of state;
   875     val ctxt = Proof.context_of state;
   879     fun lift_after_qed after_qed witss eqns = Proof.map_context (after_qed witss eqns) #> Proof.reset_facts;
   876     fun lift_after_qed after_qed witss eqns = Proof.map_context (after_qed witss eqns) #> Proof.reset_facts;
   895     |> generic_interpretation prep_expr prep_prop prep_attr Element.witness_proof_eqs
   892     |> generic_interpretation prep_expr prep_prop prep_attr Element.witness_proof_eqs
   896         Local_Theory.notes_kind Local_Theory.activate expression raw_eqns;
   893         Local_Theory.notes_kind Local_Theory.activate expression raw_eqns;
   897 
   894 
   898 fun gen_sublocale prep_expr prep_prop prep_attr expression raw_eqns lthy =
   895 fun gen_sublocale prep_expr prep_prop prep_attr expression raw_eqns lthy =
   899   let
   896   let
   900     val _ = assert_not_theory lthy;
   897     val _ = if Named_Target.is_theory lthy
       
   898       then error "Not possible on level of global theory" else ();
   901     val locale = Named_Target.the_name lthy;
   899     val locale = Named_Target.the_name lthy;
   902   in
   900   in
   903     lthy
   901     lthy
   904     |> generic_interpretation prep_expr prep_prop prep_attr Element.witness_proof_eqs
   902     |> generic_interpretation prep_expr prep_prop prep_attr Element.witness_proof_eqs
   905         Local_Theory.notes_kind (Generic_Target.locale_dependency locale) expression raw_eqns
   903         Local_Theory.notes_kind (Generic_Target.locale_dependency locale) expression raw_eqns
   929     |> generic_interpretation cert_goal_expression (K I) (K I) Element.witness_proof_eqs
   927     |> generic_interpretation cert_goal_expression (K I) (K I) Element.witness_proof_eqs
   930         Local_Theory.notes_kind subscribe expression raw_eqns
   928         Local_Theory.notes_kind subscribe expression raw_eqns
   931   end;
   929   end;
   932 
   930 
   933 fun ephemeral_interpretation expression raw_eqns lthy =
   931 fun ephemeral_interpretation expression raw_eqns lthy =
   934   let
   932   lthy
   935     val _ = assert_not_theory lthy;
   933   |> generic_interpretation cert_goal_expression (K I) (K I) Element.witness_proof_eqs
   936   in
   934       Local_Theory.notes_kind Local_Theory.activate expression raw_eqns
   937     lthy
       
   938     |> generic_interpretation cert_goal_expression (K I) (K I) Element.witness_proof_eqs
       
   939         Local_Theory.notes_kind Local_Theory.activate expression raw_eqns
       
   940   end;
       
   941 
   935 
   942 fun interpret x = gen_interpret cert_goal_expression (K I) (K I) x;
   936 fun interpret x = gen_interpret cert_goal_expression (K I) (K I) x;
   943 fun interpret_cmd x =
   937 fun interpret_cmd x =
   944   gen_interpret read_goal_expression Syntax.parse_prop Attrib.intern_src x;
   938   gen_interpret read_goal_expression Syntax.parse_prop Attrib.intern_src x;
   945 
   939