Galois connections and computer science applications
Proceedings of a tutorial and workshop on Category theory and computer programming
Algebra of programming
A calculational approach to mathematical induction
Theoretical Computer Science
Principles of Database Systems
Principles of Database Systems
Software Development: A Rigorous Approach
Software Development: A Rigorous Approach
Algorithms + Data Structures = Programs
Algorithms + Data Structures = Programs
A Discipline of Programming
The Art of Computer Programming, 2nd Ed. (Addison-Wesley Series in Computer Science and Information
The Art of Computer Programming, 2nd Ed. (Addison-Wesley Series in Computer Science and Information
Galois connections and fixed point calculus
Algebraic and coalgebraic methods in the mathematics of program construction
Program Construction: Calculating Implementations from Specifications
Program Construction: Calculating Implementations from Specifications
Software Abstractions: Logic, Language, and Analysis
Software Abstractions: Logic, Language, and Analysis
Is abstraction the key to computing?
Communications of the ACM
'Galculator': functional prototype of a Galois-connection based proof assistant
Proceedings of the 10th international ACM SIGPLAN conference on Principles and practice of declarative programming
Extended Static Checking by Calculation Using the Pointfree Transform
Language Engineering and Rigorous Software Development
Pointfree factorization of operation refinement
FM'06 Proceedings of the 14th international conference on Formal Methods
Relations as executable specifications: taming partiality and non-determinism using invariants
RAMiCS'12 Proceedings of the 13th international conference on Relational and Algebraic Methods in Computer Science
Hi-index | 0.00 |
Problem statements often resort to superlatives such as in eg. ". . . the smallest such number", ". . . the best approximation", ". . . the longest such list" which lead to specifications made of two parts: one defining a broad class of solutions (the easy part) and the other requesting the optimal such solution (the hard part). This paper introduces a binary relational combinator which mirrors this linguistic structure and exploits its potential for calculating programs by optimization. This applies in particular to specifications written in the form of Galois connections, in which one of the adjoints delivers the optimal solution being sought. The framework encompasses re-factoring of results previously developed by Bird and de Moor for greedy and dynamic programming, in a way which makes them less technically involved and therefore easier to understand and play with.