SNAPKITTYWEST's picture
October 2026 main drop: mirror from GitHub
d15fde8 verified
Raw History Blame Contribute Delete
2.56 kB
extends Node
func _ready() -> void:
print("=== Horn Clause Engine Tests ===")
test_horn_engine()
print("\n=== Intent Engine Tests ===")
test_intent_engine()
print("\n=== Combined NLP + Horn Query ===")
test_combined()
func test_horn_engine() -> void:
var engine := HornEngine.new()
engine.add_fact("item", ["item_1"])
engine.add_fact("color", ["item_1", "red"])
engine.add_fact("stored_item", ["item_1", "storage_a"])
engine.add_fact("location", ["storage_a", "warehouse"])
engine.add_rule(
{"pred": "in_warehouse", "args": ["?X"]},
[
{"pred": "stored_item", "args": ["?X", "?S"]},
{"pred": "location", "args": ["?S", "warehouse"]}
]
)
var results := engine.query({"pred": "in_warehouse", "args": ["?X"]})
for answer in results:
print("Proof substitution: ", answer)
print("Resolved item: ", engine.walk("?X", answer))
var multi_results := engine.solve([
{"pred": "color", "args": ["?X", "red"]},
{"pred": "in_warehouse", "args": ["?X"]}
])
print("Multi-goal results count: ", multi_results.size())
for answer in multi_results:
print("Red in warehouse: ", engine.walk("?X", answer))
func test_intent_engine() -> void:
var engine := IntentEngine.new()
var action_handlers := ActionHandlers.new()
var intent_registry := IntentRegistry.new()
add_child(engine)
add_child(action_handlers)
add_child(intent_registry)
engine.configure(action_handlers)
intent_registry.install(engine)
test_utterance(engine, "Show me the inventory")
test_utterance(engine, "Go left")
test_utterance(engine, "Do something unknown")
test_utterance(engine, "Cancel")
func test_utterance(engine: IntentEngine, text: String) -> void:
var intent := engine.resolve(text)
print("Resolution: ", intent)
if intent["status"] == "matched":
var result: Variant = engine.dispatch(intent)
print("Execution result: ", result)
func test_combined() -> void:
var engine := HornEngine.new()
engine.add_fact("item", ["item_1"])
engine.add_fact("color", ["item_1", "red"])
engine.add_fact("stored_item", ["item_1", "storage_a"])
engine.add_fact("location", ["storage_a", "warehouse"])
engine.add_rule(
{"pred": "in_warehouse", "args": ["?X"]},
[
{"pred": "stored_item", "args": ["?X", "?S"]},
{"pred": "location", "args": ["?S", "warehouse"]}
]
)
var goals := [
{"pred": "color", "args": ["?X", "red"]},
{"pred": "in_warehouse", "args": ["?X"]}
]
var results := engine.solve(goals)
print("Combined query results:")
for answer in results:
print(" Found: ", engine.walk("?X", answer))