sbool myTruth_verbose; concept MyTruth { S globalID; Lisp term; S madeByRule; *() {} *(S *globalID, Lisp *term, S *madeByRule) { change(); } } svoid loadMyTruth { db(); for (MyTruth t) lispAddLocalTruth(t.globalID, t.term); } svoid myTruth(S bla) { Pair p = splitConceptsFromStatements(bla); myTruth(p.a, p.b); } svoid myTruth(S concepts, S statements) { useConceptsAndStatements(concepts, statements); loadMyTruth(); printLispStatements(); } svoid fromUser(S head, O... args) { fromUser(lisp(head, args)); } svoid fromUser(Lisp l) { emit(l, "user"); } svoid emit(Lisp l) { emit(l, ""); } svoid emit(Lisp l, S madeByRule) { ThoughtSpace ts = thoughtSpace(); if (ts != null) { ts.addStatement(l); ret; } LispStatement s = lispAddLocalTruth(l); if (s != null) { new MyTruth(s.globalID, l, madeByRule); if (myTruth_verbose) print("emit> " + l); } } svoid unemit(Lisp l) { ThoughtSpace ts = thoughtSpace(); if (ts != null) { ts.removeStatement(l); ret; } LispStatement s = findLispStatement(l); if (s == null) ret; removeLispStatement(s); deleteConcepts(MyTruth, globalID := s.globalID); }