SICP: Structure and Interpretation of Computer Programs - computational processes, abstraction, and metalinguistic design
/plugin marketplace add plurigrid/asi/plugin install plurigrid-asi-skills@plurigrid/asiThis skill inherits all available tools. When active, it can use any tool Claude has access to.
"Programs must be written for people to read, and only incidentally for machines to execute." — Abelson & Sussman
Geometric morphism translation from sicp.info preserving the hierarchical node structure as an ACSet with GF(3) coloring for trifurcated processing.
Structure and Interpretation of Computer Programs (Second Edition)
by Harold Abelson and Gerald Jay Sussman, with Julie Sussman
Foreword by Alan J. Perlis
© 1996 Massachusetts Institute of Technology
The wizard book for computational thinking—procedures as abstractions, data as abstractions, and the interpreter as the ultimate abstraction.
Key concepts: Substitution model, lexical scoping, fixed points, Newton's method
Key concepts: Pairs, cons/car/cdr, closure property, abstraction barriers, message passing
Key concepts: State, identity, time, streams vs objects duality
Key concepts: eval/apply loop, special forms, thunks, amb evaluator, Prolog-style logic
Key concepts: Register allocation, continuation-passing, tail recursion, compilation
The Info file nodes distribute perfectly across GF(3) trits:
Total nodes: 138
MINUS (-1): 46 ████████████████
ERGODIC (0): 46 ████████████████
PLUS (+1): 46 ████████████████
Sum mod 3: 0
Conserved: ✓ BALANCED
This perfect 46/46/46 distribution enables optimal trifurcated parallel processing.
The translation from Info to Skill uses a geometric morphism f: InfoTopos → SkillTopos:
Objects (Ob):
Node - Info nodes (sections, subsections)
Edge - Navigation and reference links
Content - Extracted text and code blocks
Morphisms (Hom):
next: Node → Node - Sequential navigation
prev: Node → Node - Backward navigation
up: Node → Node - Hierarchical parent
menu: Node → Node - Chapter/section containment
xref: Node → Node - Cross-references (*Note)
Attributes:
trit: Node → GF(3) - Deterministic color assignment
text: Node → String - Node content
The GF(3) coloring uses the same SplitMix64 hash as Gay.jl:
using Gay
# Color SICP nodes deterministically
for node in sicp_nodes
seed = hash(node.id)
color = gay_color(seed) # Returns palette with GF(3) trit
node.trit = color.trit
end
# Verify conservation
@assert sum(n.trit for n in sicp_nodes) % 3 == 0
# Read in Emacs
info sicp
# Re-translate with geometric morphism
bb info_to_skill_morphism.bb translate sicp.info
# Verify grammar and GF(3) conservation
bb info_to_skill_morphism.bb verify sicp.info
# Parse to CRDT-style sexp
bb info_to_skill_morphism.bb parse sicp.info > sicp.sexp