# Library Coq.Numbers.Integer.Abstract.ZPow

Properties of the power function

Require Import Bool ZAxioms ZMulOrder ZParity ZSgnAbs NZPow.

Module Type ZPowProp
(Import A : ZAxiomsSig')
(Import B : ZMulOrderProp A)
(Import C : ZParityProp A B)
(Import D : ZSgnAbsProp A B).

Include NZPowProp A A B.

A particular case of pow_add_r, with no precondition

Lemma pow_twice_r a b : a^(2*b) == a^b * a^b.

Parity of power

Lemma even_pow : forall a b, 0<b -> even (a^b) = even a.

Lemma odd_pow : forall a b, 0<b -> odd (a^b) = odd a.

Properties of power of negative numbers

Lemma pow_opp_even : forall a b, Even b -> (-a)^b == a^b.

Lemma pow_opp_odd : forall a b, Odd b -> (-a)^b == -(a^b).

Lemma pow_even_abs : forall a b, Even b -> a^b == (abs a)^b.

Lemma pow_even_nonneg : forall a b, Even b -> 0 <= a^b.

Lemma pow_odd_abs_sgn : forall a b, Odd b -> a^b == sgn a * (abs a)^b.

Lemma pow_odd_sgn : forall a b, 0<=b -> Odd b -> sgn (a^b) == sgn a.

Lemma abs_pow : forall a b, abs (a^b) == (abs a)^b.

End ZPowProp.