{"title":"Constraint Logic Programming for program analysis","authors":"J. Jaffar","doi":"10.1145/1378279.1378281","DOIUrl":null,"url":null,"abstract":"Constraint Logic Programming (CLP) has been traditionally applied to the modelling of complex problems, especially combinatorial problems, and to model knowledge bases. In this presentation, we focus on using CLP for program analysis and verification. First we consider the representation of program behavior: the rules and constraints of CLP provides for a natural specification of programs as a symbolic guarded transition system. The CLP execution model can then capture the symbolic traces of the underlying program, and these traces, in turn, divulge the properties that we seek. Secondly, we use the CLP formalism for the formal specification of complex properties of data structures. Here the CLP execution model can be used as a theorem-prover to dispense with the proof obligations arising from the program and its specifications. The traditional CLP execution model, however, is not automatically practical for these purposes. We shall present two refinements to CLP: one for reducing the number of symbolic traces that are needed to prove a property, and one to efficiently deal with data structure properties.","PeriodicalId":136130,"journal":{"name":"Australasian Computer Science Conference","volume":"28 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"2","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"Australasian Computer Science Conference","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1145/1378279.1378281","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 2
Abstract
Constraint Logic Programming (CLP) has been traditionally applied to the modelling of complex problems, especially combinatorial problems, and to model knowledge bases. In this presentation, we focus on using CLP for program analysis and verification. First we consider the representation of program behavior: the rules and constraints of CLP provides for a natural specification of programs as a symbolic guarded transition system. The CLP execution model can then capture the symbolic traces of the underlying program, and these traces, in turn, divulge the properties that we seek. Secondly, we use the CLP formalism for the formal specification of complex properties of data structures. Here the CLP execution model can be used as a theorem-prover to dispense with the proof obligations arising from the program and its specifications. The traditional CLP execution model, however, is not automatically practical for these purposes. We shall present two refinements to CLP: one for reducing the number of symbolic traces that are needed to prove a property, and one to efficiently deal with data structure properties.