Skip to content

Commit d2ca7e8

Browse files
authored
Qualified imports in Data.Integer.Divisibility fixing #2280 (#2294)
* fixing #2280 * re-export constructor via pattern synonym * updated `README` * refactor: better disambiguation; added a note in `CHANGELOG`
1 parent 6f884dd commit d2ca7e8

File tree

6 files changed

+31
-30
lines changed

6 files changed

+31
-30
lines changed

CHANGELOG.md

+5
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,11 @@ Additions to existing modules
127127
nonZeroIndex : Fin n → ℕ.NonZero n
128128
```
129129

130+
* In `Data.Integer.Divisisbility`: introduce `divides` as an explicit pattern synonym
131+
```agda
132+
pattern divides k eq = Data.Nat.Divisibility.divides k eq
133+
```
134+
130135
* In `Data.List.Relation.Unary.All.Properties`:
131136
```agda
132137
All-catMaybes⁺ : All (Maybe.All P) xs → All P (catMaybes xs)

doc/README/Data/Integer.agda

+8-8
Original file line numberDiff line numberDiff line change
@@ -33,29 +33,29 @@ ex₃ = + 1 + + 3 * - + 2 - + 4
3333
-- Propositional equality and some related properties can be found
3434
-- in Relation.Binary.PropositionalEquality.
3535

36-
open import Relation.Binary.PropositionalEquality as P using (_≡_)
36+
open import Relation.Binary.PropositionalEquality as using (_≡_)
3737

3838
ex₄ : ex₃ ≡ - + 9
39-
ex₄ = P.refl
39+
ex₄ = .refl
4040

4141
-- Data.Integer.Properties contains a number of properties related to
4242
-- integers. Algebra defines what a commutative ring is, among other
4343
-- things.
4444

45-
import Data.Integer.Properties as ℤₚ
45+
import Data.Integer.Properties as
4646

4747
ex₅ : i j i * j ≡ j * i
48-
ex₅ i j = ℤₚ.*-comm i j
48+
ex₅ i j = .*-comm i j
4949

5050
-- The module ≡-Reasoning in Relation.Binary.PropositionalEquality
5151
-- provides some combinators for equational reasoning.
5252

53-
open P.≡-Reasoning
53+
open .≡-Reasoning
5454

5555
ex₆ : i j i * (j + + 0) ≡ j * i
5656
ex₆ i j = begin
57-
i * (j + + 0) ≡⟨ P.cong (i *_) (ℤₚ.+-identityʳ j) ⟩
58-
i * j ≡⟨ ℤₚ.*-comm i j ⟩
57+
i * (j + + 0) ≡⟨ .cong (i *_) (.+-identityʳ j) ⟩
58+
i * j ≡⟨ .*-comm i j ⟩
5959
j * i ∎
6060

6161
-- The module RingSolver in Data.Integer.Solver contains a solver
@@ -67,4 +67,4 @@ open +-*-Solver
6767

6868
ex₇ : i j i * - j - j * i ≡ - + 2 * i * j
6969
ex₇ = solve 2 (λ i j i :* :- j :- j :* i := :- con (+ 2) :* i :* j)
70-
P.refl
70+
.refl

src/Data/Integer/Divisibility.agda

+10-10
Original file line numberDiff line numberDiff line change
@@ -14,42 +14,42 @@ open import Function.Base using (_on_; _$_)
1414
open import Data.Integer.Base
1515
open import Data.Integer.Properties
1616
import Data.Nat.Base as ℕ
17-
import Data.Nat.Divisibility as ℕᵈ
17+
import Data.Nat.Divisibility as
1818
open import Level
1919
open import Relation.Binary.Core using (Rel; _Preserves_⟶_)
20-
open import Relation.Binary.PropositionalEquality
20+
2121

2222
------------------------------------------------------------------------
2323
-- Divisibility
2424

2525
infix 4 _∣_
2626

2727
_∣_ : Rel ℤ 0ℓ
28-
_∣_ = ℕᵈ._∣_ on ∣_∣
28+
_∣_ = ._∣_ on ∣_∣
2929

30-
open ℕᵈ public using (divides)
30+
pattern divides k eq = ℕ.divides k eq
3131

3232
------------------------------------------------------------------------
3333
-- Properties of divisibility
3434

3535
*-monoʳ-∣ : k (k *_) Preserves _∣_ ⟶ _∣_
3636
*-monoʳ-∣ k {i} {j} i∣j = begin
3737
∣ k * i ∣ ≡⟨ abs-* k i ⟩
38-
∣ k ∣ ℕ.* ∣ i ∣ ∣⟨ ℕᵈ.*-monoʳ-∣ ∣ k ∣ i∣j ⟩
39-
∣ k ∣ ℕ.* ∣ j ∣ ≡⟨ sym (abs-* k j) ⟩
38+
∣ k ∣ ℕ.* ∣ i ∣ ∣⟨ .*-monoʳ-∣ ∣ k ∣ i∣j ⟩
39+
∣ k ∣ ℕ.* ∣ j ∣ ≡⟨ abs-* k j
4040
∣ k * j ∣ ∎
41-
where open ℕᵈ.∣-Reasoning
41+
where open .∣-Reasoning
4242

4343
*-monoˡ-∣ : k (_* k) Preserves _∣_ ⟶ _∣_
4444
*-monoˡ-∣ k {i} {j} rewrite *-comm i k | *-comm j k = *-monoʳ-∣ k
4545

4646
*-cancelˡ-∣ : k {i j} .{{_ : NonZero k}} k * i ∣ k * j i ∣ j
47-
*-cancelˡ-∣ k {i} {j} k*i∣k*j = ℕᵈ.*-cancelˡ-∣ ∣ k ∣ $ begin
48-
∣ k ∣ ℕ.* ∣ i ∣ ≡⟨ sym (abs-* k i) ⟩
47+
*-cancelˡ-∣ k {i} {j} k*i∣k*j = .*-cancelˡ-∣ ∣ k ∣ $ begin
48+
∣ k ∣ ℕ.* ∣ i ∣ ≡⟨ abs-* k i
4949
∣ k * i ∣ ∣⟨ k*i∣k*j ⟩
5050
∣ k * j ∣ ≡⟨ abs-* k j ⟩
5151
∣ k ∣ ℕ.* ∣ j ∣ ∎
52-
where open ℕᵈ.∣-Reasoning
52+
where open .∣-Reasoning
5353

5454
*-cancelʳ-∣ : k {i j} .{{_ : NonZero k}} i * k ∣ j * k i ∣ j
5555
*-cancelʳ-∣ k {i} {j} rewrite *-comm i k | *-comm j k = *-cancelˡ-∣ k

src/Data/Integer/Divisibility/Signed.agda

+6-8
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,7 @@ module Data.Integer.Divisibility.Signed where
1111
open import Function.Base using (_⟨_⟩_; _$_; _$′_; _∘_; _∘′_)
1212
open import Data.Integer.Base
1313
open import Data.Integer.Properties
14-
open import Data.Integer.Divisibility as Unsigned
15-
using (divides)
16-
renaming (_∣_ to _∣ᵤ_)
14+
import Data.Integer.Divisibility as Unsigned
1715
import Data.Nat.Base as ℕ
1816
import Data.Nat.Divisibility as ℕ
1917
import Data.Nat.Coprimality as ℕ
@@ -45,9 +43,9 @@ open _∣_ using (quotient) public
4543
------------------------------------------------------------------------
4644
-- Conversion between signed and unsigned divisibility
4745

48-
∣ᵤ⇒∣ : {k i} k ∣ᵤ i k ∣ i
49-
∣ᵤ⇒∣ {k} {i} (divides 0 eq) = divides (+ 0) (∣i∣≡0⇒i≡0 eq)
50-
∣ᵤ⇒∣ {k} {i} (divides q@(ℕ.suc _) eq) with k ≟ +0
46+
∣ᵤ⇒∣ : {k i} k Unsigned.∣ i k ∣ i
47+
∣ᵤ⇒∣ {k} {i} (Unsigned.divides 0 eq) = divides (+ 0) (∣i∣≡0⇒i≡0 eq)
48+
∣ᵤ⇒∣ {k} {i} (Unsigned.divides q@(ℕ.suc _) eq) with k ≟ +0
5149
... | yes refl = divides +0 (∣i∣≡0⇒i≡0 (trans eq (ℕ.*-zeroʳ q)))
5250
... | no neq = divides (sign i Sign.* sign k ◃ q) (◃-cong sign-eq abs-eq)
5351
where
@@ -85,8 +83,8 @@ open _∣_ using (quotient) public
8583
∣ i ∣ ∎
8684
where open ≡-Reasoning
8785

88-
∣⇒∣ᵤ : {k i} k ∣ i k ∣ᵤ i
89-
∣⇒∣ᵤ {k} {i} (divides q eq) = divides ∣ q ∣ $′ begin
86+
∣⇒∣ᵤ : {k i} k ∣ i k Unsigned.∣ i
87+
∣⇒∣ᵤ {k} {i} (divides q eq) = Unsigned.divides ∣ q ∣ $′ begin
9088
∣ i ∣ ≡⟨ cong ∣_∣ eq ⟩
9189
∣ q * k ∣ ≡⟨ abs-* q k ⟩
9290
∣ q ∣ ℕ.* ∣ k ∣ ∎

src/Data/Integer/GCD.agda

+1-2
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,9 @@ module Data.Integer.GCD where
1111
open import Data.Integer.Base
1212
open import Data.Integer.Divisibility
1313
open import Data.Integer.Properties
14-
open import Data.Nat.Base
1514
import Data.Nat.GCD as ℕ
1615
open import Data.Product.Base using (_,_)
17-
open import Relation.Binary.PropositionalEquality
16+
open import Relation.Binary.PropositionalEquality.Core using (_≡_; cong)
1817

1918
open import Algebra.Definitions {A = ℤ} _≡_ as Algebra
2019
using (Associative; Commutative; LeftIdentity; RightIdentity; LeftZero; RightZero; Zero)

src/Data/Integer/LCM.agda

+1-2
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,8 @@ module Data.Integer.LCM where
1111
open import Data.Integer.Base
1212
open import Data.Integer.Divisibility
1313
open import Data.Integer.GCD
14-
open import Data.Nat.Base using (ℕ)
1514
import Data.Nat.LCM as ℕ
16-
open import Relation.Binary.PropositionalEquality
15+
open import Relation.Binary.PropositionalEquality.Core using (_≡_; cong)
1716

1817
------------------------------------------------------------------------
1918
-- Definition

0 commit comments

Comments
 (0)