Advanced Search
Search Results
12 total results found
Chapter 2: The Anatomy of Unification
The word "unification" is borrowed from mathematical logic, where it names the process of finding a substitution that makes two expressions identical. That definition is precise and complete. The engineer who internalises it — rather than reaching for the comf...
Chapter 3: The Static Knowledge Base
Every inference engine requires a foundation of facts it treats as unconditionally true. In Prolog, this foundation is the Knowledge Base (KB): the complete set of facts and rules loaded into the WAM at any given moment. The correctness of every derivation the...
Chapter 4: Search and Backtracking
Prolog's execution model is not a function call graph. It is a search. Every query the engine receives is a problem statement — "find all substitutions for these variables that make this formula true" — and the engine's job is to explore the space of possible ...
Chapter 7: List Processing and Recursion
An imperative loop is a mutable index advancing through a mutable array under a termination condition checked at runtime. It has three moving parts — the counter, the array pointer, and the termination predicate — all of which can be wrong independently. It al...
Chapter 11: Parsing System Logs
/var/log/auth.log on a busy SSH-exposed host grows at several megabytes per day. A year's worth of auth logs on a cluster's edge node is routinely 2–10GB. The naive approach — read_file_to_string/3, then string_codes/2, then a DCG over the entire code list — a...
Chapter 15: The CGO Bridge
An HTTP/REST boundary between a Go microservice and a Prolog inference engine introduces three costs that are unacceptable for microsecond-latency orchestration: TCP stack traversal, JSON serialisation and deserialisation on both sides, and the scheduling late...
Chapter 1: The Sovereign Paradigm
Before a single line of Prolog is written, the engineer must understand why this technology is being chosen. Not because it is fashionable — it is decidedly not — but because it is correct for a specific class of infrastructure problem that imperative tools ha...
Chapter 6: Control Flow and The Cut (!)
Backtracking is Prolog's correctness mechanism: it exhausts all proof paths, guaranteeing that every solution is found. For general logic programming this is a virtue. For infrastructure control predicates — where a predicate must produce exactly one answer, w...
Chapter 8: Advanced Data Structures (Dicts)
Every infrastructure record is a named collection of typed fields: a host has a name, a MAC address, a RAM capacity, a storage layout, a cluster role. In the KB architecture of Chapters 1–7, these fields are encoded as positional arguments in compound terms: p...
Chapter 9: Meta-Programming & State Management
Prolog has one data type: the term. Rules, facts, queries, and data values are all terms. A clause physical_host('pve-node-01', 'AA:BB:CC:DD:EE:01', 256) is a term with functor physical_host and arity 3. A rule can_migrate(VM, Host) :- ... is a term with funct...
Chapter 12: Declarative Configuration
Every configuration management tool in production infrastructure does the same thing: it takes a template, substitutes variables, and writes a string to disk. Ansible's template module renders Jinja2. Puppet uses ERB. Terraform interpolates HCL. The output is ...
Chapter 10: Definite Clause Grammars (DCGs)
A regular expression is a finite automaton description encoded as a write-only string. The engineer who writes ^(\d{1,3}\.){3}\d{1,3}$ cannot debug it by reading it. The engineer who inherits it cannot modify it without first reverse-engineering what it was at...