[isabelle-dev] Float

Makarius makarius at sketis.net
Tue Nov 15 17:28:05 CET 2011


On Mon, 14 Nov 2011, Johannes Hölzl wrote:

> Am Montag, den 14.11.2011, 21:05 +0100 schrieb Alexander Krauss:
>> On 11/14/2011 08:43 PM, Johannes Hölzl wrote:
>> > Am Montag, den 14.11.2011, 19:27 +0100 schrieb Florian Haftmann:
>> >> Hi Johannes,
>> >>
>> >> two remarks:
>> >>
>> >> * http://isabelle.in.tum.de/reports/Isabelle/rev/e828ccc5c110
>> >>
>> >> With `notepad` you can prove everything without a trace in theory, which
>> >> eliminates the need for fiddling around with quick_and_dirty.
>> >
>> > I want to enforce that the user needs to activate quick_and_dirty in
>> > ROOT.ML, to remind him that there is something dirty.
>> 
>> This is rather non-standard and also breaks the test, cf.
>> 
>> http://isabelle.in.tum.de/reports/Isabelle/report/d6e6227d86634c02890a3e60e508abc3
>> 
>> (Tests are run without quick_and_dirty, and rightfully so.)
>
> Oh, I didn't look at that. I removed the check now.

You really have to run a full "isabelle makeall all" before pushing 
anything.  Otherwise it wastes other people's time unnecessarily.


>> lemma "False" sorry is indeed a strange kind of markup...
>
> Well False is proven anyway

You probably mean this one:
http://isabelle.in.tum.de/reports/Isabelle/diff/34d07cf7d207/src/HOL/Library/Code_Real_Approx_By_Float.thy#l1.139

That is a slightly different False theorem, since the kernel adds an 
official oracle tag, which can be seen like this

...

lemma a: "False"
proof-
   have "cos(pi/2) = 0" by(rule cos_pi_half)
   moreover have "cos(pi/2) ≠ 0" by eval
   ultimately show "False" by blast
qed

ML {* Thm.status_of @{thm a} *}

val it = {failed = false, oracle = true, unfinished = false}: {failed: 
bool, oracle: bool, unfinished: bool}

ML {* Proofterm.all_oracles_of (Thm.proof_body_of @{thm a}) *}

val it = [("Code_Generator.holds_by_evaluation", Const ("dummy_pattern", 
"_"))]: Proofterm.oracle list


Nonetheless, I agree with Florian that regular Library stuff should not 
make it easy to get wrong oracular results.


> and it is a easy check for quick_and_dirty.

That is actually not so easy.  Since it is an old-style global reference 
it depends on many side-conditions what it value is in a certain 
situation.  I still need to find ways to handle "session parameters" in a 
robust manner.  Old-style ROOT.ML is a bit too crude for that in the 
general situation, i.e. interaction vs. batch mode.


 	Makarius


More information about the isabelle-dev mailing list