Programming with narrowing: A tutorial

Narrowing is a computation implemented by some declarative programming languages. Research in the last decade has produced significant results on the theory and foundation of narrowing, but little has been published on the use of narrowing in programming. This paper introduces narrowing from a progr...

Celý popis

Uloženo v:
Podrobná bibliografie
Vydáno v:Journal of symbolic computation Ročník 45; číslo 5; s. 501 - 522
Hlavní autor: Antoy, Sergio
Médium: Journal Article
Jazyk:angličtina
Vydáno: Elsevier Ltd 01.05.2010
Témata:
ISSN:0747-7171, 1095-855X
On-line přístup:Získat plný text
Tagy: Přidat tag
Žádné tagy, Buďte první, kdo vytvoří štítek k tomuto záznamu!
Abstract Narrowing is a computation implemented by some declarative programming languages. Research in the last decade has produced significant results on the theory and foundation of narrowing, but little has been published on the use of narrowing in programming. This paper introduces narrowing from a programmer’s viewpoint; shows, by means of examples, when, why and how to use narrowing in a program; and discusses the impact of narrowing on software development activities such as design and maintenance. The examples are coded in the programming language Curry, which provides narrowing as a first class feature.
AbstractList Narrowing is a computation implemented by some declarative programming languages. Research in the last decade has produced significant results on the theory and foundation of narrowing, but little has been published on the use of narrowing in programming. This paper introduces narrowing from a programmer’s viewpoint; shows, by means of examples, when, why and how to use narrowing in a program; and discusses the impact of narrowing on software development activities such as design and maintenance. The examples are coded in the programming language Curry, which provides narrowing as a first class feature.
Author Antoy, Sergio
Author_xml – sequence: 1
  givenname: Sergio
  surname: Antoy
  fullname: Antoy, Sergio
  email: antoy@cs.pdx.edu
  organization: Computer Science Department, Portland State University, P.O. Box 751, Portland, OR 97207, USA
BookMark eNp9zz1PwzAQgGELFYm28APYMrElnOs4TmCqKr6kSjCAxGbZzqU4amJkGyr-Pa7KxNDpdMNzp3dGJqMbkZBLCgUFWl33RR9MsYC0Ay0AqhMypdDwvOb8fUKmIEqRCyroGZmF0ANAUzI-JVcv3m28GgY7brKdjR_ZqLx3u7TeZMssfkXnrdqek9NObQNe_M05ebu_e1095uvnh6fVcp2bRSNizg12CjQCYNmysqLIWKXTo7aqa0SjeAdMixJUzRhWtRa6pBxA6VbrRSJzQg93jXcheOzkp7eD8j-SgtyHyl6mULkPlUBlCk1G_DPGRhWtG6NXdntU3h4kpqRvi14GY3E02FqPJsrW2SP6F3Gab0A
CitedBy_id crossref_primary_10_1007_s00165_016_0399_6
crossref_primary_10_1017_S1471068411000263
Cites_doi 10.1016/j.entcs.2006.10.040
10.1016/j.entcs.2008.06.037
10.1145/263699.263710
10.1016/0743-1066(94)90034-5
10.1016/0022-0000(91)90009-T
10.1007/s10990-007-9000-6
10.1016/0743-1066(92)90024-W
10.1016/0743-1066(92)90026-Y
10.1016/S0743-1066(98)10029-8
10.1145/347476.347484
10.1016/j.jsc.2004.12.007
10.1145/321250.321253
10.1017/S1471068404002303
10.1145/1599410.1599420
10.1145/362575.362577
ContentType Journal Article
Copyright 2010 Elsevier Ltd
Copyright_xml – notice: 2010 Elsevier Ltd
DBID 6I.
AAFTH
AAYXX
CITATION
DOI 10.1016/j.jsc.2010.01.006
DatabaseName ScienceDirect Open Access Titles
Elsevier:ScienceDirect:Open Access
CrossRef
DatabaseTitle CrossRef
DatabaseTitleList
DeliveryMethod fulltext_linktorsrc
Discipline Computer Science
EISSN 1095-855X
EndPage 522
ExternalDocumentID 10_1016_j_jsc_2010_01_006
S0747717110000143
GroupedDBID --K
--M
-~X
.DC
.~1
0R~
1B1
1RT
1~.
1~5
29L
4.4
457
4G.
5GY
5VS
6I.
6OB
7-5
71M
8P~
9JN
AACTN
AAEDT
AAEDW
AAFTH
AAIAV
AAIKJ
AAKOC
AALRI
AAOAW
AAQFI
AAQXK
AAXUO
AAYFN
ABAOU
ABBOA
ABEFU
ABFNM
ABJNI
ABMAC
ABVKL
ABXDB
ABYKQ
ACAZW
ACDAQ
ACGFS
ACNNM
ACRLP
ACZNC
ADBBV
ADEZE
ADFGL
ADMUD
AEBSH
AEKER
AENEX
AEXQZ
AFKWA
AFTJW
AGHFR
AGUBO
AGYEJ
AHHHB
AIALX
AIEXJ
AIGVJ
AIKHN
AITUG
AJBFU
AJOXV
ALMA_UNASSIGNED_HOLDINGS
AMFUW
AMRAJ
AOUOD
ARUGR
ASPBG
AVWKF
AXJTR
AZFZN
BKOJK
BLXMC
CAG
COF
CS3
DM4
DU5
EBS
EFBJH
EFLBG
EJD
EO8
EO9
EP2
EP3
FDB
FEDTE
FGOYB
FIRID
FNPLU
FYGXN
G-2
G-Q
GBLVA
GBOLZ
HVGLF
HZ~
IHE
IXB
J1W
KOM
LG5
M25
M41
MHUIS
MO0
N9A
NCXOZ
O-L
O9-
OAUVE
OK1
OZT
P-8
P-9
P2P
PC.
Q38
R2-
RIG
RNS
ROL
RPZ
SDF
SDG
SDP
SES
SEW
SPC
SPCBC
SSV
SSW
SSZ
T5K
TN5
UPT
WUQ
XPP
YQT
ZMT
ZU3
~G-
9DU
AATTM
AAXKI
AAYWO
AAYXX
ABWVN
ACLOT
ACRPL
ACVFH
ADCNI
ADNMO
ADVLN
AEIPS
AEUPX
AFJKZ
AFPUW
AGQPQ
AIGII
AIIUN
AKBMS
AKRWK
AKYEP
ANKPU
APXCP
CITATION
EFKBS
~HD
ID FETCH-LOGICAL-c297t-5cefa0be00e4d3461e336b435d688eeca5f03b740a833e68b7b41500abdbb24d3
ISICitedReferencesCount 10
ISICitedReferencesURI http://www.webofscience.com/api/gateway?GWVersion=2&SrcApp=Summon&SrcAuth=ProQuest&DestLinkType=CitingArticles&DestApp=WOS_CPL&KeyUT=000276860200002&url=https%3A%2F%2Fcvtisr.summon.serialssolutions.com%2F%23%21%2Fsearch%3Fho%3Df%26include.ft.matches%3Dt%26l%3Dnull%26q%3D
ISSN 0747-7171
IngestDate Sat Nov 29 02:50:58 EST 2025
Tue Nov 18 21:24:49 EST 2025
Fri Feb 23 02:31:32 EST 2024
IsDoiOpenAccess true
IsOpenAccess true
IsPeerReviewed true
IsScholarly true
Issue 5
Keywords Program design
Narrowing
Functional logic programming
Language English
License http://www.elsevier.com/open-access/userlicense/1.0
https://www.elsevier.com/tdm/userlicense/1.0
https://www.elsevier.com/open-access/userlicense/1.0
LinkModel OpenURL
MergedId FETCHMERGED-LOGICAL-c297t-5cefa0be00e4d3461e336b435d688eeca5f03b740a833e68b7b41500abdbb24d3
OpenAccessLink https://dx.doi.org/10.1016/j.jsc.2010.01.006
PageCount 22
ParticipantIDs crossref_primary_10_1016_j_jsc_2010_01_006
crossref_citationtrail_10_1016_j_jsc_2010_01_006
elsevier_sciencedirect_doi_10_1016_j_jsc_2010_01_006
PublicationCentury 2000
PublicationDate 2010-05-01
PublicationDateYYYYMMDD 2010-05-01
PublicationDate_xml – month: 05
  year: 2010
  text: 2010-05-01
  day: 01
PublicationDecade 2010
PublicationTitle Journal of symbolic computation
PublicationYear 2010
Publisher Elsevier Ltd
Publisher_xml – name: Elsevier Ltd
References Wirth (b61) 1971; 14
Hullot (b42) 1980; vol. 87
Aït-Kaci (b2) 1990; vol. 504
Barry, B., 1996. Needed narrowing as the computational strategy of evaluable functions in an extension of Gödel. Master’s thesis, Portland State University.
(b38) 2006
López-Fraguas, Sánchez-Hernández (b47) 1999; vol. 1631
Antoy, Echahed, Hanus (b12) 2000; 47
Antoy, Hanus (b15) 2006; vol. 4079
ISO, 1995. Information technology–Programming languages — Prolog–Part 1. General Core. ISO/IEC 13211-1, 1995.
(b21) 2003
Meseguer, Thati (b49) 2007; 20
Alpuente, Lucas, Falaschi, Vidal, Hanus (b7) 2005; 5
Braßel, Fischer, Huch (b23) 2008; 216
Echahed, R., Janodet, J.C., 1997. On constructor-based graph rewriting systems. Tech. Rep. 985-I, IMAG.
Klop (b45) 1992; vol. II
Lux (b48) 1999; vol. 1722
Antoy, S., Hanus, M., 2009. Set functions for functional logic programming. In: Proceedings of the 11th ACM SIGPLAN International Conference on Principles and Practice of Declarative Programming, PPDP 2009, Lisbon, Portugal, pp. 73–82.
Reddy (b56) 1985
Alpuente, Hanus, Lucas, Vidal (b6) 2005; 5
González Moreno, López Fraguas, Hortalá González, Rodríguez Artalejo (b35) 1999; 40
(b54) 1999
Milner, Tofte, Harper, MacQueen (b50) 1997
O’Donnell (b52) 1977; vol. 58
Antoy (b11) 2005; 40
Fischer, Kuchen (b32) 2007
Christiansen, Fischer (b26) 2008; vol. 4989
Antoy (b9) 1997; vol. 1298
Hanus, M., 1997. A unified computation model for functional and logic programming. In: Proceedings of the 24th ACM Symposium on Principles of Programming Languages, POPL’97, pp. 80–93.
Robinson (b57) 1965; 12
(b25) 2007
Baader, Nipkow (b19) 1998
Moreno-Navarro, Rodríguez-Artalejo (b51) 1992; 12
Antoy, Hanus (b13) 2000; vol. 1794
Antoy (b10) September 2001
Hanus (b36) 1994; 19&20
ACM,, 2000. ACM Pacific NW Region Programming Contest. Available at
Antoy, Hanus, Massey, Steiner (b18) 2001
Hanus, M., Kuchen, H., Moreno-Navarro, J.J., 1995. Curry: A truly functional logic language. In: Proceedings of the ILPS’95 Workshop on Visions for the Future of Logic Programming. Portland, Oregon, pp. 95–107.
Alpuente, Falaschi, Vidal (b4) 1996
Fay (b31) 1979
Antoy, Hanus (b14) 2005; vol. 3901
Lloyd (b46) 1999
Antoy, Hanus, Liu, Tolmach (b17) 2005; vol. 3474
Fischer, Kuchen (b33) 2008
Alpuente, Falaschi, Vidal (b5) 1998; 9
Giovannetti, Levi, Moiso, Palamidessi (b34) 1991; 42
(accessed 16.03.09).
Echahed (b29) 2008; vol. 5214
Brassel, B., Huch, F., 2007. The Kiel Curry System KiCS. In: Seipel, D., Hanus, M. (Eds.), Preproceedings of the 21st Workshop on (Constraint) Logic Programming, WLP 2007, Würzburg, Germany, Technical Report 434, pp. 215–223.
Dershowitz, Plaisted (b28) 1988; vol. 11
Sheard (b58) 2007; 174
(b59) 1993
Tolmach, Antoy, Nita (b60) 2004
Albert, Hanus, Vidal (b3) 2002; 2002
Dershowitz, Jouannaud (b27) 1990
O’Donnell (b53) 1985
Antoy (b8) 1992; vol. 632
(b40) 2008
Hanus (b39) 2007; vol. 4670
Bird, Wadler (b22) 1988
Plump (b55) 1999
Hussmann (b43) 1992; 12
Moreno-Navarro (10.1016/j.jsc.2010.01.006_b51) 1992; 12
Bird (10.1016/j.jsc.2010.01.006_b22) 1988
Meseguer (10.1016/j.jsc.2010.01.006_b49) 2007; 20
Plump (10.1016/j.jsc.2010.01.006_b55) 1999
Alpuente (10.1016/j.jsc.2010.01.006_b7) 2005; 5
10.1016/j.jsc.2010.01.006_b16
López-Fraguas (10.1016/j.jsc.2010.01.006_b47) 1999; vol. 1631
Milner (10.1016/j.jsc.2010.01.006_b50) 1997
Wirth (10.1016/j.jsc.2010.01.006_b61) 1971; 14
Antoy (10.1016/j.jsc.2010.01.006_b8) 1992; vol. 632
Antoy (10.1016/j.jsc.2010.01.006_b13) 2000; vol. 1794
Antoy (10.1016/j.jsc.2010.01.006_b9) 1997; vol. 1298
Antoy (10.1016/j.jsc.2010.01.006_b12) 2000; 47
Christiansen (10.1016/j.jsc.2010.01.006_b26) 2008; vol. 4989
Dershowitz (10.1016/j.jsc.2010.01.006_b27) 1990
Alpuente (10.1016/j.jsc.2010.01.006_b4) 1996
10.1016/j.jsc.2010.01.006_b41
Lloyd (10.1016/j.jsc.2010.01.006_b46) 1999
(10.1016/j.jsc.2010.01.006_b21) 2003
Aït-Kaci (10.1016/j.jsc.2010.01.006_b2) 1990; vol. 504
(10.1016/j.jsc.2010.01.006_b38) 2006
Braßel (10.1016/j.jsc.2010.01.006_b23) 2008; 216
10.1016/j.jsc.2010.01.006_b44
(10.1016/j.jsc.2010.01.006_b59) 1993
Lux (10.1016/j.jsc.2010.01.006_b48) 1999; vol. 1722
Giovannetti (10.1016/j.jsc.2010.01.006_b34) 1991; 42
Antoy (10.1016/j.jsc.2010.01.006_b14) 2005; vol. 3901
Antoy (10.1016/j.jsc.2010.01.006_b10) 2001
Fischer (10.1016/j.jsc.2010.01.006_b33) 2008
10.1016/j.jsc.2010.01.006_b30
(10.1016/j.jsc.2010.01.006_b40) 2008
Dershowitz (10.1016/j.jsc.2010.01.006_b28) 1988; vol. 11
10.1016/j.jsc.2010.01.006_b37
Echahed (10.1016/j.jsc.2010.01.006_b29) 2008; vol. 5214
O’Donnell (10.1016/j.jsc.2010.01.006_b53) 1985
Fay (10.1016/j.jsc.2010.01.006_b31) 1979
Hanus (10.1016/j.jsc.2010.01.006_b39) 2007; vol. 4670
Hullot (10.1016/j.jsc.2010.01.006_b42) 1980; vol. 87
Baader (10.1016/j.jsc.2010.01.006_b19) 1998
Alpuente (10.1016/j.jsc.2010.01.006_b5) 1998; 9
Albert (10.1016/j.jsc.2010.01.006_b3) 2002; 2002
Hanus (10.1016/j.jsc.2010.01.006_b36) 1994; 19&20
Klop (10.1016/j.jsc.2010.01.006_b45) 1992; vol. II
Sheard (10.1016/j.jsc.2010.01.006_b58) 2007; 174
Alpuente (10.1016/j.jsc.2010.01.006_b6) 2005; 5
Antoy (10.1016/j.jsc.2010.01.006_b18) 2001
10.1016/j.jsc.2010.01.006_b20
Hussmann (10.1016/j.jsc.2010.01.006_b43) 1992; 12
10.1016/j.jsc.2010.01.006_b1
Fischer (10.1016/j.jsc.2010.01.006_b32) 2007
Reddy (10.1016/j.jsc.2010.01.006_b56) 1985
Antoy (10.1016/j.jsc.2010.01.006_b17) 2005; vol. 3474
(10.1016/j.jsc.2010.01.006_b54) 1999
10.1016/j.jsc.2010.01.006_b24
González Moreno (10.1016/j.jsc.2010.01.006_b35) 1999; 40
(10.1016/j.jsc.2010.01.006_b25) 2007
Robinson (10.1016/j.jsc.2010.01.006_b57) 1965; 12
Tolmach (10.1016/j.jsc.2010.01.006_b60) 2004
Antoy (10.1016/j.jsc.2010.01.006_b11) 2005; 40
Antoy (10.1016/j.jsc.2010.01.006_b15) 2006; vol. 4079
O’Donnell (10.1016/j.jsc.2010.01.006_b52) 1977; vol. 58
References_xml – volume: 19&20
  start-page: 583
  year: 1994
  end-page: 628
  ident: b36
  article-title: The integration of functions into logic programming: From theory to practice
  publication-title: Journal of Logic Programming
– volume: 2002
  year: 2002
  ident: b3
  article-title: A practical partial evaluator for a multi-paradigm declarative language
  publication-title: Journal of Functional and Logic Programming
– reference: Echahed, R., Janodet, J.C., 1997. On constructor-based graph rewriting systems. Tech. Rep. 985-I, IMAG.
– year: 1988
  ident: b22
  article-title: Introduction to Functional Programming
– start-page: 243
  year: 1990
  end-page: 320
  ident: b27
  article-title: Rewrite systems
  publication-title: Handbook of Theoretical Computer Science B: Formal Methods and Semantics
– start-page: 45
  year: 1996
  end-page: 61
  ident: b4
  article-title: Narrowing-driven partial evaluation of functional logic programs
  publication-title: ESOP ’96: Proceedings of the 6th European Symposium on Programming Languages and Systems
– start-page: 3
  year: 1999
  end-page: 61
  ident: b55
  article-title: Term graph rewriting
  publication-title: Handbook of Graph Grammars, Vol. 2
– volume: vol. 3474
  start-page: 108
  year: 2005
  end-page: 125
  ident: b17
  article-title: A virtual machine for functional logic computations
  publication-title: Proc. of the 16th International Workshop on Implementation and Application of Functional Languages
– start-page: 161
  year: 1979
  end-page: 167
  ident: b31
  article-title: First-order unification in an equational theory
  publication-title: Proc. 4th Workshop on Automated Deduction
– volume: 12
  start-page: 191
  year: 1992
  end-page: 223
  ident: b51
  article-title: Logic programming with functions and predicates: The language BABEL
  publication-title: Journal of Logic Programming
– volume: 216
  start-page: 111
  year: 2008
  end-page: 124
  ident: b23
  article-title: Declaring numbers
  publication-title: Electronic Notes in Theoretical Computer Science
– volume: 5
  start-page: 273
  year: 2005
  end-page: 303
  ident: b7
  article-title: Specialization of functional logic programs based on needed narrowing
  publication-title: Theory and Practice of Logic Programming
– volume: vol. 87
  start-page: 318
  year: 1980
  end-page: 334
  ident: b42
  article-title: Canonical forms and unification
  publication-title: Proc. 5th Conference on Automated Deduction
– volume: vol. II
  start-page: 1
  year: 1992
  end-page: 112
  ident: b45
  article-title: Term Rewriting Systems
  publication-title: Handbook of Logic in Computer Science
– volume: vol. 1794
  start-page: 171
  year: 2000
  end-page: 185
  ident: b13
  article-title: Compiling multi-paradigm declarative programs into Prolog
  publication-title: Proceedings of the Third International Workshop on Frontiers of Combining Systems
– year: 1985
  ident: b53
  article-title: Equational Logic as a Programming Language
– start-page: 199
  year: September 2001
  end-page: 206
  ident: b10
  article-title: Constructor-based conditional narrowing
  publication-title: Proc. of the 3rd International Conference on Principles and Practice of Declarative Programming
– year: 2006
  ident: b38
  publication-title: Curry: An Integrated Functional Logic Language (Vers. 0.8.2)
– volume: 12
  start-page: 237
  year: 1992
  end-page: 255
  ident: b43
  article-title: Nondeterministic algebraic specifications and nonconfluent rewriting
  publication-title: Journal of Logic Programming
– volume: vol. 504
  start-page: 42
  year: 1990
  end-page: 58
  ident: b2
  article-title: An overview of LIFE
  publication-title: Proceedings of the Workshop on Next Generation Information System Technology
– reference: Barry, B., 1996. Needed narrowing as the computational strategy of evaluable functions in an extension of Gödel. Master’s thesis, Portland State University.
– volume: vol. 1298
  start-page: 16
  year: 1997
  end-page: 30
  ident: b9
  article-title: Optimal non-deterministic functional logic computations
  publication-title: Proceedings of the Sixth International Conference on Algebraic and Logic Programming
– volume: vol. 4989
  start-page: 322
  year: 2008
  end-page: 336
  ident: b26
  article-title: EasyCheck — test data for free
  publication-title: Proc. of the 9th International Symposium on Functional and Logic Programming
– reference: ISO, 1995. Information technology–Programming languages — Prolog–Part 1. General Core. ISO/IEC 13211-1, 1995.
– volume: 47
  start-page: 776
  year: 2000
  end-page: 822
  ident: b12
  article-title: A needed narrowing strategy
  publication-title: Journal of the ACM
– volume: 40
  start-page: 875
  year: 2005
  end-page: 903
  ident: b11
  article-title: Evaluation strategies for functional logic programming
  publication-title: Journal of Symbolic Computation
– volume: 14
  start-page: 221
  year: 1971
  end-page: 227
  ident: b61
  article-title: Program development by stepwise refinement
  publication-title: Communications of the ACM
– volume: 5
  start-page: 273
  year: 2005
  end-page: 303
  ident: b6
  article-title: Specialization of functional logic programs based on needed narrowing
  publication-title: Theory and Practice of Logic Programming
– volume: 20
  start-page: 123
  year: 2007
  end-page: 160
  ident: b49
  article-title: Symbolic reachability analysis using narrowing and its application to verification of cryptographic protocols
  publication-title: Higher-Order and Symbolic Computation
– start-page: 207
  year: 2001
  end-page: 217
  ident: b18
  article-title: An implementation of narrowing strategies
  publication-title: Proc. of the 3rd International Conference on Principles and Practice of Declarative Programming
– volume: 174
  start-page: 105
  year: 2007
  end-page: 128
  ident: b58
  article-title: Type-level computation using narrowing in
  publication-title: Electronic Notes in Theoretical Computer Science
– volume: vol. 3901
  start-page: 6
  year: 2005
  end-page: 22
  ident: b14
  article-title: Declarative programming with function patterns
  publication-title: 15th Int’nl Symp. on Logic-based Program Synthesis and Transformation
– year: 1993
  ident: b59
  publication-title: Term Graph Rewriting Theory and Practice
– volume: vol. 58
  year: 1977
  ident: b52
  article-title: Computing in systems described by equations
  publication-title: Springer LNCS
– start-page: 138
  year: 1985
  end-page: 151
  ident: b56
  article-title: Narrowing as the operational semantics of functional languages
  publication-title: International Symposium on Logic Programming
– year: 1997
  ident: b50
  article-title: The Definition of Standard ML — Revised
– reference: Hanus, M., 1997. A unified computation model for functional and logic programming. In: Proceedings of the 24th ACM Symposium on Principles of Programming Languages, POPL’97, pp. 80–93.
– volume: vol. 5214
  start-page: 84
  year: 2008
  end-page: 98
  ident: b29
  article-title: Inductively sequential term-graph rewrite systems
  publication-title: Graph Transformations, 4th International Conference
– reference: Hanus, M., Kuchen, H., Moreno-Navarro, J.J., 1995. Curry: A truly functional logic language. In: Proceedings of the ILPS’95 Workshop on Visions for the Future of Logic Programming. Portland, Oregon, pp. 95–107.
– start-page: 90
  year: 2004
  end-page: 102
  ident: b60
  article-title: Implementing functional logic languages using multiple threads and stores
  publication-title: Proc. of the 2004 International Conference on Functional Programming
– year: 1999
  ident: b54
  publication-title: Haskell 98: A Non-strict, Purely Functional Language
– start-page: 1
  year: 1999
  end-page: 49
  ident: b46
  article-title: Programming in an integrated functional and logic language
  publication-title: Journal of Functional and Logic Programming
– volume: 40
  start-page: 47
  year: 1999
  end-page: 87
  ident: b35
  article-title: An approach to declarative programming based on a rewriting logic
  publication-title: The Journal of Logic Programming
– volume: vol. 632
  start-page: 143
  year: 1992
  end-page: 157
  ident: b8
  article-title: Definitional trees
  publication-title: Proceedings of the Third International Conference on Algebraic and Logic Programming
– reference: ACM,, 2000. ACM Pacific NW Region Programming Contest. Available at
– start-page: 63
  year: 2007
  end-page: 74
  ident: b32
  article-title: Systematic generation of glass-box test cases for functional logic programs
  publication-title: PPDP ’07: Proceedings of the 9th ACM SIGPLAN International Conference on Principles and Practice of Declarative Programming
– volume: 12
  start-page: 23
  year: 1965
  end-page: 41
  ident: b57
  article-title: A machine-oriented logic based on the resolution principle
  publication-title: Journal of ACM
– reference: Antoy, S., Hanus, M., 2009. Set functions for functional logic programming. In: Proceedings of the 11th ACM SIGPLAN International Conference on Principles and Practice of Declarative Programming, PPDP 2009, Lisbon, Portugal, pp. 73–82.
– year: 2008
  ident: b33
  article-title: Data-flow testing of declarative programs
  publication-title: ICFP’08: Proceedings of the 13th ACM SIGPLAN International Conference on Functional Programming
– year: 2007
  ident: b25
  publication-title: TOY: A Multiparadigm Declarative Language (version 2.3.1)
– volume: vol. 1631
  start-page: 244
  year: 1999
  end-page: 247
  ident: b47
  article-title: TOY: A multiparadigm declarative system
  publication-title: Proceedings of the Tenth International Conference on Rewriting Techniques and Applications
– year: 1998
  ident: b19
  article-title: Term Rewriting and All That
– volume: 9
  year: 1998
  ident: b5
  article-title: A unifying view of functional and logic program specialization
  publication-title: ACM Computing Surveys
– volume: vol. 1722
  start-page: 100
  year: 1999
  end-page: 113
  ident: b48
  article-title: Implementing encapsulated search for a lazy functional logic language
  publication-title: Proc. 4th Fuji Intl. Symposium on Functional and Logic Programming
– reference: Brassel, B., Huch, F., 2007. The Kiel Curry System KiCS. In: Seipel, D., Hanus, M. (Eds.), Preproceedings of the 21st Workshop on (Constraint) Logic Programming, WLP 2007, Würzburg, Germany, Technical Report 434, pp. 215–223.
– volume: vol. 4670
  start-page: 45
  year: 2007
  end-page: 75
  ident: b39
  article-title: Multi-paradigm declarative languages
  publication-title: Proceedings of the International Conference on Logic Programming
– year: 2003
  ident: b21
  publication-title: Term Rewriting Systems
– volume: vol. 11
  start-page: 21
  year: 1988
  end-page: 56
  ident: b28
  article-title: Equational programming
  publication-title: Machine Intelligence
– volume: 42
  start-page: 139
  year: 1991
  end-page: 185
  ident: b34
  article-title: Kernel LEAF: A logic plus functional language
  publication-title: The Journal of Computer and System Sciences
– volume: vol. 4079
  start-page: 87
  year: 2006
  end-page: 101
  ident: b15
  article-title: Overlapping rules and logic variables in functional logic programs
  publication-title: Twenty Second International Conference on Logic Programming
– year: 2008
  ident: b40
  publication-title: PAKCS 1.9.1: The Portland Aachen Kiel Curry System
– reference: (accessed 16.03.09).
– volume: vol. 11
  start-page: 21
  year: 1988
  ident: 10.1016/j.jsc.2010.01.006_b28
  article-title: Equational programming
– volume: 9
  year: 1998
  ident: 10.1016/j.jsc.2010.01.006_b5
  article-title: A unifying view of functional and logic program specialization
  publication-title: ACM Computing Surveys
– start-page: 199
  year: 2001
  ident: 10.1016/j.jsc.2010.01.006_b10
  article-title: Constructor-based conditional narrowing
– year: 1998
  ident: 10.1016/j.jsc.2010.01.006_b19
– volume: 174
  start-page: 105
  issue: 7
  year: 2007
  ident: 10.1016/j.jsc.2010.01.006_b58
  article-title: Type-level computation using narrowing in Ωmega
  publication-title: Electronic Notes in Theoretical Computer Science
  doi: 10.1016/j.entcs.2006.10.040
– volume: 216
  start-page: 111
  year: 2008
  ident: 10.1016/j.jsc.2010.01.006_b23
  article-title: Declaring numbers
  publication-title: Electronic Notes in Theoretical Computer Science
  doi: 10.1016/j.entcs.2008.06.037
– volume: vol. 1298
  start-page: 16
  year: 1997
  ident: 10.1016/j.jsc.2010.01.006_b9
  article-title: Optimal non-deterministic functional logic computations
– start-page: 90
  year: 2004
  ident: 10.1016/j.jsc.2010.01.006_b60
  article-title: Implementing functional logic languages using multiple threads and stores
– ident: 10.1016/j.jsc.2010.01.006_b37
  doi: 10.1145/263699.263710
– volume: vol. 4989
  start-page: 322
  year: 2008
  ident: 10.1016/j.jsc.2010.01.006_b26
  article-title: EasyCheck — test data for free
– volume: 2002
  issue: 1
  year: 2002
  ident: 10.1016/j.jsc.2010.01.006_b3
  article-title: A practical partial evaluator for a multi-paradigm declarative language
  publication-title: Journal of Functional and Logic Programming
– volume: vol. 87
  start-page: 318
  year: 1980
  ident: 10.1016/j.jsc.2010.01.006_b42
  article-title: Canonical forms and unification
– volume: vol. 4670
  start-page: 45
  year: 2007
  ident: 10.1016/j.jsc.2010.01.006_b39
  article-title: Multi-paradigm declarative languages
– volume: 19&20
  start-page: 583
  year: 1994
  ident: 10.1016/j.jsc.2010.01.006_b36
  article-title: The integration of functions into logic programming: From theory to practice
  publication-title: Journal of Logic Programming
  doi: 10.1016/0743-1066(94)90034-5
– ident: 10.1016/j.jsc.2010.01.006_b41
– volume: vol. II
  start-page: 1
  year: 1992
  ident: 10.1016/j.jsc.2010.01.006_b45
  article-title: Term Rewriting Systems
– volume: 42
  start-page: 139
  year: 1991
  ident: 10.1016/j.jsc.2010.01.006_b34
  article-title: Kernel LEAF: A logic plus functional language
  publication-title: The Journal of Computer and System Sciences
  doi: 10.1016/0022-0000(91)90009-T
– year: 1988
  ident: 10.1016/j.jsc.2010.01.006_b22
– start-page: 161
  year: 1979
  ident: 10.1016/j.jsc.2010.01.006_b31
  article-title: First-order unification in an equational theory
– volume: 20
  start-page: 123
  issue: 1–2
  year: 2007
  ident: 10.1016/j.jsc.2010.01.006_b49
  article-title: Symbolic reachability analysis using narrowing and its application to verification of cryptographic protocols
  publication-title: Higher-Order and Symbolic Computation
  doi: 10.1007/s10990-007-9000-6
– volume: 12
  start-page: 191
  year: 1992
  ident: 10.1016/j.jsc.2010.01.006_b51
  article-title: Logic programming with functions and predicates: The language BABEL
  publication-title: Journal of Logic Programming
  doi: 10.1016/0743-1066(92)90024-W
– volume: vol. 632
  start-page: 143
  year: 1992
  ident: 10.1016/j.jsc.2010.01.006_b8
  article-title: Definitional trees
– ident: 10.1016/j.jsc.2010.01.006_b1
– start-page: 63
  year: 2007
  ident: 10.1016/j.jsc.2010.01.006_b32
  article-title: Systematic generation of glass-box test cases for functional logic programs
– volume: vol. 3474
  start-page: 108
  year: 2005
  ident: 10.1016/j.jsc.2010.01.006_b17
  article-title: A virtual machine for functional logic computations
– volume: 12
  start-page: 237
  year: 1992
  ident: 10.1016/j.jsc.2010.01.006_b43
  article-title: Nondeterministic algebraic specifications and nonconfluent rewriting
  publication-title: Journal of Logic Programming
  doi: 10.1016/0743-1066(92)90026-Y
– year: 1997
  ident: 10.1016/j.jsc.2010.01.006_b50
– volume: 40
  start-page: 47
  year: 1999
  ident: 10.1016/j.jsc.2010.01.006_b35
  article-title: An approach to declarative programming based on a rewriting logic
  publication-title: The Journal of Logic Programming
  doi: 10.1016/S0743-1066(98)10029-8
– start-page: 3
  year: 1999
  ident: 10.1016/j.jsc.2010.01.006_b55
  article-title: Term graph rewriting
– start-page: 1
  year: 1999
  ident: 10.1016/j.jsc.2010.01.006_b46
  article-title: Programming in an integrated functional and logic language
  publication-title: Journal of Functional and Logic Programming
– start-page: 207
  year: 2001
  ident: 10.1016/j.jsc.2010.01.006_b18
  article-title: An implementation of narrowing strategies
– volume: 47
  start-page: 776
  issue: 4
  year: 2000
  ident: 10.1016/j.jsc.2010.01.006_b12
  article-title: A needed narrowing strategy
  publication-title: Journal of the ACM
  doi: 10.1145/347476.347484
– year: 2008
  ident: 10.1016/j.jsc.2010.01.006_b40
– start-page: 243
  year: 1990
  ident: 10.1016/j.jsc.2010.01.006_b27
  article-title: Rewrite systems
– volume: 40
  start-page: 875
  issue: 1
  year: 2005
  ident: 10.1016/j.jsc.2010.01.006_b11
  article-title: Evaluation strategies for functional logic programming
  publication-title: Journal of Symbolic Computation
  doi: 10.1016/j.jsc.2004.12.007
– volume: vol. 504
  start-page: 42
  year: 1990
  ident: 10.1016/j.jsc.2010.01.006_b2
  article-title: An overview of LIFE
– year: 2007
  ident: 10.1016/j.jsc.2010.01.006_b25
– start-page: 138
  year: 1985
  ident: 10.1016/j.jsc.2010.01.006_b56
  article-title: Narrowing as the operational semantics of functional languages
– volume: 12
  start-page: 23
  issue: 1
  year: 1965
  ident: 10.1016/j.jsc.2010.01.006_b57
  article-title: A machine-oriented logic based on the resolution principle
  publication-title: Journal of ACM
  doi: 10.1145/321250.321253
– ident: 10.1016/j.jsc.2010.01.006_b20
– ident: 10.1016/j.jsc.2010.01.006_b24
– volume: vol. 1794
  start-page: 171
  year: 2000
  ident: 10.1016/j.jsc.2010.01.006_b13
  article-title: Compiling multi-paradigm declarative programs into Prolog
– year: 2006
  ident: 10.1016/j.jsc.2010.01.006_b38
– year: 1993
  ident: 10.1016/j.jsc.2010.01.006_b59
– volume: 5
  start-page: 273
  issue: 3
  year: 2005
  ident: 10.1016/j.jsc.2010.01.006_b6
  article-title: Specialization of functional logic programs based on needed narrowing
  publication-title: Theory and Practice of Logic Programming
  doi: 10.1017/S1471068404002303
– volume: vol. 1722
  start-page: 100
  year: 1999
  ident: 10.1016/j.jsc.2010.01.006_b48
  article-title: Implementing encapsulated search for a lazy functional logic language
– year: 2008
  ident: 10.1016/j.jsc.2010.01.006_b33
  article-title: Data-flow testing of declarative programs
– year: 1985
  ident: 10.1016/j.jsc.2010.01.006_b53
– volume: vol. 5214
  start-page: 84
  year: 2008
  ident: 10.1016/j.jsc.2010.01.006_b29
  article-title: Inductively sequential term-graph rewrite systems
– ident: 10.1016/j.jsc.2010.01.006_b30
– year: 1999
  ident: 10.1016/j.jsc.2010.01.006_b54
– start-page: 45
  year: 1996
  ident: 10.1016/j.jsc.2010.01.006_b4
  article-title: Narrowing-driven partial evaluation of functional logic programs
– volume: vol. 4079
  start-page: 87
  year: 2006
  ident: 10.1016/j.jsc.2010.01.006_b15
  article-title: Overlapping rules and logic variables in functional logic programs
– year: 2003
  ident: 10.1016/j.jsc.2010.01.006_b21
– volume: vol. 58
  year: 1977
  ident: 10.1016/j.jsc.2010.01.006_b52
  article-title: Computing in systems described by equations
– ident: 10.1016/j.jsc.2010.01.006_b16
  doi: 10.1145/1599410.1599420
– volume: vol. 1631
  start-page: 244
  year: 1999
  ident: 10.1016/j.jsc.2010.01.006_b47
  article-title: TOY: A multiparadigm declarative system
– volume: vol. 3901
  start-page: 6
  year: 2005
  ident: 10.1016/j.jsc.2010.01.006_b14
  article-title: Declarative programming with function patterns
– volume: 5
  start-page: 273
  issue: 3
  year: 2005
  ident: 10.1016/j.jsc.2010.01.006_b7
  article-title: Specialization of functional logic programs based on needed narrowing
  publication-title: Theory and Practice of Logic Programming
  doi: 10.1017/S1471068404002303
– ident: 10.1016/j.jsc.2010.01.006_b44
– volume: 14
  start-page: 221
  issue: 4
  year: 1971
  ident: 10.1016/j.jsc.2010.01.006_b61
  article-title: Program development by stepwise refinement
  publication-title: Communications of the ACM
  doi: 10.1145/362575.362577
SSID ssj0009435
Score 1.939374
Snippet Narrowing is a computation implemented by some declarative programming languages. Research in the last decade has produced significant results on the theory...
SourceID crossref
elsevier
SourceType Enrichment Source
Index Database
Publisher
StartPage 501
SubjectTerms Functional logic programming
Narrowing
Program design
Title Programming with narrowing: A tutorial
URI https://dx.doi.org/10.1016/j.jsc.2010.01.006
Volume 45
WOSCitedRecordID wos000276860200002&url=https%3A%2F%2Fcvtisr.summon.serialssolutions.com%2F%23%21%2Fsearch%3Fho%3Df%26include.ft.matches%3Dt%26l%3Dnull%26q%3D
hasFullText 1
inHoldings 1
isFullTextHit
isPrint
journalDatabaseRights – providerCode: PRVESC
  databaseName: ScienceDirect (Freedom Collection)
  customDbUrl:
  eissn: 1095-855X
  dateEnd: 20180228
  omitProxy: false
  ssIdentifier: ssj0009435
  issn: 0747-7171
  databaseCode: AIEXJ
  dateStart: 19950101
  isFulltext: true
  titleUrlDefault: https://www.sciencedirect.com
  providerName: Elsevier
link http://cvtisr.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMwtV3NT8MgFCdm8-DFb-P8Sg_Gg6YGRluKt8Zo1BjjQc1uDVBmXFxdXDXzv_e1QDc_4w5eaEMKLfzo4_F4_B5Cu1JxLkiG_YywyA90rHwBUhB-d6K7nAgRV0xMd5fs6irudPi1jZc3rMIJsDyPRyM--FeoIQ_ALo_OTgF3XSlkwD2ADinADumfgL82Hlf92sqaVzyL9mBzclCUrAUPtpavaunwrS9LruDK2fzl40Z9khfGdAcS5t44cDmLgdnsthYDI1hgCeHDMo5MSkFD6mjRDidEWmiLmtkxNKeIvwheYwPoHfaGyvrLkdJlbjzLuJ31T5NP7RLovM16KVSRllWkmKQVm3qzzUIOEquZnJ90LsaUyoEJn-pa4_asK--9T9_xvdYxoUncLKJ529deYqBbQjM6X0YLLryGZ6XtCtqbQNIrkfRqJI-8xHM4rqLb05Ob4zPfhrXwVZuzwg-V7gosNcY6yGgQEU1pJKExWRTHWisRdjGVLMAiplRHsWQStCyMhcykbEORNdTIn3K9jjwulOBMwSJUsUCTUGoqaZsq0hUZXEQLYdfsVFnO9zL0yGP6Y3e30H5dZGAIT357OHB9mVqNzWhiKYyLn4ttTPOOTTQ3HsRbqFE8v-htNKtei4fh844dFO8HoF82
linkProvider Elsevier
openUrl ctx_ver=Z39.88-2004&ctx_enc=info%3Aofi%2Fenc%3AUTF-8&rfr_id=info%3Asid%2Fsummon.serialssolutions.com&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.atitle=Programming+with+narrowing%3A+A+tutorial&rft.jtitle=Journal+of+symbolic+computation&rft.au=Antoy%2C+Sergio&rft.date=2010-05-01&rft.issn=0747-7171&rft.volume=45&rft.issue=5&rft.spage=501&rft.epage=522&rft_id=info:doi/10.1016%2Fj.jsc.2010.01.006&rft.externalDBID=n%2Fa&rft.externalDocID=10_1016_j_jsc_2010_01_006
thumbnail_l http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/lc.gif&issn=0747-7171&client=summon
thumbnail_m http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/mc.gif&issn=0747-7171&client=summon
thumbnail_s http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/sc.gif&issn=0747-7171&client=summon