<div class="notebook"> <div class="nb-cell query" name="q1"> ex(c1, Data). </div> <div class="nb-cell query" name="q2"> ex(c2, Data). </div> <div class="nb-cell query" name="q3"> ex(l2, Data). </div> <div class="nb-cell query" name="q4"> ex(l3, Data). </div> <div class="nb-cell query" name="q5"> ex(d1, Data). </div> <div class="nb-cell query" name="q6"> ex(d1, Data1), ex(c2, Data2). </div> <div class="nb-cell program" data-background="true" name="p1"> ex(Id, Data) :- ( data(Id, Data0) -> true ; Data0 = Id ), mapsubterms(expand, Data0, Data). expand(\Id, Data) => ex(Id, Data). expand(_, _) => fail. data(a1, a). data(a2, aap). data(a3, +). data(a4, 'hello world'). data(a5, 'this is a long atom and I can make it a little longer'). data(i1, 0). data(i2, 42). data(i3, -24). data(i4, I) :- I is 1<<100. data(c1, term(\a1)). data(c2, f(\a1, \a4, \c1, \i4)). data(l1, []). data(l2, [\a2, \a4, \a5, \i4]). data(l3, [\l2, \c2]). data(d1, #{atom: \a2, list: \l2, term: \c2}). </div> </div>