A polymorphic library for constructive solid geometry

1995 ◽  
Vol 5 (3) ◽  
pp. 415-442
Author(s):  
J. R. Davy ◽  
P. M. Dew

AbstractSolid modelling using constructive solid geometry (CSG) includes many examples of stylised divide-and-conquer algorithms. We identify the sources of these recurrent patterns and describe a Geometric Evaluation Library (GEL) which captures them as higher-order functions. This library then becomes the basis of developing CSG applications quickly and concisely. GEL is currently implemented as a set of separately compiled modules in the pure functional language Hope+. We evaluate our work in terms of performance and general applicability. We also assess the benefits of the functional paradigm in this domain and the merits of programming with a set of higher-order functions.

10.29007/1tkw ◽  
2018 ◽  
Author(s):  
Emmanuel Hainry ◽  
Romain Péchoux

We design an interpretation-based theory of higher-order functions that is well-suited for the complexity analysis of a standard higher- order functional language a` la ml. We manage to express the interpretation of a given program in terms of a least fixpoint and we show that when restricted to functions bounded by higher-order polynomials, they characterize exactly classes of tractable functions known as Basic Feasible Functions at any order.


Author(s):  
Z. Jiang ◽  
K. Cheng ◽  
D. K. Harrison

Abstract This paper presents an integration approach to solid modelling and finite element method (FEM) analysis on the components design of a scroll type of compressors which are becoming popular and widely used in refrigeration and air conditioners. It is time consuming to design and manufacture a scroll compressor since its two key components are complex shaped and high precision requirements. The authors use C++ programming and Pro/ENGINEER to implement the proposed approach and associated design development. Constructive solid geometry (CSG) modelling of two scroll components are created and presented. FEM analysis is used to further consolidate the modelling with respect to force and heat influences, etc. The paper concludes with a discussion on the potential of the proposed approach in mechanical product design.


2000 ◽  
Vol 10 (02n03) ◽  
pp. 239-250 ◽  
Author(s):  
CHRISTOPH A. HERRMANN ◽  
CHRISTIAN LENGAUER

We propose the higher-order functional style for the parallel programming of algorithms. The functional language [Formula: see text], a subset of the language Haskell, facilitates the clean integration of skeletons into a functional program. Skeletons are predefined programming schemata with an efficient parallel implementation. We report on our compiler, which translates [Formula: see text] programs into C+MPI, especially on the design decisions we made. Two small examples, the n queens problem and Karatsuba's polynomial multiplication, are presented to demonstrate the programming comfort and the speedup one can obtain.


Author(s):  
S. T. Tan ◽  
M. F. Yuen ◽  
W. S. Sze ◽  
W. Y. Wong

Abstract This paper presents two algorithms for NC (Numerical Control) machining of engineering parts defined as a CSG (Constructive Solid Geometry) (1) model. The algorithms are respectively for automatically roughing out the approximate shape using octree and quadtree encoding techniques and for machining the final shape with fine cuts. In this paper, the two algorithms are referred to as rough machining and fine machining and form the Hong Kong University’s NC module for the PADL-2 solid modelling system developed by the Production Automation Project of Rochester University. The NC module with its own command language is embedded into PADL-2. Parts defined with the PADL-2 system can be machined using this module on a 3-axis machining centre via a hardwired link. Examples of the parts machined with this set-up are also illustrated in this paper.


2008 ◽  
Vol 18 (5-6) ◽  
pp. 865-911 ◽  
Author(s):  
ALEKSANDAR NANEVSKI ◽  
GREG MORRISETT ◽  
LARS BIRKEDAL

AbstractWe consider the problem of reconciling a dependently typed functional language with imperative features such as mutable higher-order state, pointer aliasing, and nontermination. We propose Hoare type theory (HTT), which incorporates Hoare-style specifications into types, making it possible to statically track and enforce correct use of side effects.The main feature of HTT is the Hoare type {P}x:A{Q} specifying computations with preconditionPand postconditionQthat return a result of typeA. Hoare types can be nested, combined with other types, and abstracted, leading to a smooth integration with higher-order functions and type polymorphism.We further show that in the presence of type polymorphism, it becomes possible to interpret the Hoare types in the “small footprint” manner, as advocated by separation logic, whereby specifications tightly describe the state required by the computation.We establish that HTT is sound and compositional, in the sense that separate verifications of individual program components suffice to ensure the correctness of the composite program.


Author(s):  
A. Saia ◽  
M. S. Bloor ◽  
A. de Pennington

Abstract The integration of sculptured surface and solid modelling techniques across a common geometric domain continues as an active source of research and development in computer aided geometric design. Although much progress has been made, fundamental difficulties remain due to the differing approaches to shape representation and subsequent evaluation found in the two modelling paradigms. The first part of the paper reviews some of the issues arising when addressing the integration of existing sculptured surface representations into a Constructive Solid Geometry (CSG) based solid modeller. The second part describes work at Leeds which proposes the use of a new evaluation technique known as ISOS (Inner Set Outer Set) for CSG defined objects which incorporate both quadric and B-spline surface geometry.


1998 ◽  
Vol 8 (1) ◽  
pp. 23-60 ◽  
Author(s):  
P. W. TRINDER ◽  
K. HAMMOND ◽  
H.-W. LOIDL ◽  
S. L. PEYTON JONES

The process of writing large parallel programs is complicated by the need to specify both the parallel behaviour of the program and the algorithm that is to be used to compute its result. This paper introduces evaluation strategies: lazy higher-order functions that control the parallel evaluation of non-strict functional languages. Using evaluation strategies, it is possible to achieve a clean separation between algorithmic and behavioural code. The result is enhanced clarity and shorter parallel programs. Evaluation strategies are a very general concept: this paper shows how they can be used to model a wide range of commonly used programming paradigms, including divide-and-conquer parallelism, pipeline parallelism, producer/consumer parallelism, and data-oriented parallelism. Because they are based on unrestricted higher-order functions, they can also capture irregular parallel structures. Evaluation strategies are not just of theoretical interest: they have evolved out of our experience in parallelising several large-scale parallel applications, where they have proved invaluable in helping to manage the complexities of parallel behaviour. Some of these applications are described in detail here. The largest application we have studied to date, Lolita, is a 40,000 line natural language engineering system. Initial results show that for these programs we can achieve acceptable parallel performance, for relatively little programming effort.


2001 ◽  
Vol 12 (02) ◽  
pp. 125-170 ◽  
Author(s):  
RALF HINZE

The purpose of this article is twofold. First, we show that Prolog's control constructs can be smoothly integrated into a functional language like Haskell. The resulting 'language', termed embedded Prolog, incorporates many of the features prescribed by the Prolog ISO standard: control constructs including the cut, all solution collecting functions, and error handling facilities. Embedded Prolog lacks some concepts such as logical variables but it inherits all of Haskell's strengths, eg static polymorphic typing, higher order functions etc. Technically, the integration is achieved using monads and monad transformers. One of the main innovations is the definition of a backtracking monad transformer, which allows us to combine backtracking with exception handling and interaction. Second, we work towards an axiomatization of the operations, through which the computational features are accessed. Equations are used to lay down the meaning of the various operations and their interrelations enabling the programmer to reason about programs in a simple calculational style. The axiomatization is applied to show that each finite computation has a simple canonical form.


Sign in / Sign up

Export Citation Format

Share Document