Hi, I want to know how to code properly for Cadabra. I read the section on programming in "The Cadabra Book" pdf but I need a little more explanation on programming new properties (like "::Coordinate")

I want to generate two new properties

- "Normal" can be applied to a 1D tensor (vector or covector)
- "Orthogonal" can be applied to any tensor (that is not a scalar)

Then if I have an expression with contraction of two tensors then I will write a function such that

- if the two tensors are normal vectors then their contraction is -1
- if one tensor is orthogonal and the other is a normal (co)vector then their contraction is 0