fact: Definition copy_spec := DECLARE _copy WITH sh: wshare, g: Graph, x: pointer_val PRE [tptr (Tstruct _Node noattr)] PROP (weak_valid g x) PARAMS (pointer_val_val x) GLOBALS () SEP (graph sh x g) POST [ (tptr (Tstruct _Node noattr)) ] EX xgg: pointer_val * Graph * Graph', let x' := fst (fst xgg) in let g1 := snd (fst xgg) in let g1' := snd xgg in PROP (copy (x: @addr pSGG_VST) g g1 g1'; x = null /\ x' = null \/ x' = vmap g1 x) LOCAL (temp ret_temp (pointer_val_val x')) SEP (graph sh x g1; graph Ews x' g1').
imports: CertiGraph.lib.Coqlib CertiGraph.copy.env_copy_bin CertiGraph.graph.graph_model CertiGraph.graph.weak_mark_lemmas CertiGraph.graph.local_graph_copy CertiGraph.graph.path_lemmas CertiGraph.graph.subgraph2 CertiGraph.graph.reachable_computable CertiGraph.msl_application.Graph CertiGraph.msl_application.Graph_Copy CertiGraph.msl_application.GraphBin CertiGraph.msl_application.GraphBin_Copy CertiGraph.copy.spatial_graph_bin_copy VST.msl.wand_frame VST.floyd.reassoc_seq VST.floyd.field_at_wand