Live Chat Programs

March 26, 2008

Pure, Declarative, and Constructive Arithmetic Relations

Filed under: Live Chat software

Pure, Declarative, and Constructive Arithmetic Relations. Oleg Kiselyov, William E. Byrd, Daniel P. Friedman, and Chung-chieh Shan. FLOPS 2008. (source code)

We present decidable logic programs for addition, multiplication, division with remainder, exponentiation, and logarithm with remainder over the unbounded domain of natural numbers. Our predicates represent relations without mode restrictions or annotations. They are fully decidable under the common, DFS-like, SLD resolution strategy
of Prolog or under an interleaving refinement of DFS…

[The] attempts to define decidable multiplication even for the seemingly trivial unary case show the difficulties that become more pronounced as we move to binary arithmetic. We rely on a finite representation of infinite domains, precise instantiatedness analysis, and reasoning about SLD using search trees.

So you’ve read The Reasoned Schemer and were excited about the fact that unlike the built-in operations in Prolog, arithmetic relations (over binary numbers) were fully implemented. For example, addition could also be used for subtraction and multiplication for factoring numbers and for generating all triples of numbers related by multiplication. Now comes this paper to explain the motivation behind some of the more arcane definitions needed to implement arithmetic in a fully relational style, and to prove their properties formally. The paper develops unary and binary arithmetic relations in pure Prolog (with no cuts, negation or introspection).

Live Person Software: Turn website visitors into your customers.

LtU readers will also be interested in yet another embedding of pure Prolog into Haskell , that the authors offer. It is not meant to be the most optimal or convenient Prolog implementation (it wasn’t even intended to be an implementation of a logic

Also see: DevWeek 2008 Cross Platform Silverlight Demos

Also see: Silverlight 2 Beta 1 Cross Domain Bug

Also see: Stand alone FXCop download

Also see: Natural Sorting in C#

Also see: Determining Whether a File Is an Assembly

Also see: What Are You Destined to Be ?

Also see: Reliability

Also see: Stand alone FXCop download

Also see: Memory Model

Also see: Stand alone FXCop download

Also see: On the Perils of Wikipedia

Also see: Bragging on HDNet

Also see: Important changes to the BASE element for IE 7

Also see: DevWeek 2008 Cross Platform Silverlight Demos

Also see: Silverlight 2 Developer Poster

Also see: When Are Two Algorithms the Same?

Also see: Memory Model

Also see: Why I hate Radio

Also see: Brad Abrams’ pixel8 Interview Podcast posted

Also see: A quick update on me.

Also see: What Are You Destined to Be ?

system). It was explicitly designed to be easier to reason about and so help prove certain properties of SLD or similar evaluation strategies. The main difference of DefinitionTree from other embeddings of Prolog in Haskell has to do with the generation of fresh names for logic variables. In DefinitionTree, name generation is not an effect, and the naming is fully decoupled from the evaluation. The evaluation no longer needs to carry a state for the generation of fresh names, hence the evaluator is easier to reason
about equationally.
http://lambda-the-ultimate.org/node/2697

Comments »

The URI to TrackBack this entry is: http://thelivechatsoftware.blogsome.com/2008/03/26/pure-declarative-and-constructive-arithmetic-relations-2/trackback/

No comments yet.

RSS feed for comments on this post.

Leave a comment

Line and paragraph breaks automatic, e-mail address never displayed, HTML allowed: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>



Anti-spam measure: please retype the above text into the box provided.

Get free blog up and running in minutes with Blogsome
Theme designed by Jay of onefinejay.com