Transforming Boolean equalities into constraints

Although functional as well as logic languages use equality to discriminate between logically different cases, the operational meaning of equality is different in such languages. Functional languages reduce equational expressions to their Boolean values, True or False, logic languages use unificatio...

Full description

Saved in:
Bibliographic Details
Published in:Formal aspects of computing Vol. 29; no. 3; pp. 475 - 494
Main Authors: Antoy, Sergio, Hanus, Michael
Format: Journal Article
Language:English
Published: London Springer London 01.05.2017
Association for Computing Machinery
Subjects:
ISSN:0934-5043, 1433-299X
Online Access:Get full text
Tags: Add Tag
No Tags, Be the first to tag this record!
Description
Summary:Although functional as well as logic languages use equality to discriminate between logically different cases, the operational meaning of equality is different in such languages. Functional languages reduce equational expressions to their Boolean values, True or False, logic languages use unification to check the validity only and fail otherwise. Consequently, the language Curry, which amalgamates functional and logic programming features, offers two kinds of equational expressions so that the programmer has to distinguish between these uses. We show that this distinction can be avoided by providing an analysis and transformation method that automatically selects the appropriate operation. Without this distinction in source programs, the language design can be simplified and the execution of programs can be optimized. As a consequence, we show that one kind of equational expressions is sufficient and unification is nothing else than an optimization of Boolean equality.
Bibliography:ObjectType-Article-1
SourceType-Scholarly Journals-1
ObjectType-Feature-2
content type line 14
ISSN:0934-5043
1433-299X
DOI:10.1007/s00165-016-0399-6