4.8 KiB
4.8 KiB
Geolog Glossary
- Sort — A sort is just a named type of thing. It's the most primitive declaration: "there exists a kind of thing called X." In the Graph theory,
V : Sortsays "there is a kind of thing called vertices" andE : Sortsays "there is a kind of thing called edges." Sorts don't have any structure on their own — they're just labels for categories of elements. - Function — A function maps elements of one sort to elements of another.
src : E -> Vsays "every edge has a source vertex." For binary operations, you use product domains:mul : [x: M, y: M] -> Msays "given two monoid elements, multiplication produces a third." Functions must be total — every element of the domain sort must be assigned a value. - Relation — A relation is like a function but instead of producing a value, it's a proposition that is either true or false.
completed : Item -> Propsays "for any item, it either is or isn't completed." Binary relations likeleq : [lo: X, hi: X] -> Propexpress relationships between pairs of elements. Relations are essentially database tables — a set of tuples for which the predicate holds. - Axiom — An axiom is a rule that must hold in any valid instance. It takes the form of a geometric sequent: some premises on the left of
|-, a conclusion on the right. For example,ax/transin the Preorder theory says "if x ≤ y and y ≤ z, then x ≤ z." The "geometric" restriction means conclusions can only use conjunction (and), existential quantification (there exists), and disjunction (or) — no negation or universal quantification on the right side. This is what makes the chase algorithm work. - Theory — A theory is a complete package: a collection of sorts, functions, relations, and axioms that together define a vocabulary and laws
for some domain. The theory of
Graphsays "there are vertices and edges, and every edge has a source and target vertex." The theory ofCategoryadds composition, identities, and axioms for associativity and unit laws. A theory doesn't describe any particular graph or category — it describes what it means to be one. - Instance — An instance is a concrete, finite model that satisfies a theory. If the theory is the blueprint, the instance is a specific building.
Triangle : Graphsays "here is a specific graph: it has vertices A, B, C, edges ab, bc, ca, and these specific source/target assignments." Every function must be defined for every element, and every axiom must evaluate to true. - The Chase — The chase is the key algorithmic idea. You provide some base facts and the chase automatically derives everything that logically
follows from the axioms. In the transitive closure example, you declare edges A→B, B→C, C→D, and the chase computes all six reachable pairs. You
write
= chase { ... }instead of= { ... }to trigger this. It repeatedly scans for axioms that aren't yet satisfied and adds the necessary facts until everything is consistent — a fixpoint computation. - Equality Saturation — In the Category example, composing identity morphisms with themselves could produce infinite chains (id∘id∘id∘...). Equality saturation collapses these by recognizing that id∘id = id (from the unit laws), merging equivalent elements rather than generating new ones forever. This is what keeps the chase terminating in theories with equations.
- Parameterized (Dependent) Theory — A theory can take an instance of another theory as a parameter.
theory (N : PetriNet instance) Markingmeans "given some specific Petri net N, a Marking assigns tokens to N's places." This is the dependent types angle — the type of a marking depends on the value of a specific net. You can't talk about markings in the abstract; they're always markings of something. - Nested Instance — Inside an instance, you can define sub-instances of parameterized theories inline. In
ReachabilityProblem, theinitial_markingandtarget_markingare instances ofMarkingdefined right there inside the problem instance, using the= { ... }syntax within the outer braces. - Proof Witness / Solution — This is the Petri net showcase's central idea. A
Solutionisn't a boolean "yes, it's reachable." It's a data structure — containing a trace (sequence of firings), wires (how tokens flow between firings), terminals (how tokens connect to initial/target markings), and isomorphisms (proving the token counts match exactly). The fact that you can construct a well-typed instance ofSolutionis the proof. If the types check and all axioms are satisfied, reachability is proven. This is the "propositions as types, proofs as programs" idea from type theory, applied to diagrammatic reasoning.
Changelog
- Feb 27, 2026 -- The first version was created.