I have couple doubts about the way dicts work in SWI:
- Can Dicts be represented as semantically equivalent first-order logic program terms? I have seen in the documentation and in the C source that they are represented as terms of uneven arity, but calls to functor/3 and =…/2 seem to generate weird functors (namely “C’dict’” which in theory isn’t an allowable functor in Prolog).
- Does this “C’dict’” denote an opaque C-level implementation that has no FOL equivalent and is best left alone?
- How does this bode for reasoning declaratively about logic programs utilising these structures?
Many Thanks for your time,