(* vstupni stav v H/V bazi - R polarizace *)

s=1/Sqrt[2]{1,I}

(* retardace v H/V bazi, tj rotace v R/D rovine *)

ret={{1,0},{0,Exp[I ϕ]}}

(* inverzni operace *)

retinv={{1,0},{0,Exp[-I ϕ]}}

(* referencni vystup - L polarizace *)

sout1=Simplify[(ret/.ϕ->π).s]

s.Conjugate[sout1]

(* rotace v H/V bazi, tj rotace v H/D rovine  *)

rot={{Cos[α],-Sin[α]},{Sin[α],Cos[α]}}

rotinv={{Cos[α],Sin[α]},{-Sin[α],Cos[α]}}

Simplify[rot.rotinv]

(* retardace v rotovane H/V bazi, tj rotace v rovine nejakeho poledniku spojujiciho R a L *)

rotret=Simplify[rotinv.ret.rot]

rotretinv=Simplify[rotinv.retinv.rot]

Simplify[rotretinv.rotret]

Simplify[rotret.rotretinv]

Simplify[ret.retinv]

(* vystupni stav *)

sout2=Simplify[rotret.s]

sout1

(* specialni pripad *)

sout2spec=Simplify[sout2/.{ϕ->π,α->π/4}]

sout2spec/sout1

(* geometricka faze *)

Arg[sout2spec/sout1]

(* rotace po obecnem poledniku *)

sout2obec=Simplify[sout2/.{ϕ->π}]

(* geometricka faze = 2α *)

FullSimplify[sout2obec/sout1]

(* dokonceni cyklu R->L->R rotaci sout1 po draze sout2spec -> s *)

sout3=Simplify[rotretinv.sout1]

s

sout3fin=Simplify[sout3/.{ϕ->π,α->π/4}]

Simplify[sout3fin/s]

(* geometricka faze *)

Arg[sout3fin/s]