Git Product home page Git Product logo

plog2.0's People

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

phamnguyenvu272

plog2.0's Issues

Implement Aggregates In P-log

A lot of examples have a more natural representation using Aggregates.
For instance, the following program
https://github.com/iensen/plog2.0/blob/master/plogapp/tests/nasa/A4n.plog
has a rule:

lessthan5broken = false:- broken(Component1) = true,
broken(Component2) = true,
broken(Component3)= true,
broken(Component4) = true,
broken(Component5) = true,
Component1<>Component2, Component1<>Component3,
Component1<>Component4, Component1<>Component5,
Component2<>Component3, Component2<>Component4,
Component2<>Component5, Component3<>Component4,
Component3<>Component5, Component4<>Component5.

That can be rewritten using aggregate:
lessthan5broken = false:- #count{X: broken(X)} <5.

This will shorten the program and improve the inference significantly.
We can use A-log aggregates (Gelfond, Zhang, 2014)

Implement naive inference algorithm for P-log.

In the dissertation PLOG: ITS ALGORITHMS AND APPLICATIONS by WEIJUN ZHU, B.S.
Weijun describes an algorithm that implements P-log inference by translating P-log programs into ASP (Smodels Syntax). Today, we can implement the algorithm using Clingo API (https://potassco.org/clingo/c-api/5.2/). This is going to be more efficient, and we can use it as a baseline for benchmarking more efficient algorithms.

Design and implement sufficient conditions for a program to be dynamically causally ordered unitary

Current algorithm is guaranteed to produce correct results only for the case when the given program
is dynamically causally ordered unitary.

We need an automatic check that establishes that a program belongs to that class.
Note that it can work only for some programs (e.g, sometimes the solver can say:

  • the program is proven to be dcou. Sometimes it can keep silence (In that case, the correctness of the answer is not guaranteed).

Make P-log understand classical negation.

P-log should understand classical negation -p. as a short hand for p = false.

For example, the following program should work:
sorts
#boolean = {true, false}.
attributes
p: #boolean.
statements
-p.
?p = false.

Use the main clingo instead of using the local clone

See if there are any issues that are still unresolved in the current clingo, that prevent it from being used in P-log.

If there are issues, contact Potassco and resolve.
If there are no issues, make P-log use the main repository instead of the local fork.

Wrong results for program with multiple consistency restoring rules leading to the same possible world.

Consider the following program:

sorts

#boolean={true, false}.

attributes

a : #boolean.
b : #boolean.
c: #boolean.
statements

a:+.
b:+.
a:- b.
b:- a.
c:- b.
c:- a.
c:+.

obs(c).

Even though there are only two possible worlds, {c} and {a,b,c}, the system incorrectly computes probability of a to be equal to 2/3 instead of 1/2.

The issue here is that two different abductive supports, {a}, and {b} generate the same possible world, {a,b,c}, hence it is counted twice when computing probability.

A similar issue was reported by @vuphan314 for SPARC earlier: iensen/sparc#22, but here it is more prominent since it actually leads to wrong results.

Is the plog2.0 ready?

I am a student from Southeast University in Nanjing, China. I want to do some experiments on p-log.
Is the plog2.0 ready for usage?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.