fact: Definition vertical_intersection_point (p : pt) (e : edge) : option pt := if valid_edge e p then Some(Bpt (p_x p) (((p_x p) - p_x (left_pt e)) * (((p_y (right_pt e)) - p_y (left_pt e)) / ((p_x (right_pt e)) - p_x (left_pt e))) + p_y (left_pt e))) else None.
imports: mathcomp(all_ssreflect) ZArith QArith List String OrderedType OrderedTypeEx FMapAVL