Skip to content

Instantly share code, notes, and snippets.

@timfel
Created May 20, 2015 10:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save timfel/50b9bdf88476640c73da to your computer and use it in GitHub Desktop.
Save timfel/50b9bdf88476640c73da to your computer and use it in GitHub Desktop.
TABLE-OF-CONTENTS on ~/papers/phdthesis/Felgentreff_2015_Babelsberg.tex
SPC=view TAB=goto RET=goto+hide [q]uit [r]escan [l]abels [f]ollow [x]r [?]Help
------------------------------------------------------------------------------
Part I Solving Constraints on Object Behavior
1 Introduction
1.1 Challenges
* Constraint Solvers are Non-deterministic ``Magic''
* Object-oriented Imperative Programming is the Norm
* Solvers Are Highly Specialized
* Practical Performance Requires Trade-Offs
1.2 Contributions
1.2.0.0.1 Babelsberg, a Language Design and Formal Semantics for Object-Constraint Programming
1.2.0.0.2 Linguistic and Meta-Level Symbiosis with an Object-Oriented Host Language
1.2.0.0.3 An Architecture for Adding and Using Multiple Cooperating Solvers
1.2.0.0.4 Performant Implementation Techniques and Possible Applications for \ac{ocp}
1.3 Outline
2 State of the Art
2.1 Objects and Determinism in Constraints
2.1.0.0.1 Read-only Annotations
2.2 Uniformity for Imperative and Declarative Code
2.2.0.0.1 Imperative Solving
2.2.0.0.2 Constraint Libaries
2.2.0.0.3 Domain-specific Languages
2.2.0.0.4 Data-Flow and Functional Reactive Programming
2.2.0.0.5 Constraint-Imperative Programming
2.3 General Constraint Solving
2.3.1 Constraint Solving Strategies
2.3.1.1 Local Propagation
2.3.1.2 The Simplex Method
2.3.1.3 Relaxation
2.3.1.4 Backtracking
2.3.1.5 Satisfiability Modulo Theories
2.3.2 Constraint Hierarchies
2.4 Good Performance in Practical Applications
2.4.0.0.1 Incremental Re-Satisfaction
Part II Object-Constraint Programming
3 Design
3.1 Constraints on Primitive Types
3.1.1 Declaring Constraints
3.1.2 Translating and Solving Constraints
3.1.3 Constraints and Mutable State
3.2 Constraints on Messages
3.3 Constraints on Collections of Objects
4 Semantics
4.1 Primitive Types
4.1.1 Formalism
4.1.1.1 Syntax
4.1.1.2 Semantics
4.2 Objects and Messages
4.2.1 Syntax
4.2.2 Operational Semantics
4.2.3 Key Properties
4.3 Collections of Objects
4.4 Executable Specifications
5 An Architecture For Using Multiple Constraint Solvers
Part III Implementations of Object-Constraint Programming
6 Object-Constraint Programming as Language Extension
6.1 Goals
6.2 Implementation
6.2.1 Constrained Variables
6.2.2 Execution Contexts
6.2.2.1 Imperative Execution
6.2.2.2 Constraint Construction
6.2.2.2.1 Constraint Solving
* Constraint Construction Example
6.2.3 Implementing Edit Constraints
6.2.4 Adding New Solvers
7 Object-Constraint Programming as a Library
7.1 Goals
7.2 Implementation
7.2.1 Babelsberg/JS
7.2.2 Assignment
7.2.2.0.1 Set Value
7.2.2.0.2 Update Downstream Variables
7.2.2.0.3 Update Connected Variables
7.2.2.0.4 Deferred Assignment of Connected Variables
7.2.2.0.5 Assigning Mutable Objects
7.2.2.1 Changing the Type of Variables
7.2.3 Constraint Construction
7.2.4 Determining Cooperating Solver Regions
7.2.5 Edit Constraints
7.2.6 Babelsberg/S
8 Discussion of Implementation Approaches
8.1 Complexity of the Design
8.2 Performance Analysis
Part IV Applications with Object-Constraint Programming
9 Writing Constraint Code
9.1 Idioms
9.2 Control Structures
9.2.1 Scoped Constraints
9.2.2 Constraint Layers
9.2.3 Constraint Triggers
10 Understanding Constraint Code
10.1 Debugging
10.2 Introspection
Part V Discussion and Conclusion
11 Related Work
11.1 Constraint Programming Systems
11.2 Constraint Logic Programming
11.3 Constraint Imperative Programming
11.4 Constraint Programming Libraries and DSLs
11.5 Constraints in General Purpose Programming
12 Summary and Outlook
12.1 Discussion
12.2 Future Work
12.3 Conclusions
* Publications
* Journals
* Conferences
* Workshops
* Technical Reports
Part VI Appendix
13 First Unimportant stuff.
14 Curriculum Vit\ae
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment