feat/fix(library/data/nat,int): add power to int, add trans attributes, power notation
This commit is contained in:
parent
a662f925cb
commit
f65a49b2c3
7 changed files with 41 additions and 4 deletions
|
@ -5,4 +5,4 @@ Released under Apache 2.0 license as described in the file LICENSE.
|
|||
Module: data.int.default
|
||||
Author: Jeremy Avigad
|
||||
-/
|
||||
import .basic .order .div
|
||||
import .basic .order .div .power
|
||||
|
|
|
@ -6,3 +6,4 @@ The integers.
|
|||
* [basic](basic.lean) : the integers, with basic operations
|
||||
* [order](order.lean) : the order relations and the sign function
|
||||
* [div](div.lean) : div, mod, gcd, lcm
|
||||
* [power](power.lean)
|
||||
|
|
|
@ -259,6 +259,9 @@ section migrate_algebra
|
|||
|
||||
migrate from algebra with int
|
||||
replacing has_le.ge → ge, has_lt.gt → gt, sign → sign, abs → abs, dvd → dvd, sub → sub
|
||||
|
||||
attribute le.trans ge.trans lt.trans gt.trans [trans]
|
||||
attribute lt_of_lt_of_le lt_of_le_of_lt gt_of_gt_of_ge gt_of_ge_of_gt [trans]
|
||||
end migrate_algebra
|
||||
|
||||
/- more facts specific to int -/
|
||||
|
|
30
library/data/int/power.lean
Normal file
30
library/data/int/power.lean
Normal file
|
@ -0,0 +1,30 @@
|
|||
/-
|
||||
Copyright (c) 2015 Jeremy Avigad. All rights reserved.
|
||||
Released under Apache 2.0 license as described in the file LICENSE.
|
||||
Author: Jeremy Avigad
|
||||
|
||||
The power function on the integers.
|
||||
-/
|
||||
import data.int.basic data.int.order data.int.div algebra.group_power
|
||||
|
||||
namespace int
|
||||
|
||||
section migrate_algebra
|
||||
open [classes] algebra
|
||||
|
||||
local attribute int.integral_domain [instance]
|
||||
local attribute int.linear_ordered_comm_ring [instance]
|
||||
local attribute int.decidable_linear_ordered_comm_ring [instance]
|
||||
|
||||
definition pow (a : ℤ) (n : ℕ) : ℤ := algebra.pow a n
|
||||
infix ^ := pow
|
||||
|
||||
migrate from algebra with int
|
||||
replacing dvd → dvd, has_le.ge → ge, has_lt.gt → gt, pow → pow
|
||||
hiding add_pos_of_pos_of_nonneg, add_pos_of_nonneg_of_pos,
|
||||
add_eq_zero_iff_eq_zero_and_eq_zero_of_nonneg_of_nonneg, le_add_of_nonneg_of_le,
|
||||
le_add_of_le_of_nonneg, lt_add_of_nonneg_of_lt, lt_add_of_lt_of_nonneg,
|
||||
lt_of_mul_lt_mul_left, lt_of_mul_lt_mul_right, pos_of_mul_pos_left, pos_of_mul_pos_right
|
||||
end migrate_algebra
|
||||
|
||||
end int
|
|
@ -175,6 +175,9 @@ section migrate_algebra
|
|||
le_add_of_le_of_nonneg, lt_add_of_nonneg_of_lt, lt_add_of_lt_of_nonneg,
|
||||
lt_of_mul_lt_mul_left, lt_of_mul_lt_mul_right, pos_of_mul_pos_left, pos_of_mul_pos_right
|
||||
|
||||
attribute le.trans ge.trans lt.trans gt.trans [trans]
|
||||
attribute lt_of_lt_of_le lt_of_le_of_lt gt_of_gt_of_ge gt_of_ge_of_gt [trans]
|
||||
|
||||
theorem add_pos_left : ∀{a : ℕ}, 0 < a → ∀b : ℕ, 0 < a + b :=
|
||||
take a H b, @algebra.add_pos_of_pos_of_nonneg _ _ a b H !zero_le
|
||||
theorem add_pos_right : ∀{a : ℕ}, 0 < a → ∀b : ℕ, 0 < b + a :=
|
||||
|
|
|
@ -15,6 +15,8 @@ section migrate_algebra
|
|||
local attribute nat.linear_ordered_semiring [instance]
|
||||
|
||||
definition pow (a : ℕ) (n : ℕ) : ℕ := algebra.pow a n
|
||||
infix ^ := pow
|
||||
|
||||
migrate from algebra with nat
|
||||
replacing dvd → dvd, has_le.ge → ge, has_lt.gt → gt, pow → pow
|
||||
hiding add_pos_of_pos_of_nonneg, add_pos_of_nonneg_of_pos,
|
||||
|
|
|
@ -1,8 +1,6 @@
|
|||
/-
|
||||
Copyright (c) 2014 Microsoft Corporation. All rights reserved.
|
||||
Released under Apache 2.0 license as described in the file LICENSE.
|
||||
|
||||
Module: data.rat.default
|
||||
Author: Jeremy Avigad
|
||||
-/
|
||||
import .basic
|
||||
import .basic .order
|
||||
|
|
Loading…
Reference in a new issue