proposition: Lemma shiftl_nat_pow_alt `{Naturals B2} `{!NatPowSpec A B2 pw} `{!SemiRing_Morphism (f : B2 → B)} x n : x ≪ f n = x * 2 ^ n.
proof: Proof. revert n. apply naturals.induction. solve_proper. rewrite rings.preserves_0, ?shiftl_0, nat_pow_0. ring. intros n E. rewrite rings.preserves_plus, rings.preserves_1, shiftl_S. rewrite E, nat_pow_S. ring. Qed.
imports: Coq.setoid_ring.Ring MathClasses.interfaces.abstract_algebra MathClasses.interfaces.naturals MathClasses.interfaces.integers MathClasses.interfaces.additional_operations MathClasses.interfaces.orders