From f495e84477c962e46dfbb97410ea3d178e6c4e34 Mon Sep 17 00:00:00 2001 From: Aayush Sabharwal Date: Fri, 15 May 2026 11:32:02 +0530 Subject: [PATCH 1/3] refactor: allow `eliminate_perfect_aliases!` when `solvable_graph` exists --- src/systems/alias_elimination.jl | 1 - 1 file changed, 1 deletion(-) diff --git a/src/systems/alias_elimination.jl b/src/systems/alias_elimination.jl index b5e668febb..b8ca0423da 100644 --- a/src/systems/alias_elimination.jl +++ b/src/systems/alias_elimination.jl @@ -82,7 +82,6 @@ function find_perfect_aliases!( (; sys, fullvars, structure) = state (; graph, solvable_graph, var_to_diff, state_priorities) = structure - @assert solvable_graph === nothing diff_to_var = invview(var_to_diff) aliases = Dict{Int, Int}() subs = Dict{SymbolicT, SymbolicT}() From a084f6195f88b2c17d0ed312d78af318f6621c85 Mon Sep 17 00:00:00 2001 From: Aayush Sabharwal Date: Fri, 15 May 2026 11:32:47 +0530 Subject: [PATCH 2/3] refactor: return aliasing information from `eliminate_perfect_aliases!` --- src/systems/alias_elimination.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/systems/alias_elimination.jl b/src/systems/alias_elimination.jl index b8ca0423da..60a7c658f3 100644 --- a/src/systems/alias_elimination.jl +++ b/src/systems/alias_elimination.jl @@ -37,7 +37,7 @@ function eliminate_perfect_aliases!(state::TearingState) old_to_new_eq, old_to_new_var = StateSelection.rm_eqs_vars!( state, eqs_to_rm, vars_to_rm; eqs_sorted_and_uniqued = true ) - return nothing + return aliases, old_to_new_eq, old_to_new_var end """ From 47ce9fb3b0566b56e4008f8667b35d8bfec6cbd8 Mon Sep 17 00:00:00 2001 From: Aayush Sabharwal Date: Fri, 15 May 2026 11:33:31 +0530 Subject: [PATCH 3/3] refactor: re-run `eliminate_perfect_aliases!` after `alias_elimination!` --- src/systems/systemstructure.jl | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/systems/systemstructure.jl b/src/systems/systemstructure.jl index 38ba4aa48d..9546e8d663 100644 --- a/src/systems/systemstructure.jl +++ b/src/systems/systemstructure.jl @@ -213,6 +213,9 @@ function _mtkcompile!( eliminate_perfect_aliases!(state) StateSelection.trivial_tearing!(state) sys, mm = ModelingToolkit.alias_elimination!(state; fully_determined, kwargs...) + aliases, old_to_new_eq, old_to_new_var = eliminate_perfect_aliases!(state) + sys = state.sys + mm = StateSelection.get_new_mm(aliases, old_to_new_eq, old_to_new_var, mm) if check_consistency fully_determined = StateSelection.check_consistency( state, orig_inputs; nothrow = fully_determined === nothing