Built with doc-gen4, running Lean4. Bubbles () indicate interactive fragments: hover for details, tap to reveal contents. Use Ctrl+↑Ctrl+↓to navigate, Ctrl+🖱️to focus. On Mac, use Cmdinstead of Ctrl.
/-
Copyright (c) 2014 Robert Lewis. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Robert Lewis, Leonardo de Moura, Johannes Hölzl, Mario Carneiro

! This file was ported from Lean 3 source module algebra.field.power
! leanprover-community/mathlib commit 1e05171a5e8cf18d98d9cf7b207540acb044acae
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
import Mathlib.Algebra.Field.Defs
import Mathlib.Algebra.GroupWithZero.Power
import Mathlib.Algebra.Parity

/-!
# Results about powers in fields or division rings.

This file exists to ensure we can define `Field` with minimal imports,
so contains some lemmas about powers of elements which need imports
beyond those needed for the basic definition.
-/


variable {
α: Type ?u.1342
α
:
Type _: Type (?u.2+1)
Type _
} section DivisionRing variable [
DivisionRing: Type ?u.8 → Type ?u.8
DivisionRing
α: Type ?u.5
α
] {
n:
n
:
: Type
} set_option linter.deprecated false in @[simp] theorem
zpow_bit1_neg: ∀ {α : Type u_1} [inst : DivisionRing α] (a : α) (n : ), (-a) ^ bit1 n = -a ^ bit1 n
zpow_bit1_neg
(
a: α
a
:
α: Type ?u.13
α
) (
n:
n
:
: Type
) : (-
a: α
a
) ^
bit1: {α : Type ?u.30} → [inst : One α] → [inst : Add α] → αα
bit1
n:
n
= -
a: α
a
^
bit1: {α : Type ?u.70} → [inst : One α] → [inst : Add α] → αα
bit1
n:
n
:=

Goals accomplished! 🐙
α: Type u_1

inst✝: DivisionRing α

n✝:

a: α

n:


(-a) ^ bit1 n = -a ^ bit1 n
α: Type u_1

inst✝: DivisionRing α

n✝:

a: α

n:


(-a) ^ bit1 n = -a ^ bit1 n
α: Type u_1

inst✝: DivisionRing α

n✝:

a: α

n:


(-a * -a) ^ n * -a = -a ^ bit1 n
α: Type u_1

inst✝: DivisionRing α

n✝:

a: α

n:


(-a) ^ bit1 n = -a ^ bit1 n
α: Type u_1

inst✝: DivisionRing α

n✝:

a: α

n:


(-a * -a) ^ n * -a = -((a * a) ^ n * a)
α: Type u_1

inst✝: DivisionRing α

n✝:

a: α

n:


(-a) ^ bit1 n = -a ^ bit1 n
α: Type u_1

inst✝: DivisionRing α

n✝:

a: α

n:


(a * a) ^ n * -a = -((a * a) ^ n * a)
α: Type u_1

inst✝: DivisionRing α

n✝:

a: α

n:


(-a) ^ bit1 n = -a ^ bit1 n
α: Type u_1

inst✝: DivisionRing α

n✝:

a: α

n:


(a * a) ^ n * -a = (a * a) ^ n * -a

Goals accomplished! 🐙
#align zpow_bit1_neg
zpow_bit1_neg: ∀ {α : Type u_1} [inst : DivisionRing α] (a : α) (n : ), (-a) ^ bit1 n = -a ^ bit1 n
zpow_bit1_neg
theorem
Odd.neg_zpow: ∀ {α : Type u_1} [inst : DivisionRing α] {n : }, Odd n∀ (a : α), (-a) ^ n = -a ^ n
Odd.neg_zpow
(
h: Odd n
h
:
Odd: {α : Type ?u.903} → [inst : Semiring α] → αProp
Odd
n:
n
) (
a: α
a
:
α: Type ?u.895
α
) : (-
a: α
a
) ^
n:
n
= -
a: α
a
^
n:
n
:=

Goals accomplished! 🐙
α: Type u_1

inst✝: DivisionRing α

n:

h: Odd n

a: α


(-a) ^ n = -a ^ n
α: Type u_1

inst✝: DivisionRing α

a: α

k:

h: Odd (bit1 k)


intro
(-a) ^ bit1 k = -a ^ bit1 k
α: Type u_1

inst✝: DivisionRing α

n:

h: Odd n

a: α


(-a) ^ n = -a ^ n

Goals accomplished! 🐙
#align odd.neg_zpow
Odd.neg_zpow: ∀ {α : Type u_1} [inst : DivisionRing α] {n : }, Odd n∀ (a : α), (-a) ^ n = -a ^ n
Odd.neg_zpow
theorem
Odd.neg_one_zpow: Odd n(-1) ^ n = -1
Odd.neg_one_zpow
(
h: Odd n
h
:
Odd: {α : Type ?u.1350} → [inst : Semiring α] → αProp
Odd
n:
n
) : (-
1: ?m.1379
1
:
α: Type ?u.1342
α
) ^
n:
n
= -
1: ?m.1588
1
:=

Goals accomplished! 🐙
α: Type u_1

inst✝: DivisionRing α

n:

h: Odd n


(-1) ^ n = -1
α: Type u_1

inst✝: DivisionRing α

n:

h: Odd n


(-1) ^ n = -1
α: Type u_1

inst✝: DivisionRing α

n:

h: Odd n


-1 ^ n = -1
α: Type u_1

inst✝: DivisionRing α

n:

h: Odd n


(-1) ^ n = -1
α: Type u_1

inst✝: DivisionRing α

n:

h: Odd n


-1 = -1

Goals accomplished! 🐙
#align odd.neg_one_zpow
Odd.neg_one_zpow: ∀ {α : Type u_1} [inst : DivisionRing α] {n : }, Odd n(-1) ^ n = -1
Odd.neg_one_zpow
end DivisionRing