It is not supposed to be digestible by humans. It is a HiLog term that encodes proof trees. As such, it is digestible for machines. The structure of that term is described in the manual and we provide a method for converting it to Json. The plan is to provide a standalone (most likely Javascript) widget that would enable convenient browsing of these trees by humans and will be accessible from Ergo programmatically.
Currently the Ergo studio has a graphical widget, but it is built into the studio, is non-programmable, is non-programmable and unwieldy.
--
You received this message because you are subscribed to the Google Groups "ErgoAI and XSB Users Forum" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ErgoAI-XSB-for...@coherentknowledge.com.
To view this discussion visit https://groups.google.com/a/coherentknowledge.com/d/msgid/ErgoAI-XSB-forum/3b63838d-d4a8-4c7c-aa84-4728abed6022n%40coherentknowledge.com.

On 4 Jun 2026, at 21:44, Miguel Calejo <m...@interprolog.com> wrote:Hi Michael,I hope you're well.Given the situation you describe wrt explanations, you might want to vibe code a simple renderer for non-Studio users... here's a first stab, for old time Studio''s sake :-)I opted to answer to you rather than Robert in case you want to refine it a bit, as my Ergo is beyond rusty. The single (...) prompt I used with Claude (Opus 4.8) is belowCheersMiguel---- Prompt:I need a Javascript-based displayer of proof explanations for https://github.com/ErgoAI , given to it as HiLog terms, for example:
explanation(true(${permission(strong)(taskForceAlpha,mission(TFACheckpoint),tFAPot2)@main},'it is a top query',ruleid(48,'deontics.ergo',main)),[explanation(true(${candidate(permission(strong)(taskForceAlpha,mission(TFACheckpoint),tFAPot2))@main},null,ruleid(unrestrictedTFAMission(199),'caveats.ergo',main)),[explanation(true(${tFAPot2:CheckpointOp@main},'it is a base fact',ruleid(null,null,null)),[]), explanation(true(${notInactive(tFAPot2)@main},null,ruleid(84,'world_change.ergo',main)),[explanation(true(${world_tag(intel1)@main},'it is a base fact',ruleid(null,null,null)),[]), explanation(true(${tFAPot2[state->Potential]@main},'it is a base fact',ruleid(null,null,null)),[]), explanation(true(${tFAPot2[world_tag->intel1]@main},'it is a base fact',ruleid(null,null,null)),[]), explanation(true(Potential != Inactive,null,ruleid(null,null,null)),[])]), explanation(true(${tFAPot2[agent->taskForceAlpha]@main},'it is a base fact',ruleid(null,null,null)),[]), explanation(true(${unrestrictedTFAMission(CheckpointOp,mission(TFACheckpoint))@main},'it is a base fact',ruleid(null,null,null)),[])])])
For starters, use simple HTML indented list items
---- How it looks with Robert's explanation:
On 5 Jun 2026, at 00:56, Theresa Swift <theres...@gmail.com> wrote: