return

Celebratio Mathematica

Ingrid Daubechies

Letter to Yves Meyer, March 12, 1987

[let­ter­head]
Yale Uni­versity
New Haven, Con­necti­c­ut 06520
[let­ter­head]
De­part­ment of Math­em­at­ics
12 Hill­house Av­en­ue
Box 2155 Yale Sta­tion
[hand­writ­ing] March 12, ’87


Dear Yves,

I at­tach a copy of what I wrote about wave­lets with com­pact sup­port. It is not (yet) an art­icle: rather the sort of thing that I write for my­self be­fore writ­ing an art­icle, to let ideas crys­tal­lize. All the proofs are there.

I was telling you on the phone that my way of see­ing wave­lets with com­pact sup­port was more graph­ic­al. That is also the way I came upon them. At the start, fix f(n), g(n). (In fact, Bob Hum­mel, one of the re­search­ers on [com­puter] vis­ion at NYU, gave me some art­icles, in­clud­ing one by J. Burt, which con­tains a de­com­pos­i­tion and re­com­pos­i­tion us­ing a single fil­ter. It is not a de­com­pos­i­tion us­ing wave­lets, and the al­gorithm pro­posed by S[téphane] Mal­lat is not only nicer but also more ef­fi­cient. Stéphane refers to Burt (Lapla­cian pyr­am­id schemes) in his pa­per. Since I’d read Burt a few days be­fore re­ceiv­ing Stéphane’s pa­per, I was in just the right frame of mind to take the fil­ters, or the dis­crete al­gorithm, as a start­ing point rather than as a con­sequence of the (beau­ti­ful!) “wave­lets + multiscale” struc­ture.) So then, fix the func­tions f(n) and g(n).

Read­ing Stéphane’s art­icle, I im­me­di­ately real­ized that the dis­crete al­gorithm rests com­pletely on (1)k[f(n2k)f(m2k)+g(n2k)g(m2k)]=δmn(2)andk[f(n2k)g(n2l)]=0. So I asked my­self if there ex­ist f(n), g(n) sat­is­fy­ing those con­di­tions and not ne­ces­sar­ily com­ing from a wave­let basis. And in fact they do ex­ist. One ex­ample is f(0)=λμN1,f(1)=λN1,f(2)=N1,f(3)=μN1,g(0)=μN1,g(1)=N1,g(2)=λN1,g(3)=λμN1, where N=[(1+λ2)(1+μ2)]1/2 and λ,μR are ar­bit­rary.

Since we like fil­ters with fi­nitely many “taps”, that is, with a fi­nite num­ber of nonzero coef­fi­cients f(n), I im­posed that con­di­tion from the start as well.

The folks who play with those fil­ters also like to have a cer­tain kind of con­tinu­ity. This is how they see the mat­ter:

Let’s de­com­pose a se­quence c=(cn)nZ, which we ima­gine as a dis­crete sig­nal, with a very small “step” between con­sec­ut­ive im­pulses. The de­com­pos­i­tion, ac­cord­ing to Stéphane’s al­gorithm, gives se­quences d1=Gc,d2=GFc,,dN=GFN1CandcN=FNc, where (Gc)k=ng(n2k)cn,(Fc)k=nf(n2k)cn (in Stéphane’s nota­tion), where each dj has a “step” 2j times lar­ger than the ini­tial c, and cN has a “step” 2N times lar­ger.

Let’s re­cord all this in a pyr­am­id­al struc­ture (the same draw­ings you use! I was very ex­cited to find them in pa­pers by en­gin­eers).

I’ll draw the dj in blue and the fi­nal cN in black.

For the re­con­struc­tion, we play a sort of video­game, which at each step sets down a series of num­bers in black one row above the last black row from the pre­vi­ous turn. (I know that all this is much more fa­mil­i­ar to you than to me, and that you’ll prob­ably find my way of present­ing it child­ish… But I really like this video­game im­age.) And the rule is, of course, cn1,k=l(f(k2l)cn,l+g(k2l)dn,l). What is new in Stéphane’s al­gorithm is that he uses two se­quences f(n), g(n), which of course makes all the dif­fer­ence, com­pared with pre­vi­ous pro­ced­ures!

The “con­tinu­ity” that en­gin­eers like in this kind of video­game is the fol­low­ing. Sup­pose we take as giv­en a single black “1”, at a fairly high level, and set all the dj0. The simplest ini­tial con­di­tions, if you wish. Then the re­con­struc­tion game gives me a series of in­creas­ingly de­tailed his­to­grams.

For ex­ample: f(2)=f(2)=0.1,f(1)=f(1)=0.5,f(0)=0.8. (This f does not match (1) + (2), but it is a fil­ter that Burt uses.)

Or, more graph­ic­ally:

What they like is for the lim­it of those his­to­grams, as the num­ber of steps tends to in­fin­ity, to be a “reas­on­able” func­tion: cer­tainly con­tinu­ous, and prefer­ably C1 or C2.

What I was look­ing for, then, were solu­tions to (1) + (2) such that re­peated ap­plic­a­tion of F to the se­quence (cN)k=δk0 leads to a con­tinu­ous func­tion. Or, more pre­cisely, de­fin­ing (Th)(x)=2f(n)f(n)h(2xn), I want Tnχ[1/2,1/2] to con­verge to a con­tinu­ous func­tion as n. And in ana­lyz­ing this con­ver­gence, I of course kept run­ning in­to in­fin­ite products, and I ma­nip­u­lated the func­tion that you de­note by m0 (which is F in Stéphane’s pa­per and F in my notes. I’m sorry for the con­flict­ing nota­tion. I didn’t be­come aware of m0 un­til the ar­rival of Thi­erry [Paul], who gave me cop­ies of your re­cent art­icles.) By im­pos­ing cer­tain con­di­tions on F(ξ)=nf(n)einξ, which es­sen­tially amount to re­quir­ing that F be di­vis­ible by (1+eiξ)n, I man­aged to prove in my notes that the Tnχ[1/2,1/2] con­verge in L2 — but one can also prove point­wise con­ver­gence — to a con­tinu­ous func­tion φ. The dia­gram im­me­di­ately shows that |suppφ|< if only a fi­nite num­ber of f(n) are nonzero. This “video­game” is also an eas­ily pro­gram­mable way to ob­tain a graph of φ.

On the oth­er hand, I real­ized that (1) + (2) im­ply nf(n2k)f(n2l)=δkl, which is to say, that passing from one row of the video­game to the next pre­serves or­tho­gon­al­ity in 2. That is, the func­tions φ(x) and φ(xk), ob­tained from the se­quences (c)n=δn0 and (c~)n=δnk, are auto­mat­ic­ally or­tho­gon­al, be­cause c and c~ are! (It was this fact, which I had already reached be­fore but then lost sight of, that I re­covered between my second and third let­ters: at one time I was afraid of be­ing left only with frames, but with ar­gu­ment gave me back the bases that I an­nounced to you in my first let­ter.)

The “frame” as­pect came from the fact that kcn1,k2=j(cn,j2+dn,j2), which is a con­sequence of (1) + (2).

After my first let­ter I’d aban­doned Toep­litz matrices and switched in­stead to com­plex func­tions, that is, F(ξ)=1f(n)(α(2ξ)+eiξβ(2ξ)), where α(ξ)=a(n)einξ,β(ξ)=b(n)einξ,a(n)=f(2n),b(n)=f(2n+1).

Then (1) + (2) re­duce to |α(ξ)|2+|β(ξ)|2=1. Since I’d been ex­cited right away, while read­ing Stéphane’s art­icle, by the pos­sib­il­ity of con­struc­tion oth­er fil­ters, not ne­ces­sar­ily linked to wave­lets (but they took their re­venge!), I hadn’t paid much at­ten­tion to the con­di­tion |F(ξ)|2+|F(ξ+π)|2=1, and, after my speed read­ing, I even thought that this con­di­tion was as­so­ci­ated to the sym­metry of φ. When I met Stéphane he told me that that’s not the case, and I real­ized that my con­di­tion on α and β was in fact identic­al to this one. And of course, I read your pa­per af­ter­wards, and un­der­stood to what point all of this was in­ev­it­able.

Later I con­struc­ted ex­amples that yield func­tions φCk, k ar­bit­rary (§4.3 in the at­tached notes). Since my ex­amples had a sup­port that grew ex­po­nen­tially with k, which I did not like at all, I tried to call you to find out how yours grew. I wasn’t able to reach you, but Alex [Gross­man] told me over the phone that you ob­tained ex­amples by it­er­a­tion (that rev­el­a­tion blew me away, and right after hanging up with Alex I cal­cu­lated that the growth would be less), and also that a res­ult that I had fi­nally proved after much think­ing, about square roots of cer­tain tri­go­no­met­ric poly­no­mi­als, could be found in Pólya and Szegö. — The next day, since I found the it­er­at­ive ex­amples so much nicer than mine, I called you to pro­pose to write a joint art­icle.

I have not yet seen what you sent me at Cour­ant, and I don’t know if it will have ar­rived by this week­end. But, you see, I like that graph­ic­al way of visu­al­iz­ing things. If I un­der­stood you cor­rectly, in the manuscript you sent me you have in­cor­por­ated com­pactly sup­por­ted wave­lets in­to the gen­er­al frame­work of multiscale ana­lys­is. I see how they fall in­to place there nat­ur­ally, but I won­der if the “graph­ic­al” ap­proach (which is not as well-suited to oth­er wave­lets, in par­tic­u­lar the “his­tor­ic­al” wave­let), isn’t more in­tu­it­ive as a way to see that com­pactly sup­por­ted wave­lets can ex­ist. You see, I’ve be­come at­tached to that way of see­ing things, which is the way I ar­rived at them.

An ex­per­i­ence I had a few years ago might help ex­plain this sense of at­tach­ment. Here is how it happened. When I was at Prin­ceton, I worked with El­li­ott Lieb on a prob­lem con­nec­ted to the sta­bil­ity of mat­ter, and we ob­tained a nice res­ult. Since it was a prob­lem that El­li­ott gave me, and since we had dis­cussed it to­geth­er a lot, and he had sug­ges­ted some key ideas, I wrote the art­icle, after hav­ing proved everything we wanted, and of course I put both of our names on it. Read­ing the art­icle, El­li­ott thought that the proofs were ac­cur­ate, cor­rect, but not very nice. So he found a much nicer way of prov­ing the same res­ult, with bet­ter con­stants, and I re­wrote the art­icle with the new proofs. Those things hap­pen, that’s life, and El­li­ott’s re­ac­tion was per­fectly cor­rect (and we’ve pub­lished joint pa­pers since), but I have al­ways felt that the second ver­sion, where the proofs, though put on pa­per by me, vis­ibly bear the Lieb brand, had noth­ing to do with me, that it wasn’t really my pa­per, that I had no mer­it in it. I still have “my” ver­sion in some draw­er in Brus­sels. — And so I am a bit afraid that I might be in a sim­il­ar situ­ation now. Since my re­la­tion­ship with you is much warm­er than with El­li­ott (and I’m very grate­ful for that!), I thought I’d try to ex­plain it. At the same time, I un­der­stand that you prefer a glob­al present­a­tion, where all wave­lets fit, and where com­pactly sup­por­ted wave­lets have their little eco­lo­gic­al niche in the great forest of wave­lets. But I have not made any con­tri­bu­tion to that view, al­though of course I ad­mire it a lot. On the oth­er hand, I like my video­game idea… So per­haps, as you were say­ing, there is some point in writ­ing sep­ar­ate texts. — But we will talk about all this in Par­is. I hope I haven’t bored you too much with these “con­sid­er­a­tions”…

See you soon! Hugs for every­one.

In­grid

Cher Yves,

Ci-joint je t’en­voie une copie de ce que j’ai rédigé sur les ondelettes à sup­port com­pact. Il ne s’agit pas (en­core) d’un art­icle: c’est plutôt le genre de chose que je rédige pour moi-même av­ant d’écri­re un art­icle, afin de me cla­ri­fi­er les idées. Toutes les démon­stra­tions y sont.

Je te disais, au téléphone, que ma façon de voir les ondelettes à sup­port com­pact était plus graph­ique. C’est aus­si la façon dont je les ai trouvées. Au départ, soi­ent f(n), g(n). (En fait, Bob Hum­mel, qui fait “de la vis­ion” à NYU, m’avait passé des art­icles, not­am­ment de J. Burt, où il a une décom­pos­i­tion + re­con­struc­tion avec 1 seul fil­tre. Il ne s’agit pas d’une décom­pos­i­tion util­is­ant des ondelettes, et l’al­gorithme pro­posé par S. Mal­lat est non seule­ment joli, mais aus­si plus ef­ficace. Stéphane réfère à Burt (Lapla­cian pyr­am­id schemes) dans son papi­er. Comme j’avais lu Burt quelques jours av­ant de re­ce­voir le papi­er de Stéphane, j’étais tout à fait dans le “frame of mind” pour pren­dre les fil­tres, ou l’al­gorithme dis­cret, comme point de départ plutôt que comme conséquence de la (très belle!) struc­ture ondelettes + multiscale.) Donc, soi­ent f(n), g(n).

En lis­ant l’art­icle de Stéphane, je me suis tout de suite rendu compte que l’al­gorithme dis­cret re­po­sa­it com­plètement sur (1)k[f(n2k)f(m2k)+g(n2k)g(m2k)]=δmn(2)etk[f(n2k)g(n2l)]=0. Et je me suis al­ors de­mandée s’il exis­tait des f(n), g(n) sat­is­fais­ant ces con­di­tions, et qui ne seraient pas néces­saire­ment dérivés d’une base d’ondelettes. Et, en fait, il en ex­iste. Un ex­emple est f(0)=λμN1,f(1)=λN1,f(2)=N1,f(3)=μN1,g(0)=μN1,g(1)=N1,g(2)=λN1,g(3)=λμN1,N=[(1+λ2)(1+μ2)]1/2 et λ,μR ar­bit­raires.

Comme on aime les fil­tres avec “a fi­nite num­ber of taps”, c.à.d avec un nombre fini de coef­fi­cients f(n)0, j’im­po­sa­is cette con­di­tion dès le départ aus­si.

Les gens que jouent avec des fil­tres aiment avoir une cer­tain con­tinu­ité aus­si. Leur façon de voir est la suivante.

Décom­po­sons une séquence c=(cn)nZ, que nous ima­ginons être un sig­nal dis­cet, avec un “pas”, entre deux im­pul­sions consécut­ives, très petit. La décom­pos­i­tion, selon l’al­gorithme de Stéphane, donne des séquences d1=Gc,d2=GFc,,dN=GFN1CetcN=FNc,(Gc)k=ng(n2k)cn,(Fc)k=nf(n2k)cn (nota­tions de Stéphane) où chaque dj a un “pas” 2j fois plus grand que le c au départ, et cN a un “pas” 2N fois plus grand.

Mar­quons ceci sur une struc­ture pyr­am­idale (les mêmes dess­ins que tu util­ises! J’étais très ex­citée de les ret­rouver dans des papi­ers d’ingénieurs.)

Je marque les dj en bleu, le cN fi­nal en noir.

Pour re­con­stru­ire, on joue une espèce de bil­lard élec­tro­nique, qui à chaque pas, marque une série de nombres en noir une rangée en des­sous de la dernière rangée en noir du tour précédent.

(Je sais que tout cela t’est bi­en plus fam­ilier qu’à moi, et que ma façon de le présenter doit te paraître en­fant­ine… Mais j’aime bi­en cette im­age de bil­lard élec­tro­nique). Et la règle est, évidem­ment cn1,k=l(f(k2l)cn,l+g(k2l)dn,l). Ce qui est nou­veau dans l’al­gorithme de Stéphane est le fait qu’il util­ise deux se­quences f(n), g(n), ce qui fait évidem­ment toute la différence, par rap­port aux procédés antérieurs!

La “con­tinu­ité” qu’aiment les ingénieurs dans cet espèce de bil­lard élec­tro­nique est la suivante. Sup­po­sons que nos met­tions, comme données, un seul “1” en noir, à un niveau as­sez élevé, et tous les dj0. Les con­di­tions ini­tiales les plus simples, quoi. Al­ors le jeu de re­con­struc­tion va me don­ner une série d’his­to­grammes de plus en plus détaillés: ex.f(2)=f(2)=0.1,f(1)=f(1)=0.5,f(0)=0.8 (Ceci ne cor­res­pond pas à (1) + (2), mais est un fil­tre util­isé par Burt)

Ou, plus graph­ique­ment:
Ce qu’ils aiment, c’est que la lim­ite de ces his­to­grammes, pour un nombre de pas tend­ant vers l’in­fini, soit une fonc­tion “décente”: cer­taine­ment con­tin­ue, préférable­ment C1 ou C2.

Ce que je cher­cha­is donc, étaient des solu­tions de (1) + (2) tell­es que l’itéra­tion de F sur la séquence (cN)k=δk0, mène vers une fonc­tion con­tin­ue. Ou, plus précise­ment, en défin­is­sant (Th)(x)=2f(n)f(n)h(2xn), je voulais que Tnχ[1/2,1/2] con­verge, pour n, vers une fonc­tion con­tin­ue. Et là, dans mon ana­lyse de cette con­ver­gence, je tombais, évidem­ment, dans les produits in­finis, et je ma­nip­u­lais la fonc­tion que tu dénotes m0 (qui est F dans le papi­er de Stéphane, et F dans mes notes. Ex­cuse-moi pour di­ver­gence de nota­tions. Je n’ai découvert m0 qu’après l’ar­rivée de Thi­erry, qui m’a donné des cop­ies de tes art­icles récents). Im­posant cer­taines con­di­tions sur F(ξ)=nf(n)einξ, qui re­vi­ennent es­sen­ti­elle­ment à im­poser la di­vis­ib­ilité de F par (1+eiξ)n, j’ar­rivais à démontrer la con­ver­gence des Tnχ[1/2,1/2] en L2 dans mes notes, mais on peut aus­si la démontrer point par point, vers une fonc­tion φ con­tin­ue. Le dessin graph­ique montre tout de suite que |suppφ|< si seule­ment un nombre fini de f(n) sont 0. Ce “bil­lard” est aus­si une façon fort simple de pro­gram­mer pour ob­tenir un graph­ique de φ.

D’autre part, je m’étais rendu compte que (1) + (2) im­pli­quent nf(n2k)f(n2l)=δkl, c.à.d. que le pas­sage, dans le bil­lard, d’un rang au suivant, préserve l’or­tho­gon­alité dans 2. C.à.d. que les fonc­tions φ(x) et φ(xk), ob­tenues des séquences (c)n=δn0 et (c~)n=δnk, étaient auto­matique­ment or­tho­gonales, puisque c et c~ l’étaient! (C’est ce point-ci, que j’avais trouvé au début, mais perdu de vue après, que j’ai ret­rouvé entre ma 2ème et ma 3ème lettre: à un cer­tain mo­ment je craignais n’avoir que des frames, et cet ar­gu­ment-ci m’a rendu les bases que je t’an­nonçais dans ma 1ère lettre.)

L’as­pect “frame” venait du fait que kcn1,k2=j(cn,j2+dn,j2), qui est une conséquence de (1) + (2).

Après ma première lettre, j’avais aban­donné les matrices Toep­litz, et util­isé plutôt les fonc­tions com­plexes, c.à.d. F(ξ)=1f(n)(α(2ξ)+eiξβ(2ξ)),α(ξ)=a(n)einξ,β(ξ)=b(n)einξ,a(n)=f(2n),b(n)=f(2n+1). (1) + (2) se réduis­ent al­ors à |α(ξ)|2+|β(ξ)|2=1. Comme j’avais été tout de suite en­flammée, à la lec­ture de l’artile de Stéphane, par la pos­sib­ilité de con­stru­ire d’autres fil­tres pas néces­saire­ment liés à des ondelettes (mais elles se sont vengées!), je n’avais prêté que peu d’at­ten­tion à la con­di­tion |F(ξ)|2+|F(ξ+π)|2=1, et, après ma lec­ture en di­ag­onale, je croy­ais même qu’elle était as­sociée à la symmétrie de φ. Quand j’ai ren­con­tré Stéphane il m’a dit que ce n’étais pas le cas, et je me suis rendu compte que ma con­di­tion sur α et β était en fait identique à celle-ci. Et évidem­ment, après j’ai lu ton pa­per, et j’ai com­pris à quel point le tout était inévit­able.

Après, j’ai con­stru­it des ex­emples don­nant des φCk, k ar­bit­raire, (§4.3 dans les notes ci-joints). Comme mes ex­emples avaient un sup­port crois­sant ex­po­nen­ti­elle­ment avec k, ce que je n’ai­mais pas du tout, je voulais t’appel­er pour sa­voir com­ment les tiennes crois­saient. Je ne suis pas ar­rivée à te joindre, mais j’ai eu Alex au téléphone, que m’a dit que tu ob­tenais des ex­emples par itéra­tion (j’étais éblouie par cette révéla­tion, et j’ai tout de suite, après le coup de fil à Alex, cal­culé que la crois­sance serait moins forte), et aus­si qu’un résul­tat que j’avais fi­nale­ment, d’après longue réflec­tion, démon­tré, sur les ra­cines carrées de cer­tains polynômes tri­go­nométriques, se trouv­ait dans Pólya and Szegö. — Le len­de­main, comme je trouv­ais les ex­emples par itéra­tion tell­e­ment plus jol­is que les miens, je t’ai ap­pelé pour te pro­poser d’écri­re l’art­icle en­semble.

Je n’ais pas en­core vu ce que tu m’as en­voyé à Cour­ant, et je ne sais pas si ce sera déjà ar­rivé ce week-end-ci. Mais, tu vois, je me suis at­tachée à cette façon graph­ique de voir les choses. Si je t’ai bi­en com­pris, tu as, dans le manuscrit que tu m’as en­voyé, in­cor­poré les ondelettes à sup­port com­pact dans le cadre général des ana­lyses multiscale. Je vois com­ment elles y trouvent leur place naturelle, mais je me de­mande si la façon “graph­ique” (qui m’est pas aus­si bi­en ad­aptée aux autres ondelettes, not­am­ment l’ondelette “his­torique”) n’est pas plus in­tu­it­ive pour voir com­ment des ondelettes à sup­port com­pact pour­raient ex­ister. Tu vois, je me suis at­tachée à cette façon de voir, qui est la façon dont je les ai trouvées.

Il y a quelques années, une his­toire m’est ar­rivée que ex­plique peut-être ce sen­ti­ment d’at­tache­ment. Je vais te la ra­conter. Quand j’étais à Prin­ceton, j’ai trav­aillé, avec El­li­ott Lieb, sur un problème relié à la sta­bilité de la matière, et nous avons ob­tenu un joli résul­tat. Comme c’était un problème qu’El­li­ott m’avait donné, et qu’on en avait beau­c­oup dis­cuté en­semble, et qu’il m’avait suggéré quelques idées-clé, j’avais, après avoir démon­tré tout ce que nous voulions, rédigé l’art­icle, avec, évidem­ment, nos deux noms. En lis­ant l’art­icle, El­li­ott a trouvé que les démon­stra­tions étaient justes, certes, mais peu jol­ies. Et al­ors, il a trouvé une façon beau­c­oup plus jolie de démontrer le même résul­tat, avec des con­stantes meil­leur­es, et j’ai rerédigé l’art­icle, avec les nou­velles démon­stra­tions. Ce sont des choses qui ar­riv­ent, c’est la vie, et l’at­ti­tude d’El­li­ott était entière­ment cor­recte (nous sommes restés co-auteurs), mais j’ai tou­jours eu le sen­ti­ment que la 2ème ver­sion, où les démon­stra­tions, bi­en que rédigées par moi, por­taient très nette­ment la griffe Lieb, n’avait ri­en à voir avec moi, et que ce n’était pas vraiment mon papi­er, que je n’y avais aucun mérite. J’ai en­core, dans mes tiroirs à Bruxelles, “ma” ver­sion — Et j’ai un peu peur que main­ten­ant je sois dans une situ­ation ana­logue. Comme j’ai un con­tact beau­c­oup plus chaleur­eux avec toi (et je t’en suis très re­con­nais­sante!) qu’avec El­li­ott, je peux es­say­er de te l’ex­pli­quer. D’une part, je com­prends que tu préfères une présen­t­a­tion glob­ale, où toutes les ondelettes se ret­rouvent, et où les ondelettes à sup­port com­pact ont leur petite niche éco­lo­gique dans la grande forêt des ondelettes. Mais je n’ai ap­porté aucune con­tri­bu­tion a cette vue-là, bi­en qu’évidem­ment, je l’ad­mire beau­c­oup. D’autre part, j’aime bi­en mon bil­lard élec­tro­nique… Al­ors, peut-être que, comme tu disais, il y a lieu de faire deux textes… Mais nous par­ler­ons de tout ceci à Par­is. — J’espère que je ne t’en­nu­ie pas trop avec ces “délicat­esses”…

A bi­entôt! Un grand bon­jour à tout le monde…

In­grid