User loginNavigation |
archivesAggregations (e.g., sets) in Logic ProgramsProlog and its derivatives have lacked adequate ways to compute with aggregations, e.g., sets. For example, suppose there is a ground-complete predicate Link[aNode, anotherNode, aCost] When ⊩ Path[aNode, aNode, aCost]→ // when a goal is set for a cost between aNode and itself ⊢ aCost=0▮ // assert that the cost from a node to itself is 0 The following goal-driven Logic Program works forward from start to find the cost to finish:
When ⊩ Path[start, finish, aCost]→
⊢ aCost=Minimum {nextCost + remainingCost
| ⊨ Link[start, next≠start, nextCost], Path[next, finish, remainingCost]}▮
// a cost from start to finish is the minimum of the set of the sum of the
// cost for the next node after start and
// the cost from that node to finish
The following goal-driven Logic Program works backward from finish to find the cost from start:
When ⊩ Path[start, finish, aCost]→
⊢ aCost=Minimum {remainingCost + previousCost
|⊨ Link[previous≠finish, finish, previousCost], Path[start, previous, remainingCost]}▮
// the cost from start to finish is the minimum of the set of the sum of the
// cost for the previous node before finish and
// the cost from start to that Node
Note that the above Logic Programs work together concurrently providing information to each other. For more information see Inconsistency Robustness for Logic Programs |
Browse archivesActive forum topics |
Recent comments
1 day 23 hours ago
2 days 20 hours ago
4 days 1 hour ago
4 days 1 hour ago
1 week 2 days ago
1 week 2 days ago
1 week 2 days ago
4 weeks 2 days ago
5 weeks 1 day ago
5 weeks 1 day ago