View Related Documents

Abstract

Experience using constrain programming to solve real-life problems has shown that finding an efficient solution to a problem often requires experimentation with different constrain solvers or even building a problem-specific solver. HAL is a new constrain logic programming language expressly designed to facilitate this process. In this paper we examine different ways of building solvers in HAL. We explain how type classes can be used to specify solver interfaces, allowing the constrain programmer to support modelling of a constrain problem independently of a particular solver, leading to easy “plug and play” experimentation. We compare a number of different ways of writing a simple solver in HAL: using dynamic scheduling, constrain handling rules and building on an existing solver. We also examine how external solvers may be interfaced with HAL, and approaches for removing interface overhead.

Fulltext Preview

Image of the first page of the fulltext document