Re: [Hol-info] useful HOL statistics to show the amount of proof work?

2012-05-21 Thread Ramana Kumar
On Mon, May 21, 2012 at 3:29 AM, Lu Zhao luz...@cs.utah.edu wrote:
 This is particularly dangerous when I have proof automation scripts that
 try different rewriting rules. The number reported is not representative
 on the complexity of the problem, but the number of inference steps
 conducted by HOL, which is not necessarily related to a correct proof
 construction that actually verifies a theorem.

 Since HOL is not designed for automatic reasoning,

I can't let this one by. HOL is designed to allow one to automate as
much reasoning as possible with tactics. Whether or not good enough
automation tactics have been written is another story, but I think
there are quite good ones (including integrations with other, stronger
purely automatic tools).

 so reporting the
 number of inference steps can be misleading in measuring the
 implementation complexity of solving problems, especially when using
 proof automation scripts with lots of rewriting rules.

Now, to answer your question, as Michael suggested you may find using
the Opentheory proof-logging kernel useful.
It builds a proof object for every theorem, so once your final theorem
is proved you can simply count the number of inference steps in its
proof.
This will not count any of the inference steps built along the
dead-end attempts.
(Indeed if you export the theorem into an Opentheory article, the
opentheory tool (not include with HOL) will perform easy
simplifications on the proof and count the primitive inferences by
type for you.)


 Lu

 On 04/07/2011 11:29 AM, Lu Zhao wrote:
 I found out in Count.sml that there are other utilities available, too.
 For example, you can use the following to start counting:

 val meter = Count.mk_meter();

 and use

 Count.report(Count.read meter);

 to see the statistics, after whatever operations you do.

 Best,
 Lu

 --
 Xperia(TM) PLAY
 It's a major breakthrough. An authentic gaming
 smartphone on the nation's most reliable network.
 And it wants your games.
 http://p.sf.net/sfu/verizon-sfdev
 ___
 hol-info mailing list
 hol-info@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/hol-info

 --
 Live Security Virtual Conference
 Exclusive live event will cover all the ways today's security and
 threat landscape has changed and how IT managers can respond. Discussions
 will include endpoint security, mobile security and the latest in malware
 threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
 ___
 hol-info mailing list
 hol-info@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/hol-info

--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
___
hol-info mailing list
hol-info@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hol-info


Re: [Hol-info] useful HOL statistics to show the amount of proof work?

2012-05-21 Thread Jeremy Dawson
Ramana Kumar wrote:
 On Mon, May 21, 2012 at 3:29 AM, Lu Zhao luz...@cs.utah.edu wrote:
   
 This is particularly dangerous when I have proof automation scripts that
 try different rewriting rules. The number reported is not representative
 on the complexity of the problem, but the number of inference steps
 conducted by HOL, which is not necessarily related to a correct proof
 construction that actually verifies a theorem.

 Since HOL is not designed for automatic reasoning,
 

 I can't let this one by. HOL is designed to allow one to automate as
 much reasoning as possible with tactics. Whether or not good enough
 automation tactics have been written is another story, but I think
   
An important part of this story is the fact that the tools are there for 
you to write your own according to the features of the problem at hand, 
so long as you are comfortable with not-quite-trivial Standard ML 
programming.

Jeremy

 there are quite good ones (including integrations with other, stronger
 purely automatic tools).

   
 so reporting the
 number of inference steps can be misleading in measuring the
 implementation complexity of solving problems, especially when using
 proof automation scripts with lots of rewriting rules.
 

 Now, to answer your question, as Michael suggested you may find using
 the Opentheory proof-logging kernel useful.
 It builds a proof object for every theorem, so once your final theorem
 is proved you can simply count the number of inference steps in its
 proof.
 This will not count any of the inference steps built along the
 dead-end attempts.
 (Indeed if you export the theorem into an Opentheory article, the
 opentheory tool (not include with HOL) will perform easy
 simplifications on the proof and count the primitive inferences by
 type for you.)

   


--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
___
hol-info mailing list
hol-info@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hol-info


Re: [Hol-info] useful HOL statistics to show the amount of proof work?

2012-05-20 Thread Lu Zhao
Using the following method has some problems, when there are failures in 
proof attempts. For example, the following sequence reports 44 primitive 
inference steps, after a proof failure.

val meter = Count.mk_meter();

g `p /\ p /\ q /\ F`;
e (METIS_TAC []);

Count.report(Count.read meter);

This is particularly dangerous when I have proof automation scripts that 
try different rewriting rules. The number reported is not representative 
on the complexity of the problem, but the number of inference steps 
conducted by HOL, which is not necessarily related to a correct proof 
construction that actually verifies a theorem.

Since HOL is not designed for automatic reasoning, so reporting the 
number of inference steps can be misleading in measuring the 
implementation complexity of solving problems, especially when using 
proof automation scripts with lots of rewriting rules.

Lu

On 04/07/2011 11:29 AM, Lu Zhao wrote:
 I found out in Count.sml that there are other utilities available, too.
 For example, you can use the following to start counting:

 val meter = Count.mk_meter();

 and use

 Count.report(Count.read meter);

 to see the statistics, after whatever operations you do.

 Best,
 Lu

 --
 Xperia(TM) PLAY
 It's a major breakthrough. An authentic gaming
 smartphone on the nation's most reliable network.
 And it wants your games.
 http://p.sf.net/sfu/verizon-sfdev
 ___
 hol-info mailing list
 hol-info@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/hol-info

--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
___
hol-info mailing list
hol-info@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hol-info


Re: [Hol-info] useful HOL statistics to show the amount of proof work?

2012-05-20 Thread Michael Norrish
This is certainly true.  Of course, it all depends on what you're trying to 
measure.  If you're interested in the size of the natural deduction proof that 
actually establishes a particular theorem, you really need to try something 
like: extracting the proof using some sort of recording machinery (opentheory, 
say), and then analysing the result to prune away unneeded bits of work.  This 
would measure the true size of the theorem's actual proof.  It would not 
measure the amount of mechanical or human work required to *find* the proof 
though, and that's presumably quite an interesting statistic too...

Michael

On 21/05/12 12:29, Lu Zhao wrote:
 Using the following method has some problems, when there are failures in 
 proof attempts. For example, the following sequence reports 44 primitive 
 inference steps, after a proof failure.
 
 val meter = Count.mk_meter();
 
 g `p /\ p /\ q /\ F`;
 e (METIS_TAC []);
 
 Count.report(Count.read meter);
 
 This is particularly dangerous when I have proof automation scripts that 
 try different rewriting rules. The number reported is not representative 
 on the complexity of the problem, but the number of inference steps 
 conducted by HOL, which is not necessarily related to a correct proof 
 construction that actually verifies a theorem.
 
 Since HOL is not designed for automatic reasoning, so reporting the 
 number of inference steps can be misleading in measuring the 
 implementation complexity of solving problems, especially when using 
 proof automation scripts with lots of rewriting rules.
 
 Lu
 
 On 04/07/2011 11:29 AM, Lu Zhao wrote:
 I found out in Count.sml that there are other utilities available, too.
 For example, you can use the following to start counting:

 val meter = Count.mk_meter();

 and use

 Count.report(Count.read meter);

 to see the statistics, after whatever operations you do.

 Best,
 Lu

 --
 Xperia(TM) PLAY
 It's a major breakthrough. An authentic gaming
 smartphone on the nation's most reliable network.
 And it wants your games.
 http://p.sf.net/sfu/verizon-sfdev
 ___
 hol-info mailing list
 hol-info@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/hol-info
 
 --
 Live Security Virtual Conference
 Exclusive live event will cover all the ways today's security and 
 threat landscape has changed and how IT managers can respond. Discussions 
 will include endpoint security, mobile security and the latest in malware 
 threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
 ___
 hol-info mailing list
 hol-info@lists.sourceforge.net
 https://lists.sourceforge.net/lists/listinfo/hol-info




signature.asc
Description: OpenPGP digital signature
--
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/___
hol-info mailing list
hol-info@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hol-info


Re: [Hol-info] useful HOL statistics to show the amount of proof work?

2011-04-07 Thread liy_liu
Thanks Lu! And thanks for Dr. Michael Norrish!

Sorry I'm not familiar with Structure Count. Now, I got it!

Best Wishes,
Liya

Quoting Michael Norrish michael.norr...@nicta.com.au:

 On 07/04/11 14:19, Lu Zhao wrote:


 First, please forgive me if this question is too silly. I had this
 question when I talked to a colleague, who has no idea about theorem
 proving at all, about the amount of proof work that can be involved in
 solving a problem. How to evaluate the amount of proof work that HOL
 does? What are the statistics that I can use, and how to get them in HOL?

 I don't think this is a silly question!

 I'd use Count.apply:

 Count.apply (REWRITE_CONV []) ``p /\ T /\ q``;
 runtime: 0.000s,gctime: 0.000s, systime: 0.000s.
 Axioms asserted: 0.
 Definitions made: 0.
 Oracle invocations: 0.
 Theorems loaded from disk: 0.
 HOL primitive inference steps: 2.
 Total: 2.
 val it =
|- p ? T ? q ? p ? q
: thm

 The number of primitive inferences something takes is a good measure  
  of the logical complexity of the problem, at least as far as that   
 problem's implementation.

 Michael







--
Xperia(TM) PLAY
It's a major breakthrough. An authentic gaming
smartphone on the nation's most reliable network.
And it wants your games.
http://p.sf.net/sfu/verizon-sfdev
___
hol-info mailing list
hol-info@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hol-info


Re: [Hol-info] useful HOL statistics to show the amount of proof work?

2011-04-07 Thread Paul E. Black
On Thursday 07 April 2011 02:07:11 am Michael Norrish wrote:
 On 07/04/11 14:19, Lu Zhao wrote:
  First, please forgive me if this question is too silly. I had this
  question when I talked to a colleague, who has no idea about theorem
  proving at all, about the amount of proof work that can be involved 
  in solving a problem. How to evaluate the amount of proof work that HOL
  does? What are the statistics that I can use, and how to get them
  in HOL? 

 I don't think this is a silly question!

 I'd use Count.apply:
  Count.apply (REWRITE_CONV []) ``p /\ T /\ q``;
 ...
 The number of primitive inferences something takes is a good measure of
 the logical complexity of the problem, at least as far as that problem's
 implementation.

I don't know that the strength of modern theorem provers is the number
of primitive inferences (the number of steps in the proof) they make.
Rather it is pruning the search tree of all possible proofs.  In
theory one could build a prover that simply tries all possible proof
steps in a breadth-first search.  Unfortunately the universe would
reach heat death before useful results were returned, so great is the
branching in the search.

A better measure of the cleverness and power of a theorem prover
might be the size of potential search space.  For instance, it may
have taken n steps, but there were 10^10^n steps that it (and those
who programmed it) might have taken, but did not even search.

-paul-
-- 
Paul E. Black 100 Bureau Drive, Stop 8970
paul.bl...@nist.gov   Gaithersburg, Maryland  20899-8970
voice: +1 301 975-4794fax: +1 301 975-6097
http://xlinux.nist.gov/~black/KC7PKT


--
Xperia(TM) PLAY
It's a major breakthrough. An authentic gaming
smartphone on the nation's most reliable network.
And it wants your games.
http://p.sf.net/sfu/verizon-sfdev
___
hol-info mailing list
hol-info@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/hol-info