Hi John,

you can get a very detailed and easily checkable output from Prover9 by 
using its Ivy proof objects (they are so simple that I even wrote a Mizar 
import for it :-). It used to be an option to Otter, but it seems that 
Bill now has a special tool for it: prooftrans 
http://www.cs.unm.edu/~mccune/prover9/manual/2008-04A/prooftrans.html . 
Search for IVY Proofs on that page.

Josef

On Wed, 16 Apr 2008, John Harrison wrote:

>
> Hi Tom,
>
> | I have a problem running the following example:
> | [...]
>
> Thanks for reporting that! It turns out that I was only doing proof
> reconstruction for paramodulation with unit equations, not general
> clauses. I've put in a fix that I think corrects things generally, and
> certainly solves the problem you wanted. But let me know if you hit
> other failures. Prover9 is distinguished from most other systems by
> the fact that it provides very clear and explicit low-level proofs.
> But the proof format is not really documented, and I essentially
> reverse-engineered it from a few examples, so other flaws are
> possible. My proposed fix is to add the following extra functions:
>
>  let AP_IMP =
>    let pp = MATCH_MP(TAUT `(a ==> b) ==> !x. x \/ a ==> x \/ b`) in
>    fun t -> SPEC t o pp;;
>
>  let rec PARA_BACK_CONV eqdir tm =
>    match eqdir with
>      [Atom "1"] when not(is_disj tm) -> REFL tm
>    | [Atom "2"] when not(is_disj tm) -> SYM_CONV tm
>    | Atom "2"::eqs -> RAND_CONV (PARA_BACK_CONV eqs) tm
>    | [Atom "1"; Atom f] when is_disj tm ->
>          let th1 = if f = "2" then LAND_CONV SYM_CONV tm else REFL tm in
>          let tm' = rand(concl th1) in
>          let djs = disjuncts tm' in
>          let th2 = DISJ_ACI_RULE(mk_eq(tm',list_mk_disj(tl djs @ [hd djs]))) 
> in
>          TRANS th1 th2
>    | _ -> failwith "PARA_BACK_CONV";;
>
> and then change the "paramod" clause in the definition of "proofstep" from
>
>  | List[Atom "paramod"; Atom eqid; List [Atom flip]; Atom tmid; List dir] ->
>        let eth = (if flip = "2" then SYM else I) (apply asms eqid)
>        and tth = apply asms tmid
>        and path = (map (fun (Atom s) -> int_of_string s) dir) in
>        let th = CONV_RULE(PARA_SUBS_CONV path eth) tth in
>        if concl th = tm then th
>        else failwith "Inconsistency from instantiation"
>
> to:
>
>  | List[Atom "paramod"; Atom eqid; List eqdir; Atom tmid; List dir] ->
>        let eth = CONV_RULE (PARA_BACK_CONV eqdir) (apply asms eqid)
>        and tth = apply asms tmid
>        and path = (map (fun (Atom s) -> int_of_string s) dir) in
>        let etm = concl eth in
>        let th =
>          if is_disj etm then
>            let djs = disjuncts etm in
>            let eq = last djs in
>            let fth = CONV_RULE (PARA_SUBS_CONV path (ASSUME eq)) tth in
>            MP (itlist AP_IMP (butlast djs) (DISCH eq fth)) eth
>          else CONV_RULE(PARA_SUBS_CONV path eth) tth in
>        if concl th = tm then th
>        else failwith "Inconsistency from paramodulation"
>
> | Related to this example, I have a question about the standard options in
> | file prover9.ml:
> |
> | let prover9_options = ref
> | ("clear(auto_inference).\n"^
> |  "clear(auto_denials).\n"^
> |  "clear(auto_limits).\n"^
> |  "set(neg_binary_resolution).\n"^
> |  "set(binary_resolution).\n"^
> |  "set(paramodulation).\n");;
> |
> | If I run with these options prover9 takes a long time, but if I run
> | with the default prover9 settings (by modifying the prover9.ml
> | file), prover9 proves the goal very quickly. However, I suspect
> | that it may only be proving a single disjunct rather than all the
> | disjuncts (?). Can you confirm this?
>
> No, based on the fact that (with that bugfix) the proof reconstruction
> for your example still works when I set
>
>  prover9_options := ""
>
> (this is what you meant by using the default settings, right?), it
> must be doing the whole thing. But I also found that the default
> settings were much faster in this case. The settings in the file
> were arrived at based on a bit of empirical investigation on some
> examples, and might not be the best choice in general. I can't even
> remember what objection I had to the default options.
>
> John.
>
> -------------------------------------------------------------------------
> This SF.net email is sponsored by the 2008 JavaOne(SM) Conference
> Don't miss this year's exciting event. There's still time to save $100.
> Use priority code J8TL2D2.
> http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
> _______________________________________________
> hol-info mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/hol-info
>

-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
hol-info mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/hol-info

Reply via email to