Is there a function that outputs True if lists are isomorphic (there exists a rule that changes the first list into the second one and inverse of the rule changes the second list into the first one) and False otherwise?
If there is no such function implemented in Mathematica, can you provide a shorter code than mine?
I was also considering that IsomorphicGraphQ can be somehow used to do the job but I did not find anything.
a = {1, 2, 2, 3};
b = {3, 7, 7, 8};
c = {3, 7, 7, 3};
d = {5, 3, 3, 1};
And @@ DuplicateFreeQ /@ (Transpose[#] // Union // Transpose) &@{a, b}
And @@ DuplicateFreeQ /@ (Transpose[#] // Union // Transpose) &@{b, c}
And @@ DuplicateFreeQ /@ (Transpose[#] // Union // Transpose) &@{a, d}
And @@ DuplicateFreeQ /@ (Transpose[#] // Union // Transpose) &@{a, b, d}
And @@ DuplicateFreeQ /@ (Transpose[#] // Union // Transpose) &@{a, b, c}
True
False
True
True
False