proposition: Lemma flcvae_dst_new: forall g new (l: list (EType * VType)) e v, NoDup (map fst l) -> In (e, v) l -> dst (fold_left (copy_v_add_edge new) l g) e = v.
proof: Proof. intros. revert g. induction l. 1: simpl in H; exfalso; assumption. intros. simpl in *. destruct H0. - subst a. rewrite flcvae_dst_old. + simpl. unfold updateEdgeFunc. rewrite if_true; reflexivity. + simpl in H. apply NoDup_cons_2 in H. assumption. - apply IHl; [apply NoDup_cons_1 in H|]; assumption. Qed.
imports: Coq.ZArith.ZArith Coq.Program.Basics Coq.micromega.Lia compcert.lib.Integers compcert.common.Values VST.veric.base VST.veric.Clight_lemmas VST.veric.val_lemmas VST.veric.shares VST.msl.seplog VST.msl.shares VST.zlist.sublist VST.floyd.coqlib3 VST.floyd.functional_base VST.floyd.data_at_rec_lemmas VST.zlist.list_solver CertiGraph.lib.EquivDec_ext CertiGraph.lib.List_ext CertiGraph.graph.graph_model CertiGraph.graph.graph_gen