proposition: Lemma oiso2_add_edge (F G : pre_graph) (i : F ⩭2 G) e1 e2 x y u v : e1 \notin eset F -> e2 \notin eset G -> x \in vset F -> y \in vset F -> u ≡ v -> F ∔ [e1,x,u,y] ⩭2 G ∔ [e2,i x,v,i y].
proof: Proof. case: i => isF isG i fresh_e1 fresh_e2 Vx Vy uv /=. have isF' : is_graph (F ∔ [e1, x, u, y]) by abstract exact: add_edge_graph'. have isG' : is_graph (G ∔ [e2, vfun_body i x, v, vfun_body i y]). by abstract (apply: add_edge_graph'; exact: (oiso2_vset (OIso2 i))). econstructor. apply: iso2_comp. apply: pack_add_edge'. assumption. apply: iso2_comp (iso2_sym _). 2: apply: pack_add_edge';assumption. apply add_edge2_iso'' with i; try assumption. all: abstract (by rewrite /vfun_of vfun_bodyE /= pack_fsval pack_vE). Defined.
imports: Coq(Relation_Definitions Morphisms RelationClasses) mathcomp(all_ssreflect) GraphTheory(edone finite_quotient preliminaries bij equiv) GraphTheory(setoid_bigop structures pttdom mgraph mgraph2) GraphTheory(rewriting open_confluence finmap_plus)