Vitalis_Core / science_reasoner.py
FerrellSyntheticIntelligence
feat: hard-sync reasoning modules
3746aeb
Raw
History Blame Contribute Delete
898 Bytes
import numpy as np, sympy as sp
class ScienceReasoner:
def __init__(self, graph): self.graph = graph
def infer(self, propositions, steps, max_depth=10):
premise_cids = [self.graph.add_node(p.text, p.embedding, p.confidence) for p in propositions]
current_cids, depth = premise_cids, 0
while depth < max_depth:
node_a = self.graph.get_node(current_cids[0])
node_b = self.graph.get_node(current_cids[1] if len(current_cids)>1 else current_cids[0])
new_conf = node_a.confidence * node_b.confidence
label = f"({node_a.label} AND {node_b.label})"
embed = (node_a.embedding + node_b.embedding) / 2.0
last_cid = self.graph.add_node(label, embed / np.linalg.norm(embed), new_conf)
current_cids = [last_cid] + current_cids
depth += 1
return self.graph.get_node(last_cid)