Standalone Symbolics-only prototype validating the feasibility of implementing the Modelica homotopy(actual, simplified) operator for initialization in ModelingToolkit.jl. Supporting evidence for SciML/ModelingToolkit.jl#1385 (see also #3988 / #4039).
Scope: Symbolics layer only. No MTK fork modifications, no upstream PR yet — this repo exists purely to back the RFC comment with reproducible evidence.
prototypes/— isolated Julia environment + 4 experiment scripts covering basic registration, nestedhomotopycollapse,IfElse.ifelsebranches, and broadcast vectorization. Seeprototypes/README.mdfor how to run.notes/prototype-findings.md— full writeup of each experiment's setup, conclusion, and implications for a future MTK PR.
A single SymbolicUtils.Postwalk(PassThrough(@rule homotopy(~a, ~s) => ~a)) pass handles all four corner cases tested. No new Symbolics traversal API is required; no Fixpoint wrap is required; the corresponding MTK change would land at a single dispatch point in src/initialization.jl. Full details in notes/prototype-findings.md.
cd prototypes
julia --project=. -e 'using Pkg; Pkg.instantiate()'
julia --project=. experiments/01_basic_register.jl
julia --project=. experiments/02_nesting.jl
julia --project=. experiments/03_branches.jl
julia --project=. experiments/04_vectorization.jlEach script exits 0 on success and prints QN OK.
Pinned via prototypes/Manifest.toml. Tested with Julia 1.12.4 / Symbolics 6.58.0 / SymbolicUtils 3.32.0 / IfElse 0.1.1.
MIT.