<p>I will just write what Frank Pfenning taught me (all mistakes go on my account).</p>

<p>A traditional formal system in logic, such as natural deduction, is <em>descriptive</em> in the sense that it tells us what valid deductions are, but it does not tell us how we are supposed to look for them.</p>

<p>The starting point of logic programming is to take the rules of deduction and reformulate them in such a way that they can be read <em>both</em> as rules of deduction and an <em>evaluation strategy</em> for a computation. This way a strong connection between deduction and computation is created. Both logic and theory of computation benefit from it, and it is perhaps a bit pointless to ask whether logic programming "really adds" anything new to logic. Logic and computation are not separate entities anyway.</p>

CC BY-SA 3.0
2014-04-14T17:00:11.303Z
2014-04-15T21:09:45.810Z
2014-04-15T21:09:45.810Z
Andrej Bauer
<p>I am acquinted with the basics of such notions as logic programming, monotonic and non-monotonic reasoning, modal logic (especially dynamic logic) and now I am wondering - does logic programming provides anything new to any logic?</p>

<p>As far as I understand, then (at least in dynamic logic) the logic programming refers to the formalization of state transitions (by actions, i.e. - logic programing can be understood just as logic about actions). But the same notion "logic programing" seems to be in use even in domains, where there is not state transition, just exploration of one state (or set of states - in case then the initial set of premises are vague enough to describe more than one state). It seems to me that some authors simply use  the notions "logic programming" for describing the procedure how to evaluate the query (I am reading currently about defeasible logic programming). But such procedure (although practical indeed) does not add anything new to the underlying logic. E.g. there is notion of "rational closure" (e.g. used for adaptive logics; just the consequence set for some set of premises) which should contain all the possible knowledge about state and therefore all the possible results of "logic programing" (if it is indeed perceived just as state exploration, derivation).</p>

<p>So - the question is - does logic programming provides anything new to the logic and does every logic (to be completely understood and readied for applications) need to have its own logic programming?</p>

<p>Maybe I am just missing the point...</p>

<p>Just for reference I find the following works interesting about this subject, if there are more along this line, then it would be great to hear!</p>

<ul>
<li>Mathematical Aspects of Logic Programming Semantics by Pascal
Hitzler, Anthony Seda </li>
<li>Dynamic Logic (Foundations of Computing) by
David Harel, Dexter Kozen, Jerzy Tiuryn </li>
<li>Adaptive Logics for
Defeasible Reasoning: Applications in Argumentation, Normative
Reasoning and Default Reasoning (Trends in Logic) by Christian
Straßer</li>
</ul>

<p>The answer to such question can have practical applications as well - e.g. it can help to define some kind of formal semantics of the "business rules" (declarative programming paradigm that is used more and more in business applications, e.g. IBM ILOG, JBoss Drools, Oracle Business Rules, PHP and Python also have their own rules engined) and going further - this can be useful for cognitive robotics as well.</p>

CC BY-SA 3.0
2014-04-13T09:55:22.330Z
Logic programming primarily/initially adds something new to programming.
Dave Clarke
CC BY-SA 3.0
2014-04-14T14:39:39.693Z
I think this question mixes up several issues. It might be worthwhile
to split it into several parts. As to logic programming, as @DaveClarke points
out, it doesn't add anything to a logic. Instead, logic programming is
a programming paradigm (like imperative programming, or functional
programming). The key novelty in logic programming is the mechanism
that drives computation. That mechanism is a generic proof search
using the proof rules of the ambient logic. (Continued below.)
Martin Berger
CC BY-SA 3.0
2014-04-14T14:40:19.700Z
In principle we can use
rules that are human-friendly (e.g. natural deduction) for this
purpose, but in practise that would make logic programming even slower than it already is. Instead we use machine-oriented proof rules, primarily resolution and unification. You can think of the latter as some kind of bi-directional pattern matching and the former as a generalisation of Modus Ponens and cut-elimination.
Martin Berger
<lo.logic><logic-programming>
What is logic programming and does it really add anything new to the logic?
TomR
# What is logic programming and does it really add anything new to the logic?

(Asked by: username_0 on 2014-04-12)

I am acquinted with the basics of such notions as logic programming, monotonic and non-monotonic reasoning, modal logic (especially dynamic logic) and now I am wondering - does logic programming provides anything new to any logic?

As far as I understand, then (at least in dynamic logic) the logic programming refers to the formalization of state transitions (by actions, i.e. - logic programing can be understood just as logic about actions). But the same notion "logic programing" seems to be in use even in domains, where there is not state transition, just exploration of one state (or set of states - in case then the initial set of premises are vague enough to describe more than one state). It seems to me that some authors simply use the notions "logic programming" for describing the procedure how to evaluate the query (I am reading currently about defeasible logic programming). But such procedure (although practical indeed) does not add anything new to the underlying logic. E.g. there is notion of "rational closure" (e.g. used for adaptive logics; just the consequence set for some set of premises) which should contain all the possible knowledge about state and therefore all the possible results of "logic programing" (if it is indeed perceived just as state exploration, derivation).

So - the question is - does logic programming provides anything new to the logic and does every logic (to be completely understood and readied for applications) need to have its own logic programming?

Maybe I am just missing the point...

Just for reference I find the following works interesting about this subject, if there are more along this line, then it would be great to hear!

* Mathematical Aspects of Logic Programming Semantics by Pascal
  Hitzler, Anthony Seda
* Dynamic Logic (Foundations of Computing) by
  David Harel, Dexter Kozen, Jerzy Tiuryn
* Adaptive Logics for
  Defeasible Reasoning: Applications in Argumentation, Normative
  Reasoning and Default Reasoning (Trends in Logic) by Christian
  Straßer

The answer to such question can have practical applications as well - e.g. it can help to define some kind of formal semantics of the "business rules" (declarative programming paradigm that is used more and more in business applications, e.g. IBM ILOG, JBoss Drools, Oracle Business Rules, PHP and Python also have their own rules engined) and going further - this can be useful for cognitive robotics as well.

**Tags:** lo.logic, logic-programming

> **Comments:**
> **username_1**: Logic programming primarily/initially adds something new to programming.  
> **username_2**: I think this question mixes up several issues. It might be worthwhile to split it into several parts. As to logic programming, as @DaveClarke points out, it doesn't add anything to a logic. Instead, logic programming is a programming paradigm (like imperative programming, or functional programming). The key novelty in logic programming is the mechanism that drives computation. That mechanism is a generic proof search using the proof rules of the ambient logic. (Continued below.)  
> **username_2**: In principle we can use rules that are human-friendly (e.g. natural deduction) for this purpose, but in practise that would make logic programming even slower than it already is. Instead we use machine-oriented proof rules, primarily resolution and unification. You can think of the latter as some kind of bi-directional pattern matching and the former as a generalisation of Modus Ponens and cut-elimination.  

---

## 1 answers

### Answer by username_3 on 2014-04-14. Score: 11

I will just write what Frank Pfenning taught me (all mistakes go on my account).

A traditional formal system in logic, such as natural deduction, is *descriptive* in the sense that it tells us what valid deductions are, but it does not tell us how we are supposed to look for them.

The starting point of logic programming is to take the rules of deduction and reformulate them in such a way that they can be read *both* as rules of deduction and an *evaluation strategy* for a computation. This way a strong connection between deduction and computation is created. Both logic and theory of computation benefit from it, and it is perhaps a bit pointless to ask whether logic programming "really adds" anything new to logic. Logic and computation are not separate entities anyway.


---

