This states that: First, the empty conjunction (of goals) is true, and second, if there is at least one goal left, than the conjunction is true if there is a suitable clause whose body evaluates to true, and the same holds for all remaining goals.
For example, we can define append/3 as follows in this representation:
And now we can use our meta-interpreter to evaluate its own code as it interprets a program, arbitrarily deeply layered:
?- mi([mi([mi([append([a,b,c],[d,e],Ls)])])]).
Ls = [a, b, c, d, e].
Hence, Prolog admits a meta-circular evaluator in at most 5 lines of code. With a better representation for clauses (using list differences), you can reduce the interpreter to 4 lines of code and at the same time make it tail-recursive.
FWIW, Google's Material Design Icons and The Noun Project are decent sources of high quality, actually-free SVG icons:
* https://fonts.google.com/icons (Apache license)
* https://thenounproject.com/ (CC-BY)