Inverse of symbolic matrix

To elaborate on why true is a good choice here, consider the following trivial function, if we define it using false, we see that false is adaptive in the sense that multiplying with false will make the result have the same type as the input, irrespective of what the type is:

julia> multiply_by_zero(x) = false*x
multiply_by_zero (generic function with 1 method)

julia> multiply_by_zero(true)
false

julia> multiply_by_zero(1)
0

julia> multiply_by_zero(1f0)
0.0f0

julia> multiply_by_zero(1.0)
0.0

julia> multiply_by_zero(big"1.0")
0.0

Had we defined the function using a floating-point value, we see that the type of the result is different from the type of the input whenever the input type is smaller than Float64

julia> multiply_by_zero(x) = 0.0*x
multiply_by_zero (generic function with 1 method)

julia> multiply_by_zero(true)
0.0

julia> multiply_by_zero(1)
0.0

julia> multiply_by_zero(1f0)
0.0

julia> multiply_by_zero(1.0)
0.0

julia> multiply_by_zero(big"1.0")
0.0

julia> 
3 Likes