Search in sources :

Example 21 with Node

use of suite.node.Node in project suite by stupidsing.

the class FindPredicates method elaborate.

private Stack<Node> elaborate(Prover prover, Node var, Node goal) {
    Stack<Node> stack = new Stack<>();
    Tree subGoal = Tree.of(TermOp.AND___, goal, new Data<Source<Boolean>>(() -> {
        stack.push(new Cloner().clone(var));
        return Boolean.FALSE;
    }));
    new Prover(prover).elaborate(subGoal);
    return stack;
}
Also used : Node(suite.node.Node) Prover(suite.lp.doer.Prover) Tree(suite.node.Tree) Source(suite.util.FunUtil.Source) Stack(java.util.Stack) Cloner(suite.lp.doer.Cloner)

Example 22 with Node

use of suite.node.Node in project suite by stupidsing.

the class SystemPredicates method call.

public Boolean call(Node query) {
    BuiltinPredicate predicate;
    Tree tree;
    Operator op;
    Node left;
    String name = null;
    Node pass = null;
    if (query instanceof Atom) {
        name = ((Atom) query).name;
        pass = Atom.NIL;
    } else if ((tree = Tree.decompose(query)) != null)
        if ((op = tree.getOperator()) != TermOp.TUPLE_) {
            name = op.getName();
            pass = query;
        } else if ((left = tree.getLeft()) instanceof Atom) {
            name = ((Atom) left).name;
            pass = tree.getRight();
        }
    predicate = name != null ? get(name) : null;
    return predicate != null ? predicate.prove(prover, pass) : null;
}
Also used : BuiltinPredicate(suite.lp.predicate.PredicateUtil.BuiltinPredicate) Operator(suite.node.io.Operator) Node(suite.node.Node) Tree(suite.node.Tree) Atom(suite.node.Atom)

Example 23 with Node

use of suite.node.Node in project suite by stupidsing.

the class FindUtil method collectList.

public static List<Node> collectList(Finder finder, Node in) {
    List<Node> nodes = new ArrayList<>();
    finder.find(To.source(in), node -> nodes.add(new Cloner().clone(node)));
    return nodes;
}
Also used : Node(suite.node.Node) ArrayList(java.util.ArrayList) Cloner(suite.lp.doer.Cloner)

Example 24 with Node

use of suite.node.Node in project suite by stupidsing.

the class SewingProverBuilder method build.

@Override
public Fun<Node, Finder> build(RuleSet ruleSet) {
    ProverFactory sewingProver = new SewingProverImpl(ruleSet);
    return goal -> {
        Node goal1 = SewingGeneralizerImpl.generalize(goal);
        Prove_ pred = sewingProver.prover(goal1);
        return (source, sink) -> {
            ProverConfig proverConfig1 = new ProverConfig(ruleSet, proverConfig);
            proverConfig1.setSource(source);
            proverConfig1.setSink(sink);
            pred.test(proverConfig1);
        };
    };
}
Also used : SewingGeneralizerImpl(suite.lp.sewing.impl.SewingGeneralizerImpl) SewingProverImpl(suite.lp.sewing.impl.SewingProverImpl) Finder(suite.lp.search.ProverBuilder.Finder) ProverFactory(suite.lp.doer.ProverFactory) Builder(suite.lp.search.ProverBuilder.Builder) Prove_(suite.lp.doer.ProverFactory.Prove_) RuleSet(suite.lp.kb.RuleSet) Fun(suite.util.FunUtil.Fun) ProverConfig(suite.lp.Configuration.ProverConfig) Node(suite.node.Node) Node(suite.node.Node) ProverConfig(suite.lp.Configuration.ProverConfig) Prove_(suite.lp.doer.ProverFactory.Prove_) ProverFactory(suite.lp.doer.ProverFactory) SewingProverImpl(suite.lp.sewing.impl.SewingProverImpl)

Example 25 with Node

use of suite.node.Node in project suite by stupidsing.

the class SewingProverBuilder2 method build.

@Override
public Fun<Node, Finder> build(RuleSet ruleSet) {
    boolean isRewrite = !proverConfig.isTrace();
    QueryRewriter qr = isRewrite ? new QueryRewriter(Prototype.multimap(ruleSet)) : null;
    RuleSet ruleSet1;
    if (qr != null) {
        ruleSet1 = Suite.newRuleSet();
        qr.rules().entries().forEach(p -> ruleSet1.addRule(p.t1));
    } else
        ruleSet1 = ruleSet;
    Fun<Node, Finder> fun = new SewingProverBuilder(proverConfig).build(ruleSet1);
    if (qr != null)
        return goal -> fun.apply(qr.rewriteClause(goal));
    else
        return fun;
}
Also used : RuleSet(suite.lp.kb.RuleSet) QueryRewriter(suite.lp.sewing.impl.QueryRewriter) Node(suite.node.Node) Finder(suite.lp.search.ProverBuilder.Finder)

Aggregations

Node (suite.node.Node)139 Tree (suite.node.Tree)50 Reference (suite.node.Reference)41 Atom (suite.node.Atom)37 Int (suite.node.Int)33 ArrayList (java.util.ArrayList)32 Pair (suite.adt.pair.Pair)25 List (java.util.List)24 TermOp (suite.node.io.TermOp)21 Read (suite.streamlet.Read)21 Test (org.junit.Test)20 Map (java.util.Map)19 Suite (suite.Suite)18 Generalizer (suite.lp.doer.Generalizer)18 Fail (suite.util.Fail)18 Fun (suite.util.FunUtil.Fun)18 Str (suite.node.Str)17 Trail (suite.lp.Trail)16 RuleSet (suite.lp.kb.RuleSet)16 Tuple (suite.node.Tuple)16