Skip to content

Expressing prefix sum #5

@amirsh

Description

@amirsh

It seems that the parser misses some features to express prefix sum.

Here are two versions that use MAX instead of SUM due to the earlier mentioned issue with typing SUM: #4

Stratified:

EDB_DECL:
arc(x int, y int)

IDB_DECL:
elems(x int, y int, w int)
presum_stratified(x int, y int)

RULE_DECL:
elems(t, t, w) :- arc(t, w).
elems(t, j, w) :- arc(t, _), arc(t-1, _), elems(t-1, j, w), 1 <= j, j < t.
presum_stratified(x, MAX(y)) :- elems(x, _, y).

Parser error:

line 10:34 no viable alternative at input 'arc(t-1'
line 10:34 no viable alternative at input 't-1'
line 10:34 missing '(' at '-1'
line 10:40 mismatched input ',' expecting ':-'
line 10:49 no viable alternative at input 't-1'
line 10:49 missing '(' at '-1'
line 10:58 mismatched input ',' expecting ':-'
line 10:66 mismatched input ',' expecting '('

Non-stratified:

EDB_DECL:
arc(x int, y int)

IDB_DECL:
presum(x int, y int)

RULE_DECL:
presum(x, MAX(y)) :- x=0, y=0.
presum(i, MAX(z+v)) :- presum(i-1,z), arc(i,v).

Parser error:

line 9:31 no viable alternative at input 'presum(i-1'
line 9:31 no viable alternative at input 'i-1'
line 9:31 missing '(' at '-1'
line 9:36 mismatched input ',' expecting ':-'
line 9:46 missing ':-' at '.'

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions