Re: [isabelle] Beginner's struggles

Thanks for your reply Makarius. Some helpful tips there, although the
main purpose of my mail was to try to highlight the sorts of
difficulties that beginners (well, at least one beginner!) run into.

Actually, I've just run into something that really does have me stumped:
It seems that "fix a" does nothing at all, yet it can be necessary;
looks like magic to me! e.g. in this proof:

    theory Test
    imports Main

    lemma assumes P: "! x. P x" shows "! x. P(f x)"
      fix a
      from P show "P(f a)" ..

the "proof state" is the same before and after the "fix a" line (well,
apart from the step counter being incremented, but I assume that's not
relevant), as are the "cases", "facts", and "term bindings". So how am I
meant to know whether I need to fix something, if doing so has no
visible effect? Am I missing something?

This is a real problem for me in the proof I'm trying to write. I have
goals like
    !!bool. principalType (EBool bool) = Some t ==> STyping (EBool bool) t
and I have no idea if the commands I'm giving are taking me in the right
direction or not, as they seemingly do nothing.

I am also surprised that "facts", and perhaps also "term bindings", are
not shown by default. Not only that, but proof general has given me a
toolbar button that tells me "theory Test", but not a toolbar button to
tell me the current facts; is wanting the former really more common than
wanting the latter?

On Sat, Aug 14, 2010 at 05:22:29PM +0200, Makarius wrote:
> (We have the more conventional ";" for that, but it has almost  
> come out of use in recent years, since Proof General is good enough to  
> determine command boundaries from the keywords alone.)

That reminds me of another minor irritation: If I write this partial

    theory Test
    imports Main

    lemma "A & B ==> B & A"
      assume "A & B" thus B

and then "Process whole buffer", and then complete the proof as:

    theory Test
    imports Main

    lemma "A & B ==> B & A"
      assume "A & B" thus B..
      assume "A & B" thus "A" ..

then I can "Process whole buffer" again and the proof is accepted. But
if I then "Retract whole buffer" and "Process whole buffer" again then
the proof is now rejected (due to the missing space between "B" and


This archive was generated by a fusion of Pipermail (Mailman edition) and MHonArc.