src/Pure/proofterm.ML
changeset 70983 52a62342c9ce
parent 70982 71d1971d67ad
child 70984 5e98925f86ed
equal deleted inserted replaced
70982:71d1971d67ad 70983:52a62342c9ce
   171   val standard_vars_term: Name.context -> term -> term
   171   val standard_vars_term: Name.context -> term -> term
   172   val add_standard_vars: proof -> (string * typ) list -> (string * typ) list
   172   val add_standard_vars: proof -> (string * typ) list -> (string * typ) list
   173   val add_standard_vars_term: term -> (string * typ) list -> (string * typ) list
   173   val add_standard_vars_term: term -> (string * typ) list -> (string * typ) list
   174 
   174 
   175   val export_enabled: unit -> bool
   175   val export_enabled: unit -> bool
       
   176   val export_standard_enabled: unit -> bool
   176   val fulfill_norm_proof: theory -> (serial * proof_body) list -> proof_body -> proof_body
   177   val fulfill_norm_proof: theory -> (serial * proof_body) list -> proof_body -> proof_body
   177   val commit_proof: proof -> unit
   178   val commit_proof: theory -> proof -> unit
   178   val thm_proof: theory -> (class * class -> proof) ->
   179   val thm_proof: theory -> (class * class -> proof) ->
   179     (string * class list list * class -> proof) -> string * Position.T -> sort list ->
   180     (string * class list list * class -> proof) -> string * Position.T -> sort list ->
   180     term list -> term -> (serial * proof_body future) list -> proof_body -> thm * proof
   181     term list -> term -> (serial * proof_body future) list -> proof_body -> thm * proof
   181   val unconstrain_thm_proof: theory -> (class * class -> proof) ->
   182   val unconstrain_thm_proof: theory -> (class * class -> proof) ->
   182     (string * class list list * class -> proof) -> sort list -> term ->
   183     (string * class list list * class -> proof) -> sort list -> term ->
  2086 
  2087 
  2087 
  2088 
  2088 (* PThm nodes *)
  2089 (* PThm nodes *)
  2089 
  2090 
  2090 fun export_enabled () = Options.default_bool "export_proofs";
  2091 fun export_enabled () = Options.default_bool "export_proofs";
  2091 
  2092 fun export_standard_enabled () = Options.default_bool "export_standard_proofs";
  2092 fun commit_proof proof =
  2093 
       
  2094 fun export_proof_boxes proof =
  2093   let
  2095   let
  2094     fun export_boxes (AbsP (_, _, prf)) = export_boxes prf
  2096     fun export_boxes (AbsP (_, _, prf)) = export_boxes prf
  2095       | export_boxes (Abst (_, _, prf)) = export_boxes prf
  2097       | export_boxes (Abst (_, _, prf)) = export_boxes prf
  2096       | export_boxes (prf1 %% prf2) = export_boxes prf1 #> export_boxes prf2
  2098       | export_boxes (prf1 %% prf2) = export_boxes prf1 #> export_boxes prf2
  2097       | export_boxes (prf % _) = export_boxes prf
  2099       | export_boxes (prf % _) = export_boxes prf
  2105                 val boxes' = boxes |> not (Lazy.is_finished export) ? Inttab.update (i, export);
  2107                 val boxes' = boxes |> not (Lazy.is_finished export) ? Inttab.update (i, export);
  2106               in export_boxes prf' boxes' end)
  2108               in export_boxes prf' boxes' end)
  2107       | export_boxes _ = I;
  2109       | export_boxes _ = I;
  2108     val boxes = (proof, Inttab.empty) |-> export_boxes |> Inttab.dest;
  2110     val boxes = (proof, Inttab.empty) |-> export_boxes |> Inttab.dest;
  2109   in List.app (Lazy.force o #2) boxes end;
  2111   in List.app (Lazy.force o #2) boxes end;
       
  2112 
       
  2113 fun commit_proof thy proof =
       
  2114   if Context.theory_name thy = Context.PureN orelse
       
  2115     (export_enabled () andalso not (export_standard_enabled ()))
       
  2116   then export_proof_boxes proof else ();
  2110 
  2117 
  2111 local
  2118 local
  2112 
  2119 
  2113 fun unconstrainT_proof algebra classrel_proof arity_proof (ucontext: Logic.unconstrain_context) =
  2120 fun unconstrainT_proof algebra classrel_proof arity_proof (ucontext: Logic.unconstrain_context) =
  2114   let
  2121   let
  2154   end;
  2161   end;
  2155 
  2162 
  2156 fun export thy i prop prf =
  2163 fun export thy i prop prf =
  2157   if export_enabled () then
  2164   if export_enabled () then
  2158     let
  2165     let
  2159       val _ = commit_proof prf;
  2166       val _ = export_proof_boxes prf;
  2160       val _ = export_proof thy i prop prf;
  2167       val _ = export_proof thy i prop prf;
  2161     in () end
  2168     in () end
  2162   else ();
  2169   else ();
  2163 
  2170 
  2164 fun prune proof =
  2171 fun prune proof =