thanks.
seems that SymbolicUtils.jl and ModelingToolkit.jl are in pure Julia (is it true?) so that they could seamlessly integrated with Julia. On the other hand, seems that Reduce.jl is from a more mature system and has a more complete documentation.
for example, I cannot find in ModelingToolkit manual about how to get v[1,2] below:
julia> @variables u[1:3,1:3]
(Operation[u₁ˏ₁ u₁ˏ₂ u₁ˏ₃; u₂ˏ₁ u₂ˏ₂ u₂ˏ₃; u₃ˏ₁ u₃ˏ₂ u₃ˏ₃],)
julia> v = LinearAlgebra.det(u)
(((1u₁ˏ₁) * (u₂ˏ₂ - (u₂ˏ₁ * inv(u₁ˏ₁)) * u₁ˏ₂)) * ((u₃ˏ₃ - (u₃ˏ₁ * inv(u₁ˏ₁)) * u₁ˏ₃) - ((u₃ˏ₂ - (u₃ˏ₁ * inv(u₁ˏ₁)) * u₁ˏ₂) * inv(u₂ˏ₂ - (u₂ˏ₁ * inv(u₁ˏ₁)) * u₁ˏ₂)) * (u₂ˏ₃ - (u₂ˏ₁ * inv(u₁ˏ₁)) * u₁ˏ₃))) * 1
julia> typeof(v)
Operation
julia> typeof(u)
Array{Operation,2}
julia> u[1,2]
u₁ˏ₂
julia> v[1,2]
ERROR: BoundsError
or, did I miss any documentation besides SymbolicUtils and ModelingToolkit?