proposition: Lemma pow2_S_z: forall n, Z.of_nat (pow2 (S n)) = (2 * Z.of_nat (pow2 n))%Z.
proof: Proof. intros. replace (2 * Z.of_nat (pow2 n))%Z with (Z.of_nat (pow2 n) + Z.of_nat (pow2 n))%Z by lia. simpl. repeat rewrite Nat2Z.inj_add. ring. Qed.
imports: Coq.Classes.Morphisms Coq.Classes.Morphisms_Prop Coq.Bool.Bool Coq.Arith.Arith Coq.micromega.Lia Coq.NArith.NArith Coq.ZArith.ZArith bbv.N_Z_nat_conversions bbv.Nomega