*To*: Alexander Krauss <krauss at in.tum.de>*Subject*: Re: [isabelle] Defining infinite streams recursively*From*: John Matthews <matthews at galois.com>*Date*: Mon, 9 Jun 2008 13:47:58 -0700*Cc*: isabelle-users <isabelle-users at cl.cam.ac.uk>, Tobias Nipkow <nipkow at in.tum.de>*In-reply-to*: <484A57B2.3070701@in.tum.de>*References*: <B25EB410-E7E6-42EC-91D0-0B0590C86DF1@galois.com> <48497E7A.2040500@in.tum.de> <E0EB1D2D-1851-4579-A81B-8809E218E66F@galois.com> <484A57B2.3070701@in.tum.de>

-john On Jun 7, 2008, at 2:41 AM, Alexander Krauss wrote:

Hi John,I think the problem is that what is really needed is a "compound"congruence rule for when Let is itself applied as a higher orderfunction, i.e.lemma let_app_cong[fundef_cong]: [| i = j; M = N; !!x. x = N ==> f x = g x|] ==> (Let M f) i = (Let N g) j" But when I added this rule I still ran into the same problem.\begin{blackmagic} Here is the rule you need: lemma let_app_cong[fundef_cong]: "s = t ==> (!!a. a = t ==> f a y = g a y) ==> x = y ==> Let s f x = Let t g y" by auto \end{blackmagic} Note how the extra argument y is moved "into" the let. Alex

**References**:**[isabelle] Defining infinite streams recursively***From:*John Matthews

**Re: [isabelle] Defining infinite streams recursively***From:*Alexander Krauss

- Previous by Date: Re: [isabelle] Isabelle2008: Strange behavior with sets and intro!: ext or intro!: le_funI
- Next by Date: Re: [isabelle] more Isabelle2007 conversion pains
- Previous by Thread: Re: [isabelle] Defining infinite streams recursively
- Next by Thread: [isabelle] Automated Reasoning Workshop 2008
- Cl-isabelle-users June 2008 archives indexes sorted by: [ thread ] [ subject ] [ author ] [ date ]
- Cl-isabelle-users list archive Table of Contents
- More information about the Cl-isabelle-users mailing list