Match midp M A B, perp O M A B => cong O A O B.
(
g: gh.Graph,
g_matcher: Callable[str, list[tuple[gm.Point, ...]]],
theorem: pr.Theorem,
)
| 210 | |
| 211 | |
| 212 | def match_midp_perp_cong( |
| 213 | g: gh.Graph, |
| 214 | g_matcher: Callable[str, list[tuple[gm.Point, ...]]], |
| 215 | theorem: pr.Theorem, |
| 216 | ) -> Generator[dict[str, gm.Point], None, None]: |
| 217 | """Match midp M A B, perp O M A B => cong O A O B.""" |
| 218 | for m, a, b in g.all_midps(): |
| 219 | ab = g._get_line(a, b) |
| 220 | for l in m.neighbors(gm.Line): |
| 221 | if g.check_perpl(l, ab): |
| 222 | for o in l.neighbors(gm.Point): |
| 223 | if o != m: |
| 224 | yield dict(zip('ABMO', [a, b, m, o])) |
| 225 | |
| 226 | |
| 227 | def match_cyclic_eqangle_cong( |
nothing calls this directly
no test coverage detected