proposition: Lemma wplus_WS_0: forall sz (w1 w2: word sz) b, WS b (w1 ^+ w2) = WS b w1 ^+ w2~0.
proof: Proof. intros. unfold wplus, wordBin; intros. rewrite wordToN_WS_0. destruct b. - rewrite wordToN_WS_1. rewrite <-N.add_assoc. rewrite N.add_comm with (n:= 1%N). rewrite N.add_assoc. rewrite <-N.mul_add_distr_l. apply eq_sym, NToWord_WS_1. - rewrite wordToN_WS_0. rewrite <-N.mul_add_distr_l. apply eq_sym, NToWord_WS_0. Qed.
imports: Coq.Classes.Morphisms Coq.Classes.Morphisms_Prop Coq.Classes.Equivalence Coq.Arith.PeanoNat Coq.ZArith.BinInt  Coq.Arith.Arith Coq.NArith.NArith Coq.Bool.Bool Coq.ZArith.ZArith Coq.Logic.Eqdep_dec Coq.Logic.EqdepFacts Coq.Program.Tactics Coq.Program.Equality Coq.setoid_ring.Ring Coq.setoid_ring.Ring_polynom bbv.Nomega bbv.ZLib bbv.NatLib bbv.NLib bbv.N_Z_nat_conversions bbv.DepEq bbv.DepEqNat bbv.ReservedNotations Coq.micromega.Lia