program 1 table: N=14400 NK=120 NF=120 rank=4 classes=188 ; program 2 table: rank 5 labels [5, 3, 3, 3] N=14400 M=120 parabolic orders [120, 48, 60, 240, 14400]
PASS  both tables have 14400 elements and 4 cell generators
PASS  phi is a bijection of the 14400 elements
PASS  phi(h r_i) = phi(h) r_i for all h and i = 1..4 (the two regular representations are isomorphic)
PASS  program 2: left and right multiplications commute (sample)
program 2 (recomputed): 120 facets, 174 type classes, 10 inside H3, 140 admissible, 1680 flagged elements
PASS  program 2 has 174 type classes, 140 admissible (as in the START lines of its logs)
PASS  the inadmissible set of program 2 is a union of type classes
PASS  my list of the 140 root types (index, class, minimal element, size) equals the listing "fps_final -q -I" (140 rows)
program 1: loop elements 480, elliptic (not loop) 1200, union 1680 ; program 2: flagged 1680
PASS  phi(loop classes + elliptic classes of program 1) == set flagged in t5333.inadm of program 2 (1680 elements)
PASS  the 120 elements of H3 are flagged in program 2
PASS  every admissible class of program 1 lies in an admissible type class of program 2
PASS  every non-admissible class of program 1 lies in a non-admissible type class of program 2
PASS  every admissible root type of program 2 contains an admissible class of program 1 (no root type missing on either side)
PASS  a class and its inverse class go to the same type class
PASS  size of every root type of program 2 = sum of the sizes of the corresponding classes of program 1
PASS  every fibre is one self-inverse class or one pair of mutually inverse classes
fibres: 140 root types = 126 self-inverse classes + 14 inverse pairs ; 126 + 2*14 = 154 classes of program 1
PASS  140 root types <-> 154 classes (126 self-inverse + 14 pairs)
mapping written to class_map.txt
RESULT: PASS
