== mutations/M1_P_vs_P.json
dihedral equal: 9/9; reflex edges in P: 1; face angles differing: 0/18 (at apices: 0)
VERDICT: NOT A COUNTEREXAMPLE
P: exact edge/triangle tests 54, violations 0
Pp: exact edge/triangle tests 54, violations 0
max |dihedral(P) - dihedral(Pp)| (rad, 80 digits, winding-number typing): 0.0
EMBED+NUMERIC: OK
== mutations/M2_perturb_a3.json
dihedral equal: 1/9; reflex edges in P: 1; face angles differing: 16/18 (at apices: 4)
VERDICT: NOT A COUNTEREXAMPLE
P: exact edge/triangle tests 54, violations 0
Pp: exact edge/triangle tests 54, violations 0
max |dihedral(P) - dihedral(Pp)| (rad, 80 digits, winding-number typing): 8.5545e-8
EMBED+NUMERIC: FAIL
== mutations/M2b_perturb_x_1e-30.json
dihedral equal: 3/9; reflex edges in P: 1; face angles differing: 15/18 (at apices: 3)
VERDICT: NOT A COUNTEREXAMPLE
P: exact edge/triangle tests 54, violations 0
Pp: exact edge/triangle tests 54, violations 0
max |dihedral(P) - dihedral(Pp)| (rad, 80 digits, winding-number typing): 6.6785e-32
EMBED+NUMERIC: FAIL
== mutations/M3_mirrorP_vs_P.json
dihedral equal: 9/9; reflex edges in P: 1; face angles differing: 0/18 (at apices: 0)
VERDICT: NOT A COUNTEREXAMPLE
P: exact edge/triangle tests 54, violations 0
Pp: exact edge/triangle tests 54, violations 0
max |dihedral(P) - dihedral(Pp)| (rad, 80 digits, winding-number typing): 0.0
EMBED+NUMERIC: OK
== mutations/M4_mirrorPp_vs_P.json
dihedral equal: 9/9; reflex edges in P: 1; face angles differing: 12/18 (at apices: 0)
VERDICT: COUNTEREXAMPLE CONFIRMED
P: exact edge/triangle tests 54, violations 0
Pp: exact edge/triangle tests 54, violations 0
max |dihedral(P) - dihedral(Pp)| (rad, 80 digits, winding-number typing): 4.2169e-81
EMBED+NUMERIC: OK
== mutations/M5_xprime_negated.json
Pp: side(x)=1 side(y)=1 opposite=False
dihedral equal: 3/9; reflex edges in P: 1; face angles differing: 15/18 (at apices: 3)
VERDICT: NOT A COUNTEREXAMPLE
P: exact edge/triangle tests 54, violations 0
Pp: exact edge/triangle tests 54, violations 1
max |dihedral(P) - dihedral(Pp)| (rad, 80 digits, winding-number typing): 1.0655
EMBED+NUMERIC: FAIL
== mutations/M6_swap_a1a2_in_Pp.json
dihedral equal: 3/9; reflex edges in P: 1; face angles differing: 16/18 (at apices: 4)
VERDICT: NOT A COUNTEREXAMPLE
P: exact edge/triangle tests 54, violations 0
Pp: exact edge/triangle tests 54, violations 0
max |dihedral(P) - dihedral(Pp)| (rad, 80 digits, winding-number typing): 1.9813
EMBED+NUMERIC: FAIL
== mutations/M7_similarP_vs_P.json
dihedral equal: 9/9; reflex edges in P: 1; face angles differing: 0/18 (at apices: 0)
VERDICT: NOT A COUNTEREXAMPLE
P: exact edge/triangle tests 54, violations 0
Pp: exact edge/triangle tests 54, violations 0
max |dihedral(P) - dihedral(Pp)| (rad, 80 digits, winding-number typing): 5.2711e-81
EMBED+NUMERIC: OK
== mutations/M8_similarPp_vs_P.json
dihedral equal: 9/9; reflex edges in P: 1; face angles differing: 12/18 (at apices: 0)
VERDICT: COUNTEREXAMPLE CONFIRMED
P: exact edge/triangle tests 54, violations 0
Pp: exact edge/triangle tests 54, violations 0
max |dihedral(P) - dihedral(Pp)| (rad, 80 digits, winding-number typing): 4.744e-81
EMBED+NUMERIC: OK
== mutations/M9_DISC_plus_1.json
dihedral equal: 4/9; reflex edges in P: 1; face angles differing: 15/18 (at apices: 3)
VERDICT: NOT A COUNTEREXAMPLE
P: exact edge/triangle tests 54, violations 0
Pp: exact edge/triangle tests 54, violations 0
max |dihedral(P) - dihedral(Pp)| (rad, 80 digits, winding-number typing): 6.0445e-56
EMBED+NUMERIC: FAIL
