proposition: Lemma nth_gen_size_le_S: forall n : nat, nth_gen_size n <= nth_gen_size (S n).
proof: Proof. intros n. unfold nth_gen_size. rewrite Nat2Z.inj_succ, two_p_S by lia. assert (two_p (Z.of_nat n) > 0) by (apply two_p_gt_ZERO; lia). assert (0 < NURSERY_SIZE) by (vm_compute; reflexivity). rewrite Z.mul_assoc, (Z.mul_comm NURSERY_SIZE 2). assert (0 < NURSERY_SIZE * two_p (Z.of_nat n)). apply Z.mul_pos_pos; lia. rewrite <- Z.add_diag, Z.mul_add_distr_r. lia. 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