equal
deleted
inserted
replaced
220 |
220 |
221 (* axioms and facts *) |
221 (* axioms and facts *) |
222 |
222 |
223 fun standard_prop used extra_shyps raw_prop raw_proof = |
223 fun standard_prop used extra_shyps raw_prop raw_proof = |
224 let |
224 let |
225 val raw_proofs = the_list raw_proof; |
225 val (prop, proof) = Proofterm.standard_vars used (raw_prop, raw_proof); |
226 val ([prop], proofs) = Proofterm.standard_vars used ([raw_prop], raw_proofs); |
|
227 |
|
228 val args = rev (add_frees used prop []); |
226 val args = rev (add_frees used prop []); |
229 val typargs = rev (add_tfrees used prop []); |
227 val typargs = rev (add_tfrees used prop []); |
230 val used_typargs = fold (Name.declare o #1) typargs used; |
228 val used_typargs = fold (Name.declare o #1) typargs used; |
231 val sorts = Name.invent used_typargs Name.aT (length extra_shyps) ~~ extra_shyps; |
229 val sorts = Name.invent used_typargs Name.aT (length extra_shyps) ~~ extra_shyps; |
232 in ((sorts @ typargs, args, prop), try hd proofs) end; |
230 in ((sorts @ typargs, args, prop), proof) end; |
233 |
231 |
234 val encode_prop = |
232 val encode_prop = |
235 let open XML.Encode Term_XML.Encode |
233 let open XML.Encode Term_XML.Encode |
236 in triple (list (pair string sort)) (list (pair string typ)) term end; |
234 in triple (list (pair string sort)) (list (pair string typ)) term end; |
237 |
235 |