Hiord# : An Approach to the Specification and Verification of Higher-Order (C)LP Programs

Higher-order constructs enable more expressive and concise code by allowing procedures to be parameterized by other procedures. Assertions allow expressing partial program specifications, which can be verified either at compile time (statically) or run time (dynamically). In higher- order programs,...

ver descrição completa

Detalhes bibliográficos
Autores: Ciccalè, Marco, Jurjo-Rivas, Daniel, Morales, José F., López-García, Pedro, Hermenegildo, Manuel
Tipo de documento: artigo
Estado:Versão publicada
Data de publicação:2025
País:España
Recursos:Consejo Superior de Investigaciones Científicas (CSIC)
Repositório:DIGITAL.CSIC. Repositorio Institucional del CSIC
OAI Identifier:oai:dnet:digitalcsic_::e465709676fecc4297797139e5a02457
Acesso em linha:http://hdl.handle.net/10261/428442
Access Level:Acceso aberto
Palavra-chave:Higher-order, , , ,
Static analysis
Assertions
Abstract interpretation
(Constraint) logic programming
id ES_a44fb89ee654fc618f4cddd75cc20eb0
oai_identifier_str oai:dnet:digitalcsic_::e465709676fecc4297797139e5a02457
network_acronym_str ES
network_name_str España
repository_id_str
spelling Hiord# : An Approach to the Specification and Verification of Higher-Order (C)LP ProgramsCiccalè, MarcoJurjo-Rivas, DanielMorales, José F.López-García, PedroHermenegildo, ManuelHigher-order, , , ,Static analysisAssertionsAbstract interpretation(Constraint) logic programmingHigher-order constructs enable more expressive and concise code by allowing procedures to be parameterized by other procedures. Assertions allow expressing partial program specifications, which can be verified either at compile time (statically) or run time (dynamically). In higher- order programs, assertions can also describe higher-order arguments. While in the context of (constraint) logic programming ((C)LP), run-time verification of higher-order assertions has received some attention, compile-time verification remains relatively unexplored. We propose a novel approach for statically verifying higher-order (C)LP programs with higher-order assertions. Although we use the Ciao assertion language for illustration, our approach is quite general, and we believe is applicable to similar contexts. Higher-order arguments are described using predicate properties – a special kind of property which exploits the (Ciao) assertion language. We refine the syntax and semantics of these properties and introduce an abstract criterion to determine conformance to a predicate property at compile time, based on a semantic order relation comparing the predicate property with the predicate assertions. We then show how to handle these properties using an abstract interpretation-based static analyzer for programs with first-order assertions by reducing predicate properties to first-order properties. Finally, we report on a prototype implementation and evaluate it through various examples within the Ciao system.Partially funded by MICIU projects CEX2024-001471-M María de Maeztu and TED2021-132464B-I00 PRODIGY , as well as by the Tezos foundation. We would also like to thank the anonymous reviewers for their very useful and constructive feedback.Peer reviewedCambridge University PressMinisterio de Ciencia e Innovación (España)Consejo Superior de Investigaciones Científicas [https://ror.org/02gfc7t72]202620262025info:eu-repo/semantics/articlehttp://purl.org/coar/resource_type/c_6501Publisher's versioninfo:eu-repo/semantics/publishedVersionhttp://hdl.handle.net/10261/428442reponame:DIGITAL.CSIC. Repositorio Institucional del CSICinstname:Consejo Superior de Investigaciones Científicas (CSIC)Inglés#PLACEHOLDER_PARENT_METADATA_VALUE##PLACEHOLDER_PARENT_METADATA_VALUE#info:eu-repo/grantAgreement/MCIU//CEX2024-001471-Minfo:eu-repo/grantAgreement/MCIU//TED2021-132464B-I00Síinfo:eu-repo/semantics/openAccessoai:dnet:digitalcsic_::e465709676fecc4297797139e5a024572026-05-22T06:33:51Z
dc.title.none.fl_str_mv Hiord# : An Approach to the Specification and Verification of Higher-Order (C)LP Programs
title Hiord# : An Approach to the Specification and Verification of Higher-Order (C)LP Programs
spellingShingle Hiord# : An Approach to the Specification and Verification of Higher-Order (C)LP Programs
Ciccalè, Marco
Higher-order, , , ,
Static analysis
Assertions
Abstract interpretation
(Constraint) logic programming
title_short Hiord# : An Approach to the Specification and Verification of Higher-Order (C)LP Programs
title_full Hiord# : An Approach to the Specification and Verification of Higher-Order (C)LP Programs
title_fullStr Hiord# : An Approach to the Specification and Verification of Higher-Order (C)LP Programs
title_full_unstemmed Hiord# : An Approach to the Specification and Verification of Higher-Order (C)LP Programs
title_sort Hiord# : An Approach to the Specification and Verification of Higher-Order (C)LP Programs
dc.creator.none.fl_str_mv Ciccalè, Marco
Jurjo-Rivas, Daniel
Morales, José F.
López-García, Pedro
Hermenegildo, Manuel
author Ciccalè, Marco
author_facet Ciccalè, Marco
Jurjo-Rivas, Daniel
Morales, José F.
López-García, Pedro
Hermenegildo, Manuel
author_role author
author2 Jurjo-Rivas, Daniel
Morales, José F.
López-García, Pedro
Hermenegildo, Manuel
author2_role author
author
author
author
dc.contributor.none.fl_str_mv Ministerio de Ciencia e Innovación (España)
Consejo Superior de Investigaciones Científicas [https://ror.org/02gfc7t72]
dc.subject.none.fl_str_mv Higher-order, , , ,
Static analysis
Assertions
Abstract interpretation
(Constraint) logic programming
topic Higher-order, , , ,
Static analysis
Assertions
Abstract interpretation
(Constraint) logic programming
description Higher-order constructs enable more expressive and concise code by allowing procedures to be parameterized by other procedures. Assertions allow expressing partial program specifications, which can be verified either at compile time (statically) or run time (dynamically). In higher- order programs, assertions can also describe higher-order arguments. While in the context of (constraint) logic programming ((C)LP), run-time verification of higher-order assertions has received some attention, compile-time verification remains relatively unexplored. We propose a novel approach for statically verifying higher-order (C)LP programs with higher-order assertions. Although we use the Ciao assertion language for illustration, our approach is quite general, and we believe is applicable to similar contexts. Higher-order arguments are described using predicate properties – a special kind of property which exploits the (Ciao) assertion language. We refine the syntax and semantics of these properties and introduce an abstract criterion to determine conformance to a predicate property at compile time, based on a semantic order relation comparing the predicate property with the predicate assertions. We then show how to handle these properties using an abstract interpretation-based static analyzer for programs with first-order assertions by reducing predicate properties to first-order properties. Finally, we report on a prototype implementation and evaluate it through various examples within the Ciao system.
publishDate 2025
dc.date.none.fl_str_mv 2025
2026
2026
dc.type.none.fl_str_mv info:eu-repo/semantics/article
http://purl.org/coar/resource_type/c_6501
Publisher's version
info:eu-repo/semantics/publishedVersion
format article
status_str publishedVersion
dc.identifier.none.fl_str_mv http://hdl.handle.net/10261/428442
url http://hdl.handle.net/10261/428442
dc.language.none.fl_str_mv Inglés
language_invalid_str_mv Inglés
dc.relation.none.fl_str_mv #PLACEHOLDER_PARENT_METADATA_VALUE#
#PLACEHOLDER_PARENT_METADATA_VALUE#
info:eu-repo/grantAgreement/MCIU//CEX2024-001471-M
info:eu-repo/grantAgreement/MCIU//TED2021-132464B-I00

dc.rights.none.fl_str_mv info:eu-repo/semantics/openAccess
eu_rights_str_mv openAccess
dc.publisher.none.fl_str_mv Cambridge University Press
publisher.none.fl_str_mv Cambridge University Press
dc.source.none.fl_str_mv reponame:DIGITAL.CSIC. Repositorio Institucional del CSIC
instname:Consejo Superior de Investigaciones Científicas (CSIC)
instname_str Consejo Superior de Investigaciones Científicas (CSIC)
reponame_str DIGITAL.CSIC. Repositorio Institucional del CSIC
collection DIGITAL.CSIC. Repositorio Institucional del CSIC
repository.name.fl_str_mv
repository.mail.fl_str_mv
_version_ 1869415486866849792
score 15,811543