############################################################################# ## #W idempot.gi The Wedderga package Osnel Broche Cristo #W Olexandr Konovalov #W Aurora Olivieri #W Gabriela Olteanu #W Ángel del Río #W Inneke Van Gelder ## #############################################################################
############################################################################# ## #M CentralElementBySubgroups( QG, K, H ) ## ## The function CentralElementBySubgroups computes e(G,K,H) for H and K, ## where H and K are subgroups of G such that H is normal in K ##
InstallOtherMethod( CentralElementBySubgroups, "for pairs of subgroups",
true,
[ IsSemisimpleRationalGroupAlgebra, IsGroup, IsGroup ], 0, function( QG, K, H )
local alpha,
G,
zero,
Eps,
Cen,
RTCen,
nRTCen,
i,
g,
NH;
G := UnderlyingMagma( QG );
if not IsSubgroup( G, K ) then
Error("Wedderga: <K> should be a subgroup of the underlying subgroup of <FG>\n"); elif not( IsSubgroup( K, H ) and IsNormal( K, H ) ) then
Error("Wedderga: <H> should be a normal subgroup of <K>\n"); fi;
NH := Normalizer( G, H );
Eps := IdempotentBySubgroups( QG, K, H ); if ( IsCyclic(FactorGroup(K,H)) and IsNormal(NH,K) ) then
Cen := NH; else
Cen := Centralizer( G, Eps ); fi;
RTCen := RightTransversal( G, Cen );
return Sum( List( RTCen, g -> Eps^g ) ); end);
############################################################################# ## ## CentralElementBySubgroups( FqG, K, H, c, ltrace ) ## ## The function CentralElementBySubgroups computes e(G, K, H, C) for H and K ## subgroups of G such that H is normal in K and K/H is cyclic group, and C ## is a cyclotomic class of q=|Fq| modulo n=[K:H] containing generators of K/H. ## The list ltrace contains information about the trace of a n-th roots of 1. ##
InstallOtherMethod( CentralElementBySubgroups, "for pairs of subgroups, one cyclotomic class and trace info",
true,
[ IsSemisimpleFiniteGroupAlgebra, IsGroup, IsGroup, IsList, IsList ], 0, function( FqG, K, H, c, ltrace )
local G, # Group
N, # Normalizer of H in G
epi, # N -->N/H
QNH, # N/H
QKH, # K/H
gq, # Generator of K/H
C1, # Cyclotomic class of q module n in K/H
St, # Stabilizer of C in K/H
N1, # Set of representatives of St by epi
GN1, # Right transversal of N1 in G
Eps; # the result of the IdempotentBySubgroups function
G := UnderlyingMagma( FqG );
N := Normalizer( G, H );
epi := NaturalHomomorphismByNormalSubgroup( N, H );
QNH := Image( epi, N );
QKH := Image( epi, K ); # We guarantee that QKH is cyclic so we can randomly obtain its generator
repeat
gq := Random(QKH);
until Order(gq) = Size(QKH);
C1 := Set( List( c, ii -> gq^ii ) );
St := Stabilizer( QNH, C1, OnSets );
N1 := PreImage( epi, St );
GN1 := RightTransversal( G, N1 );
Eps := IdempotentBySubgroups( FqG, K, H, c, ltrace );
return Sum( List( GN1, g -> Eps^g ) ); end);
############################################################################# ## ## CentralElementBySubgroups( FqG, K, H, c, ltrace, [epi, gq] ) ## ## The function CentralElementBySubgroups computes e(G, K, H, C) for H and K ## subgroups of G such that H is normal in K and K/H is cyclic group, and C ## is a cyclotomic class of q=|Fq| modulo n=[K:H] containing generators of K/H. ## The list ltrace contains information about the trace of a n-th roots of 1. ##
InstallMethod( CentralElementBySubgroups, "for pairs of subgroups, cyclotomic class and trace info, mapping and group element",
true,
[ IsSemisimpleFiniteGroupAlgebra, IsGroup, IsGroup, IsList, IsList, IsList ], # IsMapping, IsMultiplicativeElementWithInverse ], 0, function( FqG, K, H, c, ltrace, arg6 )
local G, # Group
QNH, # N/H
C1, # Cyclotomic class of q module n in K/H
St, # Stabilizer of C in K/H
N1, # Set of representatives of St by epi
GN1, # Right transversal of N1 in G
Eps, # Output of IdempotentBySubgroups
epi, # Extra argument
gq; # Extra argument
epi:=arg6[1];
gq:=arg6[2];
G := UnderlyingMagma( FqG );
QNH := Range(epi);
C1 := Set( List( c, ii -> gq^ii ) );
St := Stabilizer( QNH, C1, OnSets );
N1 := PreImage( epi, St );
GN1 := RightTransversal( G, N1 );
Eps := IdempotentBySubgroups( FqG, K, H, c, ltrace, [epi,gq] );
return Sum( List( GN1, g -> Eps^g ) ); end);
############################################################################# ## ## CentralElementBySubgroups( FqG, K, H, C ) ## ## The function CentralElementBySubgroups computes e( G, K, H, C) for H and K ## subgroups of G such that H is normal in K and K/H is cyclic group, and C ## is a cyclotomic class of q=|Fq| modulo n=[K:H] containing generators of K/H. ##
InstallOtherMethod( CentralElementBySubgroups, "for pairs of subgroups and one cyclotomic class",
true,
[ IsSemisimpleFiniteGroupAlgebra, IsGroup, IsGroup, IsList ], 0, function( FqG, K, H, C )
local G, # Group
Fq, # Field
q, # Order of field Fq
n, # Order of K/H
N, # Normalizer of H in G
epi, # N -->N/H
QNH, # N/H
QKH, # K/H
gq, # Generator of K/H
C1, # Cyclotomic class of q module n in K/H
St, # Stabilizer of C in K/H
N1, # Set of representatives of St by epi
GN1, # Right transversal of N1 in G
Eps; # epsilon( G, K, H )
# Initialization
G := UnderlyingMagma(FqG);
Fq := LeftActingDomain(FqG);
q := Size( Fq );
n := Index( K, H );
# First we check that FqG is a finite group algebra over finite field # Then we check if K is subgroup of G, H is a normal subgroup of K
if not IsSubgroup( G, K ) then
Error("Wedderga: <K> should be a subgroup of the underlying subgroup of <FG>\n"); elif not( IsSubgroup( K, H ) and IsNormal( K, H ) ) then
Error("Wedderga: <H> should be a normal subgroup of <K>\n"); elif not IsCyclic( FactorGroup( K, H ) )then
Error("Wedderga: <K> over <H> should be be cyclic \n"); elif not IsCyclotomicClass(q,n,C) then
Error("Wedderga: \n<C> should be a cyclotomic class module the index of <H> on <K>\n"); fi;
# Program
if K=H then
return AverageSum( FqG, H ); fi;
N := Normalizer( G, H );
epi := NaturalHomomorphismByNormalSubgroup( N, H );
QNH := Image( epi, N );
QKH := Image( epi, K ); # We guarantee that QKH is cyclic so we can randomly obtain its generator
repeat
gq := Random(QKH);
until Order(gq) = Size(QKH);
C1 := Set( List( C, ii -> gq^ii ) );
St := Stabilizer( QNH, C1, OnSets );
N1 := PreImage( epi, St );
GN1 := RightTransversal( G, N1);
Eps := IdempotentBySubgroups( FqG, K, H, C );
return Sum( List( GN1, g -> Eps^g ) ); end);
############################################################################# ## ## CentralElementBySubgroups( FqG, K, H, c ) ## ## The function CentralElementBySubgroups computes e( G, K, H, C) for H and K ## subgroups of G such that H is normal in K and K/H is cyclic group, and C ## the q=|Fq|-cyclotomic class modulo n=[K:H] containing c which should be coprime with [K:H] ##
InstallOtherMethod( CentralElementBySubgroups, "for pairs of subgroups and one cyclotomic class",
true,
[ IsSemisimpleFiniteGroupAlgebra, IsGroup, IsGroup, IsPosInt ], 0, function( FqG, K, H, c )
local G, # Group
Fq, # Field
q, # Order of field Fq
n, # Order of K/H
C, # The cyclotomic class containing c
j, # integer
N, # Normalizer of H in G
epi, # N -->N/H
QNH, # N/H
QKH, # K/H
gq, # Generator of K/H
C1, # Cyclotomic class of q module n in K/H
St, # Stabilizer of C in K/H
N1, # Set of representatives of St by epi
GN1, # Right transversal of N1 in G
Eps; # epsilon( G, K, H )
# Initialization
G := UnderlyingMagma(FqG);
Fq := LeftActingDomain(FqG);
q := Size( Fq );
n := Index( K, H );
# First we check that FqG is a finite group algebra over finite field # Then we check if K is subgroup of G, H is a normal subgroup of K
if not IsSubgroup( G, K ) then
Error("Wedderga: <K> should be a subgroup of the underlying subgroup of <FG>\n"); elif not( IsSubgroup( K, H ) and IsNormal( K, H ) ) then
Error("Wedderga: <H> should be a normal subgroup of <K>\n"); elif not IsCyclic( FactorGroup( K, H ) )then
Error("Wedderga: <K> over <H> should be be cyclic \n"); fi;
# Program
if K=H then
return AverageSum( FqG, H ); fi;
# Here we compute the cyclotomic class containin c
C := [ c mod n];
j:=q*c mod n; while j <> C[1] do
Add( C, j );
j:=j*q mod n;
od;
N := Normalizer( G, H );
epi := NaturalHomomorphismByNormalSubgroup( N, H );
QNH := Image( epi, N );
QKH := Image( epi, K ); # We guarantee that QKH is cyclic so we can randomly obtain its generator
repeat
gq := Random(QKH);
until Order(gq) = Size(QKH);
C1 := Set( List( C, ii -> gq^ii ) );
St := Stabilizer( QNH, C1, OnSets );
N1 := PreImage( epi, St );
GN1 := RightTransversal( G, N1);
Eps := IdempotentBySubgroups( FqG, K, H, c );
return Sum( List( GN1, g -> Eps^g ) ); end);
############################################################################# ## #M IdempotentBySubgroups( QG, K, H ) ## ## The function IdempotentBySubgroups compute epsilon(QG,K,H) for H and K ## subgroups of G such that H is normal in K. If the additional condition ## holds that K/H is cyclic, than the faster algorithm is used. ##
InstallOtherMethod( IdempotentBySubgroups, "for pairs of subgroups",
true,
[ IsSemisimpleRationalGroupAlgebra, IsGroup, IsGroup ], 0, function( QG, K, H )
local L, # Subgroup of G
G, # Group
Emb, # Embedding of G in QG
zero, # 0 of QG
Epsilon, # Coefficients of output
ElemH, # The elements of H
OrderH, # Size of H
Supp, # Support of output
Trans, # Representatives of Supp module H
exp, # Exponent of the elements of Trans as powers of x
coeff, # Coefficients of the elements of Trans in Epsilon
Epi, # K --> K/H
KH, # K/H
n, # Order of KH
y, # Generator of KH
x, # Representative of preimage of y
p, # Set of prime divisors of n
Lp, # Length of p
Comb, # The direct product [1..p(1)] X [1..p(2)] X .. X [1..[p(Lp)] X H
i,j, # Counters
hatH,
MNSKH, # The set of non trivial minimal normal subgroups of K/H
q, powersx;
#First we check if K is subgroup of G, H is a normal subgroup of K
if not IsSubgroup( UnderlyingMagma( QG ),K ) then
Error("Wedderga: <K> should be a subgroup of the underlying group of <QG>\n"); elif not( IsSubgroup( K, H ) and IsNormal( K, H ) ) then
Error("Wedderga: <H> should be a normal subgroup of <K>\n"); fi;
# Initialization
G := UnderlyingMagma( QG );
Emb := Embedding( G, QG );
Epi := NaturalHomomorphismByNormalSubgroup( K, H ) ;
KH := Image( Epi, K );
if IsCyclic(KH) then
ElemH:=Elements(H);
OrderH:=Size(H); if K=H then for i in [ 1 .. OrderH ] do
Epsilon := List( [1 .. OrderH ], h -> 1/OrderH ); # If H=K then Epsilon = AverageSum( QG, H )
Supp := ElemH;
od; else
n := Size( KH );
y := Product( IndependentGeneratorsOfAbelianGroup( KH ) );
x := PreImagesRepresentativeNC( Epi, y );
p := Set( FactorsInt( n ) );
Lp := Length( p ); # # ??? Cartesian can be expensive - check if this might be optimized ??? #
Comb := Cartesian( List( [1..Lp], i -> List( [ 1 .. p[i] ] ) ){[1..Lp]} );
exp := List( Comb, i -> Sum( List( [1..Lp], j -> n/p[j]*i[j] ) ) );
coeff := List(Comb, i -> Product( List( [1..Lp], j -> -1/p[j]+Int(i[j]/p[j] ) ) ) );
Supp := List( Cartesian( exp, ElemH ), i -> (x^i[1])*i[2] );
Epsilon := List( Cartesian( coeff, [1..OrderH] ), i -> i[1]/OrderH ); fi;
return ElementOfMagmaRing( FamilyObj(Zero(QG)), 0, Epsilon, Supp ); else
Epsilon := AverageSum( QG, H );
hatH := Epsilon;
MNSKH := MinimalNormalSubgroups( KH ); for i in MNSKH do
L := PreImage( Epi, i );
Epsilon := Epsilon * ( hatH - AverageSum( QG, L ) );
od; fi;
#Output
return Epsilon; end);
############################################################################# ## #M IdempotentBySubgroups( FqG, K, H, C, ltrace ) ## ## The function IdempotentBySubgroups computes epsilon(K, H, C), for H and K ## subgroups of G such that H is normal in K and K/H is cyclic group, and C ## is a cyclotomic class of q=|Fq| modulo n=[K:H] containing generators of K/H. ## The list ltrace contains information about the traces of the n-th roots of 1. ##
InstallOtherMethod( IdempotentBySubgroups, "for pairs of subgroups, one cyclotomic class and traces",
true,
[ IsSemisimpleFiniteGroupAlgebra, IsGroup, IsGroup, IsList, IsList ], 0, function( FqG, K, H, c, ltrace )
local G, # Group
Fq, # Field
q, # Order of field Fq
N, # Normalizer of H in G
epi, # N --> N/H
QKH, # K/H
n, # Order of K/H
gq, # Generator of K/H
cc, # Set of cyclotomic classes of q module n
d, # Cyclotomic class of q module n
tr, # Element of ltrace
coeff, # Coefficients of the output
supp; # Coefficients of the output
# In this case the conditions are not necesary because this function # is used as local function of PCIs
# Program
G := UnderlyingMagma( FqG );
Fq := LeftActingDomain( FqG );
q := Size( Fq );
n := Index( K, H );
cc := CyclotomicClasses( q, n );
N := Normalizer( G, H );
epi := NaturalHomomorphismByNormalSubgroup( N, H );
QKH := Image( epi, K ); # We guarantee that QKH is cyclic so we can randomly obtain its generator
repeat
gq := Random(QKH);
until Order(gq) = Size(QKH);
supp := [];
coeff := []; for d in cc do
tr := ltrace[ 1+(-c[1]*d[1] mod n) ];
Append( supp, PreImagesNC( epi, List( d, x -> gq^x ) ) );
Append( coeff, List( [ 1 .. Size( H ) * Size( d ) ], x -> tr ) );
od;
coeff:=Inverse(Size(K)*One(Fq))*coeff;
############################################################################# ## #M IdempotentBySubgroups( FqG, K, H, c, ltrace, [ epi, gq ] ) ## ## The function IdempotentBySubgroups computes epsilon(K, H, C), for H and K ## subgroups of G such that H is normal in K and K/H is cyclic group, and C ## is a cyclotomic class of q=|Fq| modulo n=[K:H] containing generators of K/H. ## The list ltrace contains information about the traces of the n-th roots of 1. ##
InstallMethod( IdempotentBySubgroups, "for pairs of subgroups, one cyclotomic class and traces, mapping and group element",
true,
[ IsSemisimpleFiniteGroupAlgebra, IsGroup, IsGroup, IsList, IsList, IsList ], # IsMapping, IsMultiplicativeElementWithInverse ], 0, function( FqG, K, H, c, ltrace, args )
local Fq, # Field
q, # Order of field Fq
n, # Order of K/H
cc, # Set of cyclotomic classes of q module n
supp, # Support of the output
coeff, # Coefficients of the output
d, # Cyclotomic class of q module n
tr, # Element of ltrace
epi, # Extra argument
gq; # Extra argument
# In this case the conditions are not necesary because this function # is used as local function of PCIs
# Program
epi:=args[1];
gq:=args[2];
Fq := LeftActingDomain( FqG );
q := Size( Fq );
n := Index( K, H );
cc := CyclotomicClasses( q, n );
supp := [];
coeff := []; for d in cc do
tr := ltrace[ 1+(-c[1]*d[1] mod n) ];
Append( supp, PreImagesNC( epi, List( d, x -> gq^x ) ) );
Append( coeff, List( [ 1 .. Size( H ) * Size( d ) ], x -> tr ) );
od;
coeff:=Inverse(Size(K)*One(Fq))*coeff;
return ElementOfMagmaRing( FamilyObj(Zero(FqG)), Zero(Fq), coeff, supp ); end);
############################################################################# ## #M IdempotentBySubgroups( FqG, K, H, C, [epi,gq] ) ## ## The function IdempotentBySubgroups computes epsilon( K, H, C ) for H and K ## subgroups of G such that H is normal in K and K/H is cyclic group, and C ## is the q=|Fq|-cyclotomic class modulo n=[K:H] (w.r.t. the generator gq of K/H)
InstallOtherMethod( IdempotentBySubgroups, "for semisimple finite group algebras",
true,
[ IsSemisimpleFiniteGroupAlgebra, IsGroup, IsGroup, IsList, IsList ], 0, function( FqG, K, H, C, args )
local G, # Group
Fq, # Field
q, # Order of field Fq
N, # Normalizer of H in G
epi, # N -->N/H
gq, # generator of K/H
QKH, # K/H
n, # Order of K/H
g, # Representative of the preimage of gq by epi
cc, # Set of cyclotomic classes of q module n
a, # Primitive n-th root of 1 in an extension of Fq
d, # Cyclotomic class of q module n
tr, # Trace
coeff, # Coefficients of the output
supp, # Coefficients of the output
o; # The multiplicative order of q module n
# Initialization
G := UnderlyingMagma(FqG);
Fq := LeftActingDomain(FqG);
q := Size(Fq);
n := Index(K,H);
epi := args[1];
gq := args[2];
# First we check that FqG is a finite group algebra over field finite # Then we check if K is subgroup of G, H is a normal subgroup of K
if not IsSubgroup( G, K ) then
Error("Wedderga: <K> should be a subgroup of the underlying group of <FG>\n"); elif not( IsSubgroup( K, H ) and IsNormal( K, H ) ) then
Error("Wedderga: <H> should be a normal subgroup of <K>\n"); elif not IsCyclic( FactorGroup( K, H ) )then
Error("Wedderga: <K> over <H> should be be cyclic \n"); elif not IsCyclotomicClass(q,n,C) then
Error("Wedderga: \n <C> should be a cyclotomic class module the index of <H> on <K>\n"); fi;
cc := CyclotomicClasses(q,n);
# Program
if K=H then
return AverageSum( FqG, H ); fi;
N := Normalizer( G, H );
QKH := Image( epi, K );
o := Size( cc[2] );
a := BigPrimitiveRoot(q^o)^((q^o-1)/n);
supp := [];
coeff := []; for d in cc do
tr := BigTrace(o, Fq, a^(-C[1]*d[1]) );
Append( supp, PreImagesNC( epi, List( d, x -> gq^x ) ) );
Append( coeff, List( [ 1 .. Size( H ) * Size( d ) ], x -> tr ) );
od;
coeff:=Inverse(Size(K)*One(Fq))*coeff;
############################################################################# ## #M IdempotentBySubgroups( FqG, K, H, C ) ## ## The function IdempotentBySubgroups computes epsilon( K, H, C ) for H and K ## subgroups of G such that H is normal in K and K/H is cyclic group, and C ## is the q=|Fq|-cyclotomic class modulo n=[K:H] containing c ##
InstallOtherMethod( IdempotentBySubgroups, "for pairs of subgroups and one cyclotomic class",
true,
[ IsSemisimpleFiniteGroupAlgebra, IsGroup, IsGroup, IsList ], 0, function( FqG, K, H, C )
local G, # Group
Fq, # Field
q, # Order of field Fq
N, # Normalizer of H in G
epi, # N -->N/H
QKH, # K/H
n, # Order of K/H
gq, # Generator of K/H
g, # Representative of the preimage of gq by epi
cc, # Set of cyclotomic classes of q module n
a, # Primitive n-th root of 1 in an extension of Fq
d, # Cyclotomic class of q module n
tr, # Trace
coeff, # Coefficients of the output
supp, # Coefficients of the output
o; # The multiplicative order of q module n
# Initialization
G := UnderlyingMagma(FqG);
Fq := LeftActingDomain(FqG);
q := Size(Fq);
n := Index(K,H);
# First we check that FqG is a finite group algebra over field finite # Then we check if K is subgroup of G, H is a normal subgroup of K
if not IsSubgroup( G, K ) then
Error("Wedderga: <K> should be a subgroup of the underlying group of <FG>\n"); elif not( IsSubgroup( K, H ) and IsNormal( K, H ) ) then
Error("Wedderga: <H> should be a normal subgroup of <K>\n"); elif not IsCyclic( FactorGroup( K, H ) )then
Error("Wedderga: <K> over <H> should be be cyclic \n"); elif not IsCyclotomicClass(q,n,C) then
Error("Wedderga: \n <C> should be a cyclotomic class module the index of <H> on <K>\n"); fi;
cc := CyclotomicClasses(q,n);
# Program
if K=H then
return AverageSum( FqG, H ); fi;
N := Normalizer( G, H );
epi := NaturalHomomorphismByNormalSubgroup( N, H );
QKH := Image( epi, K ); # We guarantee that QKH is cyclic so we can randomly obtain its generator
repeat
gq := Random(QKH);
until Order(gq) = Size(QKH);
o := Size( cc[2] );
a := BigPrimitiveRoot(q^o)^((q^o-1)/n);
supp := [];
coeff := []; for d in cc do
tr := BigTrace(o, Fq, a^(-C[1]*d[1]) );
Append( supp, PreImagesNC( epi, List( d, x -> gq^x ) ) );
Append( coeff, List( [ 1 .. Size( H ) * Size( d ) ], x -> tr ) );
od;
coeff:=Inverse(Size(K)*One(Fq))*coeff;
############################################################################# ## #M IdempotentBySubgroups( FqG, K, H, c ) ## ## The function SimpleAlgebraByStrongSP verifies if ( H, K ) is a SSP of G and ## c is an integer coprime with n=[K:H]. ## If the answer is positive then returns SimpleAlgebraByStrongSP(FqG, K, H, C) where ## C is the cyclotomic class of q=|Fq| module n=[K:H] containing c. ##
InstallOtherMethod( IdempotentBySubgroups, "for semisimple finite group algebras",
true,
[ IsSemisimpleFiniteGroupAlgebra, IsGroup, IsGroup, IsPosInt ], 0, function( FqG, K, H, c )
local G, # Group
n, # Index of H in K
q, # Size of Fq
j, # integer module n
C; # q-cyclotomic class module [K,H] containing c
G := UnderlyingMagma( FqG );
n := Index( K, H );
q:=Size( LeftActingDomain( FqG ) );
C := [ c mod n];
j:=q*c mod n; while j <> C[1] do
Add( C, j );
j:=j*q mod n;
od;
return IdempotentBySubgroups( FqG, K, H, C ); end);
############################################################################# ## ## AverageSum( FG, X ) ## ## The function AverageSum computes the element of FG defined by ## ( 1/|X| )* sum_{x\in X} x ##
InstallMethod( AverageSum, "for subset",
true,
[ IsGroupRing, IsObject ], 0, function(FG,X)
local G, # Group
n, # Size of the set X
F, # Field
one, # One of F
quo; # n^-1 in F
# Initialization if not IsFinite( X ) then
Error("Wedderga: <X> must be a finite set !!!\n"); fi;
G := UnderlyingMagma( FG ); if not IsSubset( G, X ) then
Error("Wedderga: The group algebra <FG> does not correspond to <X>!!!\n"); fi;
F := LeftActingDomain( FG );
one := One( F );
n := Size( X ); # Program
quo := Inverse( n * one ); if quo=fail then
Error("Wedderga: The order of <X> must be a unit of the ring of coefficients!!!\n"); else
return ElementOfMagmaRing( FamilyObj( Zero( FG ) ),
Zero( F ),
List( [1..n] , i -> quo),
AsList(X) ); fi; end);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.