equal
deleted
inserted
replaced
1041 fun invoke_oracle arg = |
1041 fun invoke_oracle arg = |
1042 let val Cterm {cert = cert2, t = prop, T, maxidx, sorts} = oracle_fn arg in |
1042 let val Cterm {cert = cert2, t = prop, T, maxidx, sorts} = oracle_fn arg in |
1043 if T <> propT then |
1043 if T <> propT then |
1044 raise THM ("Oracle's result must have type prop: " ^ name, 0, []) |
1044 raise THM ("Oracle's result must have type prop: " ^ name, 0, []) |
1045 else |
1045 else |
1046 let val (oracle, prf) = Proofterm.oracle_proof name prop in |
1046 let |
|
1047 val oracle = Proofterm.make_oracle name prop; |
|
1048 val prf = if ! Proofterm.proofs = 2 then Proofterm.oracle_proof name prop else MinProof; |
|
1049 in |
1047 Thm (make_deriv [] [oracle] [] prf, |
1050 Thm (make_deriv [] [oracle] [] prf, |
1048 {cert = Context.join_certificate (Context.Certificate thy', cert2), |
1051 {cert = Context.join_certificate (Context.Certificate thy', cert2), |
1049 tags = [], |
1052 tags = [], |
1050 maxidx = maxidx, |
1053 maxidx = maxidx, |
1051 constraints = [], |
1054 constraints = [], |