Skip to main content

sicm

- **Generic arithmetic** extensible across numeric types

Quellinformationen

Repository
plurigrid/asi
Letzte Quellaktivität
10. Juni 2026 um 11:55
Erkannte Sprache von SKILL.md
Englisch
Sterne
67
Forks
12

Installationsoptionen

Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.

Quelldateien prüfen

Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.

Datei-Explorer
3 Dateien

SKILL.md wird angezeigt

SKILL.md
Quellanweisungen · Schreibgeschützte Vorschau
name
sicm
description
- **Generic arithmetic** extensible across numeric types
metadata
{"interface_ports":["References","Commands","Integration with"]}
trit
0
# SICM Skill - Structure and Interpretation of Classical Mechanics > *"The variational formulation of mechanics is coordinate-independent and leads to a systematic computational approach."* > — Sussman & Wisdom ## Overview **SICMUtils** is a Clojure/ClojureScript implementation of scmutils—the computer algebra system from MIT's SICM course. It provides: - **Generic arithmetic** extensible across numeric types - **Symbolic computation** with automatic differentiation - **Functional differential geometry** on manifolds - **Lagrangian/Hamiltonian mechanics** with Noether's theorem **Trit**: 0 (ERGODIC - Coordinator between SICP abstractions and physical mechanics) ## Architecture ``` ┌────────────────────────────────────────────────────────────┐ │ sicmutils.env │ │ (batteries-included namespace) │ └─────────────────────────┬──────────────────────────────────┘ │ ┌─────────────────────┼─────────────────────┐ │ │ │ ┌───▼────────┐ ┌─────▼──────┐ ┌──────▼─────┐ │ mechanics/ │ │ calculus/ │ │ numerical/ │ │ Lagrangian │ │ manifold │ │ integration│ │ Hamiltonian│ │ vector-fld │ │ optimize │ │ Noether │ │ form-field │ │ ODE solve │ └────────────┘ └────────────┘ └────────────┘ │ │ │ └─────────────────┼────────────────────┘ │ ┌─────────────────────┼─────────────────────┐ │ │ │ ┌───▼────────┐ ┌─────▼──────┐ ┌──────▼─────┐ │ simplify/ │ │ operator │ │ derivative │ │ polynomial │ │ composition│ │ D, partial │ │ rules │ │ algebra │ │ dual nums │ └────────────┘ └────────────┘ └────────────┘ │ │ │ └─────────────────┼────────────────────┘ │ ┌─────────────────────┼─────────────────────┐ │ │ │ ┌───▼────────┐ ┌─────▼──────┐ ┌──────▼─────┐ │ generic │ │ value │ │ structure │ │ +,-,*,/ │ │ protocol │ │ up/down │ │ extensible│ │ kind,zero? │ │ vectors │ └────────────┘ └────────────┘ └────────────┘ ``` ## Core Namespaces (GF(3) Decomposition) ### MINUS (-1): Verification/Structure | Namespace | Purpose | |-----------|---------| | `sicmutils.value` | Value protocol: `zero?`, `one?`, `kind` | | `sicmutils.generic` | Generic arithmetic operations | | `sicmutils.structure` | Up/down tuple vectors | | `sicmutils.matrix` | Linear algebra | | `sicmutils.simplify.*` | Expression simplification | ### ERGODIC (0): Coordination/Transformation | Namespace | Purpose | |-----------|---------| | `sicmutils.expression` | Symbolic expression trees | | `sicmutils.operator` | Operator algebra composition | | `sicmutils.function` | Higher-order function utilities | | `sicmutils.calculus.derivative` | D operator, partials | | `sicmutils.calculus.manifold` | Differentiable manifolds | | `sicmutils.calculus.coordinate` | Coordinate systems | ### PLUS (+1): Generation/Execution | Namespace | Purpose | |-----------|---------| | `sicmutils.differential` | Dual numbers for AD | | `sicmutils.abstract.number` | Symbolic numeric literals | | `sicmutils.abstract.function` | Literal functions | | `sicmutils.mechanics.lagrange` | Lagrangian mechanics | | `sicmutils.mechanics.hamilton` | Hamiltonian mechanics | | `sicmutils.numerical.*` | Numerical integration | ## Key Concepts ### 1. Generic Arithmetic (Extensible Tower) ```clojure (require '[sicmutils.env :as e]) ;; Works on numbers (e/* 3 4) ;=> 12 ;; Works on symbols (e/* 'x 'y) ;=> (* x y) ;; Works on functions ((e/* e/sin e/cos) 'x) ;=> (* (sin x) (cos x)) ;; Extend to custom types via protocols ``` ### 2. Automatic Differentiation (D Operator) ```clojure ;; D is the derivative operator (e/D e/sin) ;=> cos ((e/D e/sin) 'x) ;=> (cos x) ;; Higher derivatives ((e/expt e/D 2) e/sin) ;=> -sin ;; Partial derivatives ((e/partial 0) (fn [[x y]] (e/* x y))) ; ∂/∂x(xy) = y ``` ### 3. Structures (Up/Down Vectors) ```clojure ;; Up = contravariant (coordinate-like) (e/up 1 2 3) ;; Down = covariant (momentum-like) (e/down 1 2 3) ;; Lagrangian state: (t, q, q̇) (e/up 't (e/up 'x 'y) (e/up 'vx 'vy)) ;; Hamiltonian state: (t, q, p) (e/up 't (e/up 'x 'y) (e/down 'px 'py)) ``` ### 4. Lagrangian Mechanics ```clojure (require '[sicmutils.mechanics.lagrange :as L]) ;; Free particle Lagrangian: L = T - V = ½mv² (defn L-free-particle [mass] (fn [[_ _ v]] (e/* (e// 1 2) mass (e/square v)))) ;; Euler-Lagrange equations (L/Lagrange-equations (L-free-particle 'm)) ;; Action functional (L/Lagrangian-action L q t1 t2) ``` ### 5. Manifolds and Differential Geometry ```clojure (require '[sicmutils.calculus.manifold :as m]) (require '[sicmutils.calculus.coordinate :as c]) ;; Define R² with rectangular coordinates (def R2 (m/make-manifold m/Rn 2)) (def rect (c/coordinate-system-at 'rectangular :origin R2)) ;; Vector fields (def d:dx (c/vector-field rect 0)) (def d:dy (c/vector-field rect 1)) ;; Differential forms (def dx (c/oneform-field rect 0)) (def dy (c/oneform-field rect 1)) ;; Lie derivative, exterior derivative, etc. ``` ### 6. Simplification ```clojure (require '[sicmutils.simplify :as s]) ;; Simplify expressions (s/simplify (e/+ (e/square (e/sin 'x)) (e/square (e/cos 'x)))) ;=> 1 ;; Render to LaTeX (e/->TeX (e/simplify expr)) ;; Render to infix (e/->infix (e/simplify expr)) ``` ## SICP → SICM Bridge The progression from SICP to SICM: | SICP Chapter | SICM Connection | |--------------|-----------------| | Ch 1: Procedures | Generic operations, function composition | | Ch 2: Data abstraction | Structures, symbolic expressions | | Ch 3: Assignment & state | Lagrangian/Hamiltonian state | | Ch 4: Metalinguistic | Expression simplifier, rule system | | Ch 5: Register machines | Numerical integrators | ### Shared Patterns ```scheme ;; SICP: deriv procedure (define (deriv exp var) ...) ;; SICM: D operator on symbolic expressions ((D (literal-function 'f)) 'x) ``` ## Incremental Update Schema For semantic world closure with incremental updates: ```clojure (def sicm-acset-schema {:objects [:Namespace :Symbol :Expression :Operator] :morphisms {:depends [:Namespace :Namespace] :defines [:Namespace :Symbol] :uses [:Expression :Symbol] :applies [:Operator :Expression]} :attributes {:trit [:Namespace :GF3] :kind [:Symbol :Keyword] :arity [:Operator :Int]}}) ;; Incremental update: only recompute changed subgraph (defn incremental-update [delta-expr sicm-graph] (let [affected (transitive-deps delta-expr sicm-graph) unchanged (set/difference (all-nodes sicm-graph) affected)] (-> sicm-graph (invalidate-nodes affected) (recompute-nodes affected) (verify-gf3-conservation)))) ``` ## World Closure SICM completes the semantic world by bridging: ``` SICP (abstraction) ←→ SICM (mechanics) ←→ FDG (geometry) λ-calculus variational manifolds procedures Lagrangians vector fields data abstraction state tuples differential forms interpreters simplifiers coordinate systems ``` --- ## End-of-Skill Interface ## Commands ```bash # Add dependency clj -Sdeps '{:deps {sicmutils/sicmutils {:mvn/version "0.23.0"}}}' # REPL with SICMUtils clj -M -e "(require '[sicmutils.env :refer :all])" # ClojureScript (browser/Node) shadow-cljs watch sicm-app # With Babashka (limited - no symbolic) bb -e "(require '[sicmutils.value :as v]) (v/zero? 0)" ``` ## Integration with Gay.jl / GF(3) ### Namespace → Trit Mapping ```clojure ;; Use Gay.jl colors to track namespace triads (def namespace-trits {"sicmutils.value" -1 ; foundation "sicmutils.generic" -1 ; arithmetic "sicmutils.structure" -1 ; data "sicmutils.operator" 0 ; coordination "sicmutils.expression" 0 ; symbolic "sicmutils.derivative" 0 ; calculus bridge "sicmutils.lagrange" +1 ; mechanics "sicmutils.hamilton" +1 ; dynamics "sicmutils.numerical" +1 ; execution }) ;; GF(3) conserved per layer: ;; 3×(-1) + 3×(0) + 3×(+1) = 0 ✓ ``` ### Color Coding for Expressions ```clojure ;; Map expression types to Gay.jl palette (defn expr-color [expr seed] (let [kind (value/kind expr) idx (case kind ::number 1 ::symbol 2 ::structure 3 ::operator 4 ::function 5 6)] (gay/color-at seed idx))) ``` ## References - [SICM Book](https://mitpress.mit.edu/sites/default/files/sicm/book.html) (Sussman & Wisdom) - [SICMUtils GitHub](https://github.com/sicmutils/sicmutils) - [Emmy (successor)](https://github.com/mentat-collective/emmy) - [FDG Book](https://mitpress.mit.edu/9780262019347/) (Functional Differential Geometry) - [cljdoc Reference](https://cljdoc.org/d/sicmutils/sicmutils) --- **Skill**: sicm **Trit**: 0 (ERGODIC - bridges SICP abstraction to physical mechanics) **GF(3) Triad**: `sicp (-1) ⊗ sicm (0) ⊗ fdg (+1) = 0` **Status**: Ready for incremental semantic updates --- ## Autopoietic Marginalia > **The interaction IS the skill improving itself.** Every use of this skill is an opportunity for worlding: - **MEMORY** (-1): Record what was learned - **REMEMBERING** (0): Connect patterns to other skills - **WORLDING** (+1): Evolve the skill based on use *Add Interaction Exemplars here as the skill is used.* ## REPL siblings Julia family: `sicmutils` · `sicp` · `julia-scientific` · `julia-gay` · `julia-gpu-kernels` · `julia-tempering` · `quarto-julia`. Atlas: `repl-commons`.
Auf GitHub ansehen