proposition: Lemma oiso2_add_edge' (F G : pre_graph) (i : F ⩭2 G) (e1 e2 : ET) (x y x' y' : VT) (u v : tm) : e1 \notin eset F -> e2 \notin eset G -> x \in vset F -> y \in vset F -> x' \in vset G -> y' \in vset G -> i x = x' -> i y = y' -> u ≡ v -> F ∔ [e1, x, u, y] ⩭2 G ∔ [e2, x', v, y'].
proof: Proof. Proof with eauto with typeclass_instances. case: i => isF isG i. move => E1 E2 Vx Vy Vx' Vy' Ix Iy uv. have isF' : is_graph ( F ∔ [e1, x, u, y] ). apply add_edge_graph'... have isG' : is_graph ( G ∔ [e2, x', v, y']). apply add_edge_graph'... econstructor. apply: iso2_comp. apply: pack_add_edge'. assumption. apply: iso2_comp (iso2_sym _). 2: apply: pack_add_edge'; try assumption. apply: (add_edge2_iso'' (h := i)). abstract (by rewrite -Ix //= vfun_bodyE pack_fsval pack_vE). abstract (by rewrite -Iy //= vfun_bodyE pack_fsval pack_vE). exact: uv. 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)