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,...
| Autores: | , , , , |
|---|---|
| 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 Sí |
| 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 |