# disc_delta_proj defines a map from X to the closed unit disc.
#@ disc_delta_proj
disc_delta_proj := (x::RR_4) -> [
(x[1]-x[2])/sqrt(2),
x[3]
]:
#@ disc_delta_lift_aux
disc_delta_lift_aux := (z::RR_2) -> sqrt((1-z[1]^2-z[2]^2)/(4*a_E^2*z[1]^2*z[2]^2+(2*a_E^2-(1+a_E^2)*z[2]^2)^2)):
#@ disc_delta_lift
disc_delta_lift := (z::RR_2) -> [
((2*a_E^2 - (1+a_E^2)*z[2]^2) * disc_delta_lift_aux(z) + z[1])/sqrt(2),
((2*a_E^2 - (1+a_E^2)*z[2]^2) * disc_delta_lift_aux(z) - z[1])/sqrt(2),
z[2],
2*a_E*z[1]*z[2]*disc_delta_lift_aux(z)
]:
#@ act_disc_delta
act_disc_delta[1] := (z::RR_2) -> z;
act_disc_delta[LL] := (z::RR_2) -> [-z[1], z[2]];
act_disc_delta[LM] := (z::RR_2) -> [-z[1],-z[2]];
act_disc_delta[LLLM] := (z::RR_2) -> [ z[1],-z[2]];
act_disc_delta[LN] := (z::RR_2) -> [-z[1], z[2]];
act_disc_delta[LLLN] := (z::RR_2) -> [ z[1], z[2]];
act_disc_delta[MN] := (z::RR_2) -> [ z[1],-z[2]];
act_disc_delta[LLMN] := (z::RR_2) -> [-z[1],-z[2]];
######################################################################
#@ disc_pi_proj
disc_pi_proj := (x::RR_4) -> [x[1],x[2]]:
#@ act_disc_pi
act_disc_pi[1] := (x::RR_2) -> [ x[1], x[2]];
act_disc_pi[L] := (x::RR_2) -> [-x[2], x[1]];
act_disc_pi[LL] := (x::RR_2) -> [-x[1],-x[2]];
act_disc_pi[LLL] := (x::RR_2) -> [ x[2],-x[1]];
act_disc_pi[M] := (x::RR_2) -> [ x[1],-x[2]];
act_disc_pi[LM] := (x::RR_2) -> [ x[2], x[1]];
act_disc_pi[LLM] := (x::RR_2) -> [-x[1], x[2]];
act_disc_pi[LLLM] := (x::RR_2) -> [-x[2],-x[1]];
act_disc_pi[N] := (x::RR_2) -> [ x[1],-x[2]];
act_disc_pi[LN] := (x::RR_2) -> [ x[2], x[1]];
act_disc_pi[LLN] := (x::RR_2) -> [-x[1], x[2]];
act_disc_pi[LLLN] := (x::RR_2) -> [-x[2],-x[1]];
act_disc_pi[MN] := (x::RR_2) -> [ x[1], x[2]];
act_disc_pi[LMN] := (x::RR_2) -> [-x[2], x[1]];
act_disc_pi[LLMN] := (x::RR_2) -> [-x[1],-x[2]];
act_disc_pi[LLLMN]:= (x::RR_2) -> [ x[2],-x[1]];
######################################################################
#@ disc_zeta_proj
disc_zeta_proj := (x::RR_4) -> [(x[3]-x[4])/sqrt(2),x[2]];
#@ act_disc_zeta
act_disc_zeta[1] := (x::RR_2) -> [ x[1], x[2]];
act_disc_zeta[LL] := (x::RR_2) -> [ x[1],-x[2]];
act_disc_zeta[M] := (x::RR_2) -> [-x[1],-x[2]];
act_disc_zeta[LLM] := (x::RR_2) -> [-x[1], x[2]];
act_disc_zeta[N] := (x::RR_2) -> [ x[1],-x[2]];
act_disc_zeta[LLN] := (x::RR_2) -> [ x[1], x[2]];
act_disc_zeta[MN] := (x::RR_2) -> [-x[1], x[2]];
act_disc_zeta[LLMN] := (x::RR_2) -> [-x[1],-x[2]];