src/Pure/proofterm.ML
changeset 64568 a504a3dec35a
parent 64566 679710d324f1
child 64572 cec07f7249cd
equal deleted inserted replaced
64567:7141a3a4dc83 64568:a504a3dec35a
    58   val decode: proof XML.Decode.T
    58   val decode: proof XML.Decode.T
    59   val decode_body: proof_body XML.Decode.T
    59   val decode_body: proof_body XML.Decode.T
    60 
    60 
    61   (** primitive operations **)
    61   (** primitive operations **)
    62   val proofs_enabled: unit -> bool
    62   val proofs_enabled: unit -> bool
       
    63   val atomic_proof: proof -> bool
       
    64   val compact_proof: proof -> bool
    63   val proof_combt: proof * term list -> proof
    65   val proof_combt: proof * term list -> proof
    64   val proof_combt': proof * term option list -> proof
    66   val proof_combt': proof * term option list -> proof
    65   val proof_combP: proof * proof list -> proof
    67   val proof_combP: proof * proof list -> proof
    66   val strip_combt: proof -> proof * term option list
    68   val strip_combt: proof -> proof * term option list
    67   val strip_combP: proof -> proof * proof list
    69   val strip_combP: proof -> proof * proof list
   354 
   356 
   355 end;
   357 end;
   356 
   358 
   357 
   359 
   358 (***** proof objects with different levels of detail *****)
   360 (***** proof objects with different levels of detail *****)
       
   361 
       
   362 fun atomic_proof prf =
       
   363   (case prf of
       
   364     Abst _ => false
       
   365   | AbsP _ => false
       
   366   | op % _ => false
       
   367   | op %% _ => false
       
   368   | Promise _ => false
       
   369   | _ => true);
       
   370 
       
   371 fun compact_proof (prf % _) = compact_proof prf
       
   372   | compact_proof (prf1 %% prf2) = atomic_proof prf2 andalso compact_proof prf1
       
   373   | compact_proof prf = atomic_proof prf;
   359 
   374 
   360 fun (prf %> t) = prf % SOME t;
   375 fun (prf %> t) = prf % SOME t;
   361 
   376 
   362 val proof_combt = Library.foldl (op %>);
   377 val proof_combt = Library.foldl (op %>);
   363 val proof_combt' = Library.foldl (op %);
   378 val proof_combt' = Library.foldl (op %);