In the Grandi model, the h and j gating variables seem to have redundant definitions where they have both (alpha_X, beta_X) and (tau_X, X_inf) pairs, which the EasyML tutorial warns against.

What would be the benefit of redundant definitions in this case? Do the ternary definitions of (alpha_X, beta_X) help "constrain" the equation better? And how would the redundancy be handled?

```
ah = ((V >= -40)
? 0
: (0.057 * exp( -(V + 80) / 6.8 ))
);
bh = ((V >= -40)
? (0.77 / (0.13*(1 + exp( -(V + 10.66) / 11.1 ))))
: ((2.7 * exp( 0.079 * V) + 3.1e5 * exp(0.3485 * V)))
);
tau_h = 1 / (ah + bh);
hss_factor = (1 + exp( (V + 71.55)/7.43 ));
h_infinity = 1 / (hss_factor*hss_factor);
aj = ((V >= -40)
? (0)
: (((-2.5428 * 10e4*exp(0.2444*V) - 6.948e-6 * exp(-0.04391*V)) * (V + 37.78)) /
(1 + exp( 0.311 * (V + 79.23) )))
);
bj = ((V >= -40)
? ((0.6 * exp( 0.057 * V)) / (1 + exp( -0.1 * (V + 32) )))
: ((0.02424 * exp( -0.01052 * V )) / (1 + exp( -0.1378 * (V + 40.14) )))
);
tau_j = 1 / (aj + bj);
jss_factor = (1 + exp( (V + 71.55)/7.43 ));
j_infinity = 1 / (jss_factor*jss_factor);
```