summaryrefslogtreecommitdiff
path: root/src/kompsos-pretty_print.adb
diff options
context:
space:
mode:
authorJedidiah Barber <contact@jedbarber.id.au>2025-12-19 21:51:48 +1300
committerJedidiah Barber <contact@jedbarber.id.au>2025-12-19 21:51:48 +1300
commit0188dfb4d373cc8570222496f7d04cd3ae2774f3 (patch)
tree98114dd37c04cf26e22dfa33d3ca2c28294983b8 /src/kompsos-pretty_print.adb
parentef52c89133ced2c19dca45eac09fe09ae5c8c7c9 (diff)
Worlds separated into Goals that run on a State, improvement to unification efficiencyHEADmaster
Diffstat (limited to 'src/kompsos-pretty_print.adb')
-rw-r--r--src/kompsos-pretty_print.adb44
1 files changed, 22 insertions, 22 deletions
diff --git a/src/kompsos-pretty_print.adb b/src/kompsos-pretty_print.adb
index 8d11f81..250c6a6 100644
--- a/src/kompsos-pretty_print.adb
+++ b/src/kompsos-pretty_print.adb
@@ -150,13 +150,13 @@ package body Kompsos.Pretty_Print is
function Image
- (Item : in World)
+ (Item : in Goal)
return String
is
Result : SU.Unbounded_String;
Counter : Positive := 1;
- package Collect is new Collector (Item);
+ package Collect is new Collector (Item, Empty_State);
begin
if not Collect.Has_Next then
return "States: N/A" & Latin.LF;
@@ -174,7 +174,7 @@ package body Kompsos.Pretty_Print is
procedure Do_Structure_DOT
- (This : in World;
+ (This : in Goal;
Nodes : in out DOT_Node_Maps.Map;
Next : in out Long_Natural;
Result : in out SU.Unbounded_String) is
@@ -191,62 +191,62 @@ package body Kompsos.Pretty_Print is
when Fresh_Node =>
SU.Append (Result, Latin.HT &
"n" & Image (Nodes.Element (This.Actual)) & " [label=""fresh""];" & Latin.LF);
- Do_Structure_DOT (This.Actual.Frs_World, Nodes, Next, Result);
- if Nodes.Contains (This.Actual.Frs_World.Actual) then
+ Do_Structure_DOT (This.Actual.Frs_Goal, Nodes, Next, Result);
+ if Nodes.Contains (This.Actual.Frs_Goal.Actual) then
SU.Append (Result, Latin.HT &
"n" & Image (Nodes.Element (This.Actual)) & " -> " &
- "n" & Image (Nodes.Element (This.Actual.Frs_World.Actual)) & ";" & Latin.LF);
+ "n" & Image (Nodes.Element (This.Actual.Frs_Goal.Actual)) & ";" & Latin.LF);
end if;
when Unify_Node =>
SU.Append (Result, Latin.HT &
"n" & Image (Nodes.Element (This.Actual)) & " [label=""unify""];" & Latin.LF);
- Do_Structure_DOT (This.Actual.Uni_World, Nodes, Next, Result);
- if Nodes.Contains (This.Actual.Uni_World.Actual) then
+ Do_Structure_DOT (This.Actual.Uni_Goal, Nodes, Next, Result);
+ if Nodes.Contains (This.Actual.Uni_Goal.Actual) then
SU.Append (Result, Latin.HT &
"n" & Image (Nodes.Element (This.Actual)) & " -> " &
- "n" & Image (Nodes.Element (This.Actual.Uni_World.Actual)) & ";" & Latin.LF);
+ "n" & Image (Nodes.Element (This.Actual.Uni_Goal.Actual)) & ";" & Latin.LF);
end if;
when Disjunct_Node =>
SU.Append (Result, Latin.HT &
"n" & Image (Nodes.Element (This.Actual)) & " [label=""disjunct""];" & Latin.LF);
- Do_Structure_DOT (This.Actual.Dis_World1, Nodes, Next, Result);
- Do_Structure_DOT (This.Actual.Dis_World2, Nodes, Next, Result);
- if Nodes.Contains (This.Actual.Dis_World1.Actual) then
+ Do_Structure_DOT (This.Actual.Dis_Goal1, Nodes, Next, Result);
+ Do_Structure_DOT (This.Actual.Dis_Goal2, Nodes, Next, Result);
+ if Nodes.Contains (This.Actual.Dis_Goal1.Actual) then
SU.Append (Result, Latin.HT &
"n" & Image (Nodes.Element (This.Actual)) & " -> " &
- "n" & Image (Nodes.Element (This.Actual.Dis_World1.Actual)) &
+ "n" & Image (Nodes.Element (This.Actual.Dis_Goal1.Actual)) &
" [label=""1""];" & Latin.LF);
end if;
- if Nodes.Contains (This.Actual.Dis_World2.Actual) then
+ if Nodes.Contains (This.Actual.Dis_Goal2.Actual) then
SU.Append (Result, Latin.HT &
"n" & Image (Nodes.Element (This.Actual)) & " -> " &
- "n" & Image (Nodes.Element (This.Actual.Dis_World2.Actual)) &
+ "n" & Image (Nodes.Element (This.Actual.Dis_Goal2.Actual)) &
" [label=""2""];" & Latin.LF);
end if;
when Conjunct_Node =>
SU.Append (Result, Latin.HT &
"n" & Image (Nodes.Element (This.Actual)) & " [label=""conjunct""];" & Latin.LF);
- Do_Structure_DOT (This.Actual.Con_World, Nodes, Next, Result);
- if Nodes.Contains (This.Actual.Con_World.Actual) then
+ Do_Structure_DOT (This.Actual.Con_Goal, Nodes, Next, Result);
+ if Nodes.Contains (This.Actual.Con_Goal.Actual) then
SU.Append (Result, Latin.HT &
"n" & Image (Nodes.Element (This.Actual)) & " -> " &
- "n" & Image (Nodes.Element (This.Actual.Con_World.Actual)) & ";" & Latin.LF);
+ "n" & Image (Nodes.Element (This.Actual.Con_Goal.Actual)) & ";" & Latin.LF);
end if;
when Recurse_Node =>
SU.Append (Result, Latin.HT &
"n" & Image (Nodes.Element (This.Actual)) & " [label=""recurse""];" & Latin.LF);
- Do_Structure_DOT (This.Actual.Rec_World, Nodes, Next, Result);
- if Nodes.Contains (This.Actual.Rec_World.Actual) then
+ Do_Structure_DOT (This.Actual.Rec_Goal, Nodes, Next, Result);
+ if Nodes.Contains (This.Actual.Rec_Goal.Actual) then
SU.Append (Result, Latin.HT &
"n" & Image (Nodes.Element (This.Actual)) & " -> " &
- "n" & Image (Nodes.Element (This.Actual.Rec_World.Actual)) & ";" & Latin.LF);
+ "n" & Image (Nodes.Element (This.Actual.Rec_Goal.Actual)) & ";" & Latin.LF);
end if;
end case;
end Do_Structure_DOT;
function Structure_DOT
- (This : in World;
+ (This : in Goal;
Name : in String := "")
return String
is