Tienes tu definición de causalidad equivocada. En realidad es mucho más simple y mucho más intuitiva. Un sistema causal es un sistema en el que la salida no depende de los valores futuros de la entrada. Esta propiedad no es exclusiva de los sistemas lineales y puede aplicarse a los sistemas en general. He aquí algunos ejemplos para ilustrar el punto:
Sistema lineal causal invariante en el tiempo:
$$y = x – 2x + 0,5y$$
Aquí $y$ sólo depende de los valores actuales y anteriores de $x$ e $y$.
Sistema lineal no causal e invariante en el tiempo:
$$y = \frac{1}{2}x + \frac{1}{2}x$$
También conocida como media móvil central, esta función es no causal porque para la salida $y$, el término $x$ se asoma al futuro de nuestra entrada.
Sistema causal no lineal e invariable en el tiempo:
$$y = \cos(x)$$
Este es el ejemplo que has proporcionado. Como ya habrás adivinado, dado que nunca miramos una entrada futura, este sistema es causal. De hecho, es incluso más especial que eso. Debido a que la salida actual es una función sólo de la entrada actual (no entradas pasadas o futuras) este sistema se llama un sistema sin memoria.
Sistema lineal causal variable en el tiempo:
$$y = (n+1)x$$
Hice este para ser un poco de un rompecabezas. A primera vista, puede parecer que este sistema no es causal porque hay este término $(n+1)$. Pero esto no importa porque no es un índice de tiempo de $x$. Todavía sólo miramos el valor actual de la entrada y no estamos mirando hacia adelante. Este es también un ejemplo de un sistema sin memoria.
Un complicado sistema causal no lineal variable en el tiempo:
$y = e^nx + \ln\left(\left|x\right|+1\right) – \pi y$$
Es evidente que este es un sistema no causal debido al término $y$, ¿verdad? No es así. Se trata de una definición clásica de un sistema causal recursivo con algunos términos reordenados. Procedemos a llevarlo a una forma más estándar en tres pasos:$$y = e^nx + \ln\left(\left|x\right|+1\right) – \pi y$$$$\pi y = e^nx + \ln\left(\left|x\right|+1\right) – y$$$$\pi y = e^nx + \ln\left(\left|x\right|+1\right) – y$$$$y = \frac{e^nx + \ln\left(\left|x\right|+1\right) – y}{pi}$
La penúltima línea se consiguió sustituyendo $k=n+1$. El truco aquí es que hay una relación entre las salidas en diferentes momentos. Pero una vez que lo resuelves, ninguna salida depende del valor futuro de una entrada en relación a sí misma. La no linealidad y la variación temporal se añadieron para hacerlo más divertido y desafiante. Asegúrate de que entiendes lo que dice esto.
Como puedes ver la causalidad puede ser una propiedad de todo tipo de sistemas y hay muchos más ejemplos divertidos y extraños que uno puede inventar.
Ahora vamos a resolver tu paradoja. La clave está en darse cuenta de que tus definiciones de causalidad y linealidad (y quizás también de invariabilidad temporal) están un poco enredadas y confundidas. Resolver la paradoja de forma divertida es tan fácil como añadir la palabra lineal a tus dos definiciones (la invariabilidad temporal también jugará un papel sutil). He aquí cómo.
Definición 1: Un sistema lineal es causal si y sólo si la salida $y$ es una función de una combinación lineal de las entradas $x$ tal que $k \ge0$.
Esto se debe a que no todos los sistemas son combinaciones lineales de entradas. Los sistemas lineales lo son. Un sistema causal depende sólo de las entradas pasadas y actuales, por lo que un sistema lineal causal es una combinación lineal de entradas actuales y anteriores. En realidad, para ser precisos con la definición, los sistemas lineales son combinaciones lineales tanto de entradas como de salidas, y en los sistemas lineales causales las salidas en el tiempo $n$ no pueden depender de una entrada en el tiempo $m \gt n$.
También,
Definición 2: Un sistema lineal invariante en el tiempo es causal si y sólo si la respuesta al impulso$h=0$ para todo $n<0$.
Esta también es bastante intuitiva. Todas las entradas de $h$ para $k \ ~ 0$ son los coeficientes con los que se multiplican los valores actuales y pasados de $x$ para obtener la salida actual (si el sistema es recursivo es irrelevante para este caso). Obsérvese que esta definición sólo tiene sentido para los sistemas lineales invariantes en el tiempo. Esto se debe a que la convolución sólo existe para aquellos. Veamos por qué es necesaria la linealidad. Si se tiene $h \ne 0$, entonces $x$ está contribuyendo a $y$ y eso es lo que hace que no sea causal. Esto es cierto porque en los sistemas lineales, si nada entra entonces nada sale. Esto no es generalmente cierto para los sistemas no lineales (como en el ejemplo que diste), por lo que esta definición no se aplicaría.
El sistema también tiene que ser invariable en el tiempo porque no puede ser completamente definido por su respuesta al impulso a menos que sea completo en LTI. Si se ejecuta una función de impulso $\delta $ a través del sistema$$y = x + (n+1)x,$$ se va a obtener una salida que es un impulso en sí mismo (causal … ¿no?). Sin embargo, el sistema es claramente no causal. Por eso es importante la invariabilidad temporal. Cuando ejecutas una función de impulso desplazada $\delta$ para $m \ne 0$, su naturaleza no causal comienza a manifestarse.
Así que, dejando de lado toda la palabrería, tu sistema es perfectamente causal, pero tus definiciones sólo se aplican a sistemas lineales, mientras que tu sistema es no lineal. La definición correcta de un sistema causal es que cualquier salida $y$ no puede depender de la entrada $x$ donde $k \gt 0$.