Commit 75ead529797c35c687d45e641b28b7661caa72c0
1 parent
1e8b2315
Exists in
master
START - PEx preparation
Showing
7 changed files
with
128 additions
and
14 deletions
Show diff stats
No preview for this file type
code/asplang/ASPLang.jl
| 1 | 1 | module ASPLang |
| 2 | 2 | |
| 3 | -export parse_asp, debug_asp, | |
| 3 | +export parse_asp, debug_asp, pstring, | |
| 4 | 4 | literal_grammar, term_grammar, aggregate_grammar, asp_grammar, |
| 5 | - Node, Variable, StringConstant, SymbolicConstant, AnonymousVariable, NumberConstant, Variable, | |
| 5 | + Node, Terminal, NonTerminal, Variable, StringConstant, SymbolicConstant, AnonymousVariable, NumberConstant, Variable, | |
| 6 | 6 | Functor, FunctionTerm, |
| 7 | 7 | Negated, Inverted, Product, Sum, |
| 8 | 8 | LT, LE, EQ, NE, GE, GT, |
| ... | ... | @@ -13,31 +13,47 @@ export parse_asp, debug_asp, |
| 13 | 13 | Aggregate, Elements, InclusionCondition, |
| 14 | 14 | Constraint, LeftBound, RightBound, |
| 15 | 15 | Choice, RestrictedChoice, Choices, |
| 16 | - Disjunction, Body, Rule, Restriction, WeakRestriction, Annotation, | |
| 16 | + Disjunction, Head, Body, Rule, Restriction, WeakRestriction, Annotation, | |
| 17 | 17 | Query, Program |
| 18 | 18 | |
| 19 | + | |
| 20 | + | |
| 21 | +abstract type Node end | |
| 22 | +Base.:(==)(n1::Node, n2::Node) = (typeof(n1) == typeof(n2)) && (n1.args == n2.args) | |
| 23 | + | |
| 24 | +pstring(x::Any, level=0) = repr(x) | |
| 25 | +abstract type Terminal <: Node end | |
| 19 | 26 | macro terminal(lang) |
| 20 | 27 | return quote |
| 21 | - struct $lang <: Node end | |
| 28 | + struct $lang <: Terminal end | |
| 22 | 29 | end |
| 23 | 30 | end |
| 31 | +pstring(x::Terminal, level=0) = "$(" "^level)$(typeof(x))" | |
| 24 | 32 | |
| 33 | +abstract type NonTerminal <: Node end | |
| 25 | 34 | macro variable(lang) |
| 26 | 35 | return quote |
| 27 | - struct $lang <: Node | |
| 36 | + struct $lang <: NonTerminal | |
| 28 | 37 | args |
| 29 | 38 | end |
| 30 | 39 | end |
| 31 | 40 | end |
| 32 | 41 | |
| 42 | +function pstring(x::NonTerminal, level=0) | |
| 43 | + if typeof(x.args) <: AbstractVector | |
| 44 | + pargs = x.args .|> (z -> pstring(z, level + 2)) | |
| 45 | + "\n$(" "^level)$(typeof(x))($(join(pargs, ","))\n$(" "^level))" | |
| 46 | + else | |
| 47 | + pargs = join(pstring.(x.args), ",") | |
| 48 | + "\n$(" "^level)$(typeof(x))($pargs) - $(typeof(x.args))" | |
| 49 | + end | |
| 50 | +end | |
| 51 | + | |
| 33 | 52 | using ParserCombinator |
| 34 | 53 | #= |
| 35 | 54 | DATA STRUCTURES |
| 36 | 55 | =# |
| 37 | 56 | |
| 38 | -abstract type Node end | |
| 39 | -Base.:(==)(n1::Node, n2::Node) = (typeof(n1) == typeof(n2)) && (n1.args == n2.args) | |
| 40 | - | |
| 41 | 57 | @variable Variable |
| 42 | 58 | @variable StringConstant |
| 43 | 59 | @variable SymbolicConstant |
| ... | ... | @@ -92,6 +108,7 @@ Base.:(==)(n1::Node, n2::Node) = (typeof(n1) == typeof(n2)) && (n1.args == n2.ar |
| 92 | 108 | @variable Disjunction |
| 93 | 109 | @variable Annotation |
| 94 | 110 | @variable Body |
| 111 | +@variable Head | |
| 95 | 112 | |
| 96 | 113 | @variable Rule |
| 97 | 114 | @variable Restriction |
| ... | ... | @@ -316,7 +333,7 @@ statement = |
| 316 | 333 | # strong restriction |
| 317 | 334 | (E":-" + body + E"." > Restriction) | |
| 318 | 335 | # rule |
| 319 | - (head + Opt(annotation) + Opt(E":-" + body) + E"." |> Rule) | | |
| 336 | + ((head + Opt(annotation) |> Head) + Opt(E":-" + body) + E"." |> Rule) | | |
| 320 | 337 | # weak restriction |
| 321 | 338 | (E":~" + Opt(body) + E"." + spc + E"[" + weight_at_level + E"]" |> WeakRestriction) |
| 322 | 339 | statements = StarList(statement, E"") | ... | ... |
code/asplang/drafts.jl
code/asplang/sbf.plp
pex2024/candidatura.md
| 1 | -# Candidatura PeX - Zugzwang | |
| 1 | +# Candidatura PEx - Zugzwang | |
| 2 | + | |
| 3 | + | |
| 4 | +## 2024-01-05 - Next Research Lines | |
| 5 | + | |
| 6 | +> After the base-setting work of "_An Algebraic Approach to Stochastic ASP_" these are the next tasks to consider. Is summary: | |
| 7 | +> 1. **Logic Programming** - Stratified & Non-stratified programs | |
| 8 | +> 2. **Computer Science** - Inductive Logic Programming | |
| 9 | +> 3. **Software** - Integration with Potassco and other frameworks | |
| 10 | +> 4. **Applications** | |
| 11 | + | |
| 12 | +#### Line 1: Logic Programming - Stratified & Non-stratified programs | |
| 13 | + | |
| 14 | +##### Line 1a - Logic Programs Structure and Properties | |
| 15 | + | |
| 16 | +> _Stratified_ & _non-stratified_ programs are quoted in the "CREDAL" papers as important classes of logic programs. | |
| 17 | + | |
| 18 | +Minimal example of a **non-stratified program**. | |
| 19 | + | |
| 20 | +The following annotated LP, with clauses $c_1, c_2, c_3$ respectively, is non-stratified (because has a cycle with negated arcs) but no head is disjunctive: | |
| 21 | +```prolog | |
| 22 | +0.3::a. % c1 | |
| 23 | +b :- not c, not a. % c2 | |
| 24 | +c :- not b. % c3 | |
| 25 | +``` | |
| 26 | + | |
| 27 | +This program has three stable models: | |
| 28 | +$$ | |
| 29 | +\begin{aligned} | |
| 30 | +m_1 &= \set{ a, c } \cr | |
| 31 | +m_2 &= \set{ \neg a, b } \cr | |
| 32 | +m_3 &= \set{ \neg a, c } | |
| 33 | +\end{aligned} | |
| 34 | +$$ | |
| 35 | + | |
| 36 | +> We should **investigate** _What are stratified programs and why are they important?_ and how does our approach deals with such programs? | |
| 37 | + | |
| 38 | +##### Line 1b - Investigate the expressiveness of PASP | |
| 39 | + | |
| 40 | +Consider: | |
| 41 | + | |
| 42 | +- Recursion | |
| 43 | +- Variables, | |
| 44 | +- Functional symbols, | |
| 45 | + | |
| 46 | +##### Line 1c - The equivalence relation | |
| 47 | + | |
| 48 | +Consider the cases where only $s \subseteq e$ and $e \subseteq s$. Or other refinements. Also consider the inconsistent and independent events. | |
| 49 | + | |
| 50 | +##### Line 1d - Stability of the error function | |
| 51 | + | |
| 52 | +Consider alternative error functions. See statistics, Kullback-Leibler divergence | |
| 53 | + | |
| 54 | +#### Line 2: Computer Science - Inductive Logic Programming | |
| 55 | + | |
| 56 | +> Proceed from scoring programs to support genetic algorithms or other program space exploration methods. | |
| 57 | + | |
| 58 | +Scoring programs, as described in our paper, is just a step into **Inductive Logic Programming**. To go further, we need to explore algorithms that: | |
| 59 | + | |
| 60 | +1. Use **background knowledge**, expressed as a PLP. | |
| 61 | +2. Consult **positive examples** that should be _soft_ induced. | |
| 62 | +3. Consult **negative examples** that should be _soft_ excluded. | |
| 63 | +4. Generate **PLPs** that are scored. | |
| 64 | +5. Recombine the **best scored** into a new _population_, using recombination rules. | |
| 65 | + | |
| 66 | +> In order to do that, **PLPs must be expressed as data structures** to be manipulated. Also **recombination rules** must investigated before become formally expressed and supported with adequate methods. | |
| 67 | + | |
| 68 | +#### Line 3: Software - Integration with Potassco and other frameworks | |
| 69 | + | |
| 70 | +> Support annotated programs with zugzwang semantics. | |
| 71 | + | |
| 72 | +- Bayesian Networks (BII Alice) | |
| 73 | + - Generate an annotated asp program from a bayesian network and run it trough `clingo`. | |
| 74 | + - Recover the stable models from the previous ste and compute the respective probabilities. | |
| 75 | +- Program Manipulation | |
| 76 | + - Annotated ASP program _representation_ and a _parser_. | |
| 77 | + | |
| 78 | +#### Line 4: Applications | |
| 79 | + | |
| 80 | +> Apply zugzwang to a few showcases, besides the theoretic corner stones (non-stratified, disjunctive, bayes networks), preferably based in real world scenarios, with complex structure and large datasets. | |
| 81 | + | |
| 82 | +- (Stochastic) Plan Generation | |
| 83 | +- Yale-Shooting Problem | |
| 84 | +- (Stochastic) Situation Calculus | |
| 85 | +- Frame Problem | |
| 86 | +- Latent Facts - and core assumptions. | |
| 87 | +- Given a **Bayesian Network** (or a **Markov Networks**): | |
| 88 | + - Represent it. (**done** for BNs; MNs?) | |
| 89 | + - Solve the common probability tasks: join (**done**), marginals, conditionals, parameter learning, inferring unobserved variables, sample generation, _etc._ | |
| 90 | +- Given a _solved_ ASP specification: | |
| 91 | + - What is the marginal probability of the atom `a`? (**done**) | |
| 92 | + - What other probability queries are important to consider? | |
| 93 | +- Given an _unsolved_ ASP specification: | |
| 94 | + - What is the probability (distribution?) of the probabilistic fact `a`? | |
| 95 | + - What other questions are relevant? _E.g._ the distribution family of a fact? | |
| 96 | +- Given a _solved_ ASP specification and a set of _samples_: | |
| 97 | + - How do the probabilities inferred from the specification match the ones from the empiric distribution? (**done** might see alternative approaches) | |
| 98 | +- Given two _solved_ ASP specification and a set of _samples_: | |
| 99 | + - Which specification best describes the empiric distribution? (**done**) | |
| 2 | 100 | |
| 3 | 101 | ## Tarefas |
| 4 | 102 | ... | ... |
No preview for this file type
projecto-NovaLINCS.gdlink