Chiral three dimensional texts
Haskell, 97 96 95 bytes


-1 byte thanks to nimi




f s=all(r s/=)$foldr($)s&lt;$&gt;mapM(\_-&gt;[id,g,map g])[1..6]
g=r.foldr(zipWith(:))e
r=reverse
e=[]:e


Try it online!

Explanation

Ok, this is a bit mathy. It is well known that the group of rotations as described in the challenge (i.e. the group generated by rotations of 90 degrees around one of the three principal axes) is isomorphic to the symmetric group \$S_4\$, as described here. It is also well known that \$S_4\$ is generated by the elements \$(1\, 2\, 3\, 4),(1\, 3\, 2\, 4)\$.

What I am trying to say is this: fix two distinct axes, and call the 90 degrees rotations about those axes \$r_1\$ and \$r_2\$. Then we can generate all the rotations by repeatedly applying \$r_1\$ and \$r_2\$. A bit of bruteforce shows that we only need up to 6 applications of \$r_1\$ and \$r_2\$.

Thus we have the following algorithm: given a three-dimensional text \$s\$, we apply all possible rotations to \$s\$ and check whether any of those matches \$s\$ flipped along an axis. The rotations are generated by composing up to six 90 degrees rotations about two fixed axes.



g=r.foldr(zipWith(:))e
e=[]:e


g is a 90 degrees rotation of a 2D list (also works on 3D lists, as those can be seen as 2D lists of 1D lists). The foldr(zipWith(:))e is simply transpose from Data.List, but shorter.



f s=all(r s/=)$foldr($)s&lt;$&gt;mapM(\_-&gt;[id,g,map g])[1..6]


f checks whether its argument s is chiral.


mapM(\_-&gt;[id,g,map g])[1..6] generates a list of all sequences of length 6 whose elements are any of id (the identity transformation, i.e. do nothing), g (90 degrees rotation about an axis), map g (90 degrees rotations about a different axis).
given a list [f1,f2,...,f6] of transformations, foldr($)s computes f1(f2(...f6(s)...), and (r s/=) checks whether the result is equal to s reversed (i.e. a mirror image of s).


So what f does is check if any rotation of s matches its mirror image, returning False if it does and True otherwise.