Index
Part I: Foundations
1 Introduction to Predica
2 Entity Types as Logical Sorts
3 Cardinality Constraints and 1NF
4 Supplier-and-Parts Database
5 Nesting the Relational Model
6 Cardinality
7 Identity
8 Boolean-valued Attributes
9 Types
10 Database Values and Consistency
11 Closed World Assumption
12 Relvar versus attribute predicates
13 Metadata annotations
14 Pushing relationships down into the entities
15 The Information Principle
16 The Atomicity Paradox
17 The First Great Blunder
18 Design Principles and Features
19 Benefits of a Decomposition into Domains with Unary Predicates
20 Related Work
Part II: Path Expressions
21 Example Schema
22 Navigation
23 Path Tails
24 Filters
25 Tuple Construction
26 Renaming with as
27 This
28 Calculated Attributes
29 Let Bindings
30 Splat
31 Folds
32 Universal Navigation
33 Path Operations
34 Alternatives
35 Conditionals
36 Lists
37 Groups
38 Type Checking Path Expressions
Part III: Constraints
39 Constraint Forms
40 Firearm Purchase Example
41 Construction Project Example
42 Cardinality Constraint Patterns
43 Student Enrolment Courses Example
44 Using Predica to define legality
Part IV: Types
45 Types
46 Built-in Types
47 Structural types
48 Type expressions
49 Type Aliases
50 Equality Between Types
51 Expression literals and constructors
52 Static vs dynamic typing
53 Isomorphisms
54 Objects
Part V: Nominal Types
55 Value Types
56 Entity Types
57 Keys
58 Enumerated Types
59 Variant types
60 Quotient types
61 Attributes
62 Parameterised Attributes
63 Derived Attributes
64 Embedding
65 Generics
66 Ordering
67 Constraints
68 Theorems
Part VI: Subtypes
69 Type graph
70 Necessarily disjoint and non-disjoint
71 Abstract types
72 Subtypes of abstract types
73 Subtypes of concrete types
74 Comparable Types
75 Union types
Part VII: Query
76 Constants
77 Functions
78 Function Overload Resolution
79 Example: Head-Tail List Functions
80 Query Examples
81 Filter Conditions
82 Inverse relationships
83 Views
84 Responsive Applications without async/await
85 Folds
86 Lists
87 Group Aggregation
Part VIII: Relations
88 Relations as Extensions
89 Notation and Surface Syntax
90 Headings, Domains, and Universe
91 Projection and Result Shape
92 Supplier Relation Examples
93 Relational Model Correspondence
94 Supplier/Parts Translation
95 Materialised Accessors
96 Implementation Notes
Part IX: Updates
97 Transactions
98 Read-only Models over Weakly Constrained Data
99 Program Variables as Locations
100 Uninitialised Locations
101 Parameter Access and Ownership
102 Comparison with Rust
103 Variable Updates
104 Constraint-Violating Updates
105 Control Flow
106 Unreachable
107 Runtime Failures and Exceptions
108 Procedures and Effects
109 Entity Creation and Base Updates
110 Block-Bodied Functions
111 Path Expression Updates
Part X: Components
112 Introduction to components
113 Component Manifest
114 Namespaces
115 Using Declarations
116 Name Resolution
117 Schema evolution
118 Standard Library
Part XI: Normalisation
119 1NF
120 2NF
121 3NF
122 BCNF
123 4NF
124 5NF
125 6NF
126 DKNF
127 Misplaced Facts
Part XII: Examples
128 Geometry Example
129 Event Sourcing
130 Box of objects
Part XIII: Syntax
131 Lexical Grammar
132 Syntactic Grammar
133 Source Files and Declarations
134 Statement Grammar
135 Expression Grammar
136 Type Definition Grammar
Part XIV: Semantics
137 Frames
138 Frame Display Forms
139 Frame Construction and Closure
140 Frame Relabelling and Merge
141 Horizontal Frame Operations
142 Vertical Frame Operations
143 Frame Negation, Protected Comprehensions, and Unary Frames
144 Denotation Type Conventions
145 Denotation Terms
146 Denotation Precedence
147 Attribute Cardinality Constraints and Denotation
148 Denotation Environment
149 Denotation of Scalar Terms and Attribute Navigation
150 Denotation of Tuples, Filtering, and Composition
151 Denotation of Path Operations and Alternatives
152 Denotation of Conditionals, Negation, Folds, and Cardinality
153 Denotation of Absence, This, Splat, Let, and Constraints
154 Predicates Induced by Variants and Enums
155 Denotation Examples
156 Examples of correspondence between Predica and logic
157 Denotation of Predica Locations
Part XV: Implementation
158 Data representation
159 Persistent Object Store
160 Snapshot Isolation
161 CEDA MVCC Storage
162 Implementing the Genealogy Example
163 Implementing a Triangulated Mesh
164 Annotator
165 Optimisation
166 Physical independence
167 Chunk size
168 Query Optimisation
169 Reference Implementation
Part XII: Examples
Previous
127 Misplaced Facts
Next
128 Geometry Example