Search in sources :

Example 1 with ProverConfig

use of suite.lp.Configuration.ProverConfig in project suite by stupidsing.

the class CommandDispatcher method dispatchCommand_.

private boolean dispatchCommand_(String input, Writer writer) throws IOException {
    PrintWriter pw = new PrintWriter(writer);
    boolean code = true;
    Pair<InputType, String> pair = new CommandUtil<>(InputType.values()).recognize(input);
    InputType type = pair.t0;
    input = pair.t1.trim();
    if (input.endsWith("#"))
        input = String_.range(input, 0, -1);
    Node node = Suite.parse(input.trim());
    switch(type) {
        case EVALUATE:
            pw.println(Formatter.dump(evaluateFunctional(node)));
            break;
        case EVALUATEDO:
            node = Suite.applyPerform(node, Atom.of("any"));
            pw.println(Formatter.dump(evaluateFunctional(node)));
            break;
        case EVALUATEDOCHARS:
            node = Suite.applyPerform(node, Suite.parse("[n^Chars]"));
            printEvaluated(writer, node);
            break;
        case EVALUATEDOSTR:
            node = Suite.applyPerform(node, Atom.of("string"));
            printEvaluated(writer, Suite.applyWriter(node));
            break;
        case EVALUATEEFI:
            InterpretFunEager efi = new InterpretFunEager();
            efi.setLazyify(opt.isLazy());
            pw.println(efi.eager(node));
            break;
        case EVALUATELFI0:
            pw.println(new InterpretFunLazy0().lazy(node).get());
            break;
        case EVALUATELFI:
            pw.println(new InterpretFunLazy().lazy(node).get());
            break;
        case EVALUATESTR:
            node = Suite.substitute("string of .0", node);
            printEvaluated(writer, Suite.applyWriter(node));
            break;
        case EVALUATETYPE:
            pw.println(Formatter.dump(Suite.evaluateFunType(opt.fcc(node))));
            break;
        case FACT:
            ruleSet.addRule(Rule.of(node));
            break;
        case OPTION:
            Source<String> source = To.source(("-" + input).split(" "));
            String option;
            while ((option = source.source()) != null) opt.processOption(option, source);
            break;
        case PRETTYPRINT:
            pw.println(new PrettyPrinter().prettyPrint(node));
            break;
        case QUERY:
            code = query(new InterpretedProverBuilder(opt.pc(ruleSet)), ruleSet, node);
            break;
        case QUERYCOMPILED:
            code = query(CompiledProverBuilder.level1(opt.pc(ruleSet)), ruleSet, node);
            break;
        case QUERYCOMPILED2:
            if (builderLevel2 == null)
                builderLevel2 = CompiledProverBuilder.level2(opt.pc(ruleSet));
            code = query(builderLevel2, ruleSet, node);
            break;
        case QUERYELABORATE:
            elaborate(node, new Prover(opt.pc(ruleSet))::prove);
            break;
        case QUERYSEWING:
            code = query(new SewingProverBuilder(opt.pc(ruleSet)), ruleSet, node);
            break;
        case QUERYSEWINGELAB:
            elaborate(node, n -> new SewingProverImpl(ruleSet).prover(n).test(new ProverConfig(ruleSet)));
            break;
        case RESET:
            ruleSet = Suite.newRuleSet();
            importFiles(List.of());
    }
    pw.flush();
    return code;
}
Also used : InterpretFunLazy(suite.fp.InterpretFunLazy) SewingProverBuilder(suite.lp.search.SewingProverBuilder) InterpretFunLazy0(suite.fp.InterpretFunLazy0) Node(suite.node.Node) Prover(suite.lp.doer.Prover) InterpretFunEager(suite.fp.InterpretFunEager) SewingProverImpl(suite.lp.sewing.impl.SewingProverImpl) PrettyPrinter(suite.node.pp.PrettyPrinter) InterpretedProverBuilder(suite.lp.search.InterpretedProverBuilder) ProverConfig(suite.lp.Configuration.ProverConfig) PrintWriter(java.io.PrintWriter)

Example 2 with ProverConfig

use of suite.lp.Configuration.ProverConfig in project suite by stupidsing.

the class CommandOptions method fcc.

public FunCompilerConfig fcc(Node node) {
    ProverConfig pc = pc(Suite.newRuleSet());
    FunCompilerConfig fcc = new FunCompilerConfig(pc, libraries);
    fcc.setLazy(isLazy);
    fcc.setNode(node);
    return fcc;
}
Also used : FunCompilerConfig(suite.fp.FunCompilerConfig) ProverConfig(suite.lp.Configuration.ProverConfig)

Example 3 with ProverConfig

use of suite.lp.Configuration.ProverConfig in project suite by stupidsing.

the class CommandOptions method pc.

public ProverConfig pc(RuleSet ruleSet) {
    ProverConfig pc = new ProverConfig(ruleSet);
    pc.setTrace(isTrace);
    return pc;
}
Also used : ProverConfig(suite.lp.Configuration.ProverConfig)

Example 4 with ProverConfig

use of suite.lp.Configuration.ProverConfig in project suite by stupidsing.

the class EvaluateUtil method doFcc.

private Node doFcc(Node compileNode, FunCompilerConfig fcc) {
    return LogUtil.duration("Code compiled", () -> {
        ProverConfig pc = fcc.getProverConfig();
        Finder finder = fccFinderFun.apply(Pair.of(pc, compileNode));
        return FindUtil.collectSingle(finder, appendLibraries(fcc));
    });
}
Also used : ProverConfig(suite.lp.Configuration.ProverConfig) Finder(suite.lp.search.ProverBuilder.Finder)

Example 5 with ProverConfig

use of suite.lp.Configuration.ProverConfig 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)

Aggregations

ProverConfig (suite.lp.Configuration.ProverConfig)17 Test (org.junit.Test)10 RuleSet (suite.lp.kb.RuleSet)10 SewingProverImpl (suite.lp.sewing.impl.SewingProverImpl)9 ProverFactory (suite.lp.doer.ProverFactory)7 Builder (suite.lp.search.ProverBuilder.Builder)4 Node (suite.node.Node)4 Prove_ (suite.lp.doer.ProverFactory.Prove_)3 Finder (suite.lp.search.ProverBuilder.Finder)3 Generalizer (suite.lp.doer.Generalizer)2 CompiledProverBuilder (suite.lp.search.CompiledProverBuilder)2 Fun (suite.util.FunUtil.Fun)2 PrintWriter (java.io.PrintWriter)1 Suite (suite.Suite)1 FunCompilerConfig (suite.fp.FunCompilerConfig)1 InterpretFunEager (suite.fp.InterpretFunEager)1 InterpretFunLazy (suite.fp.InterpretFunLazy)1 InterpretFunLazy0 (suite.fp.InterpretFunLazy0)1 InstructionExecutor (suite.instructionexecutor.InstructionExecutor)1 LogicInstructionExecutor (suite.instructionexecutor.LogicInstructionExecutor)1