src/Pure/proofterm.ML
changeset 70440 03cfef16ddb4
parent 70439 145fb19d906d
child 70442 6410166400ea
equal deleted inserted replaced
70439:145fb19d906d 70440:03cfef16ddb4
    52   val thm_ord: pthm * pthm -> order
    52   val thm_ord: pthm * pthm -> order
    53   val unions_oracles: oracle Ord_List.T list -> oracle Ord_List.T
    53   val unions_oracles: oracle Ord_List.T list -> oracle Ord_List.T
    54   val unions_thms: pthm Ord_List.T list -> pthm Ord_List.T
    54   val unions_thms: pthm Ord_List.T list -> pthm Ord_List.T
    55   val all_oracles_of: proof_body -> oracle Ord_List.T
    55   val all_oracles_of: proof_body -> oracle Ord_List.T
    56   val approximate_proof_body: proof -> proof_body
    56   val approximate_proof_body: proof -> proof_body
    57   val no_proof_body: proof_body
    57   val no_proof_body: proof -> proof_body
    58   val no_thm_proofs: proof -> proof
    58   val no_thm_proofs: proof -> proof
       
    59   val no_body_proofs: proof -> proof
    59 
    60 
    60   val encode: proof XML.Encode.T
    61   val encode: proof XML.Encode.T
    61   val encode_body: proof_body XML.Encode.T
    62   val encode_body: proof_body XML.Encode.T
    62   val decode: proof XML.Decode.T
    63   val decode: proof XML.Decode.T
    63   val decode_body: proof_body XML.Decode.T
    64   val decode_body: proof_body XML.Decode.T
   308      {oracles = Ord_List.make oracle_ord oracles,
   309      {oracles = Ord_List.make oracle_ord oracles,
   309       thms = Ord_List.make thm_ord thms,
   310       thms = Ord_List.make thm_ord thms,
   310       proof = prf}
   311       proof = prf}
   311   end;
   312   end;
   312 
   313 
   313 val no_proof_body = PBody {oracles = [], thms = [], proof = MinProof};
   314 fun no_proof_body proof = PBody {oracles = [], thms = [], proof = proof};
   314 val no_body = Future.value no_proof_body;
   315 val no_body = Future.value (no_proof_body MinProof);
   315 
   316 
   316 fun no_thm_proofs (PThm (i, (a, _))) = PThm (i, (a, no_body))
   317 fun no_thm_proofs (PThm (i, (a, _))) = PThm (i, (a, no_body))
   317   | no_thm_proofs (Abst (x, T, prf)) = Abst (x, T, no_thm_proofs prf)
   318   | no_thm_proofs (Abst (x, T, prf)) = Abst (x, T, no_thm_proofs prf)
   318   | no_thm_proofs (AbsP (x, t, prf)) = AbsP (x, t, no_thm_proofs prf)
   319   | no_thm_proofs (AbsP (x, t, prf)) = AbsP (x, t, no_thm_proofs prf)
   319   | no_thm_proofs (prf % t) = no_thm_proofs prf % t
   320   | no_thm_proofs (prf % t) = no_thm_proofs prf % t
   320   | no_thm_proofs (prf1 %% prf2) = no_thm_proofs prf1 %% no_thm_proofs prf2
   321   | no_thm_proofs (prf1 %% prf2) = no_thm_proofs prf1 %% no_thm_proofs prf2
   321   | no_thm_proofs a = a;
   322   | no_thm_proofs a = a;
       
   323 
       
   324 fun no_body_proofs (PThm (i, (a, body))) =
       
   325       PThm (i, (a, Future.value (no_proof_body (join_proof body))))
       
   326   | no_body_proofs (Abst (x, T, prf)) = Abst (x, T, no_body_proofs prf)
       
   327   | no_body_proofs (AbsP (x, t, prf)) = AbsP (x, t, no_body_proofs prf)
       
   328   | no_body_proofs (prf % t) = no_body_proofs prf % t
       
   329   | no_body_proofs (prf1 %% prf2) = no_body_proofs prf1 %% no_body_proofs prf2
       
   330   | no_body_proofs a = a;
   322 
   331 
   323 
   332 
   324 
   333 
   325 (** XML data representation **)
   334 (** XML data representation **)
   326 
   335