Skip to content

Tighten imports some more #2343

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
Apr 4, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions doc/README/Effect/Monad/Partiality.agda
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
-----------------------------------------------------------------------
-- The Agda standard library
--
-- Example showing the use of the partiality Monad
------------------------------------------------------------------------

{-# OPTIONS --cubical-compatible --safe --guardedness #-}

module README.Effect.Monad.Partiality where
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we move this to Data.Nat.McCarthy instead? We could prove the equivalence to the tail recursive version for instance.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That would work too - I have no strong opinion either way.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess I'd vote against. I don't think the f91 is really a piece of functionality that is going to be useful to anyone. Indeed if they are proving properties about it, it'll almost certainly for pedagogical purposes in which case they'll want to redefine it. Therefore the README seems like a good place for it.


open import Codata.Musical.Notation using (♯_)
open import Data.Bool.Base using (false; true)
open import Data.Nat using (ℕ; _+_; _∸_; _≤?_)
open import Effect.Monad.Partiality
open import Relation.Nullary.Decidable using (does)

open Workaround

-- McCarthy's f91:

f91′ : ℕ → ℕ ⊥P
f91′ n with does (n ≤? 100)
... | true = later (♯ (f91′ (11 + n) >>= f91′))
... | false = now (n ∸ 10)

f91 : ℕ → ℕ ⊥
f91 n = ⟦ f91′ n ⟧P
6 changes: 4 additions & 2 deletions src/Algebra/Module/Construct/Idealization.agda
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,11 @@ import Algebra.Definitions as Definitions
import Algebra.Module.Construct.DirectProduct as DirectProduct
import Algebra.Module.Construct.TensorUnit as TensorUnit
open import Algebra.Structures using (IsAbelianGroup; IsRing)
open import Data.Product using (_,_; ∃-syntax)
open import Data.Product.Base using (_,_; ∃-syntax)
open import Level using (Level; _⊔_)
open import Relation.Binary using (Rel; Setoid; IsEquivalence)
open import Relation.Binary.Bundles using (Setoid)
open import Relation.Binary.Core using (Rel)
open import Relation.Binary.Structures using (IsEquivalence)
import Relation.Binary.Reasoning.Setoid as ≈-Reasoning

------------------------------------------------------------------------
Expand Down
6 changes: 3 additions & 3 deletions src/Algebra/Properties/CommutativeMonoid.agda
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@

{-# OPTIONS --cubical-compatible --safe #-}

open import Algebra.Bundles
open import Algebra.Definitions
open import Data.Product using (_,_; proj₂)
open import Algebra.Bundles using (CommutativeMonoid)
open import Algebra.Definitions using (LeftInvertible; RightInvertible; Invertible)
open import Data.Product.Base using (_,_; proj₂)

module Algebra.Properties.CommutativeMonoid
{g₁ g₂} (M : CommutativeMonoid g₁ g₂) where
Expand Down
6 changes: 3 additions & 3 deletions src/Data/Container/Core.agda
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@

module Data.Container.Core where

open import Level
open import Level using (Level; _⊔_; suc)
open import Data.Product.Base as Product using (Σ-syntax)
open import Function.Base
open import Function using (Inverse; _↔_)
open import Function.Base using (_∘_; _∘′_)
open import Function.Bundles using (Inverse; _↔_)
open import Relation.Unary using (Pred; _⊆_)

-- Definition of Containers
Expand Down
8 changes: 4 additions & 4 deletions src/Data/Container/Indexed.agda
Original file line number Diff line number Diff line change
Expand Up @@ -11,14 +11,14 @@

module Data.Container.Indexed where

open import Level
open import Level using (Level; zero; _⊔_)
open import Data.Product.Base as Prod hiding (map)
open import Data.W.Indexed
open import Data.W.Indexed using (W)
open import Function.Base renaming (id to ⟨id⟩; _∘_ to _⟨∘⟩_)
open import Function using (_↔_; Inverse)
open import Function.Bundles using (_↔_; Inverse)
open import Relation.Unary using (Pred; _⊆_)
open import Relation.Binary.Core using (Rel; REL)
open import Relation.Binary.PropositionalEquality using (_≡_; _≗_; refl; trans; subst)
open import Relation.Binary.PropositionalEquality.Core using (_≡_; _≗_; refl; trans; subst)

------------------------------------------------------------------------

Expand Down
6 changes: 3 additions & 3 deletions src/Data/Container/Indexed/Relation/Binary/Pointwise.agda
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@

module Data.Container.Indexed.Relation.Binary.Pointwise where

open import Data.Product using (_,_; Σ-syntax)
open import Function
open import Data.Product.Base using (_,_; Σ-syntax)
open import Function.Base using (_∘_)
open import Level using (Level; _⊔_)
open import Relation.Binary using (REL; _⇒_)
open import Relation.Binary.PropositionalEquality using (_≡_; refl)
open import Relation.Binary.PropositionalEquality.Core using (_≡_; refl)

open import Data.Container.Indexed.Core using (Container; Subtrees; ⟦_⟧)

Expand Down
2 changes: 1 addition & 1 deletion src/Data/List/Properties.agda
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ open import Data.List.Relation.Unary.All using (All; []; _∷_)
open import Data.List.Relation.Unary.Any using (Any; here; there)
open import Data.Maybe.Base as Maybe using (Maybe; just; nothing)
open import Data.Nat.Base
open import Data.Nat.Divisibility
open import Data.Nat.Divisibility using (_∣_; divides; ∣n⇒∣m*n)
open import Data.Nat.Properties
open import Data.Product.Base as Product
using (_×_; _,_; uncurry; uncurry′; proj₁; proj₂; <_,_>)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,10 @@ module Data.List.Relation.Ternary.Appending.Setoid.Properties
where

open import Data.List.Base as List using (List; [])
import Data.List.Properties as Listₚ
import Data.List.Properties as List
open import Data.List.Relation.Binary.Pointwise.Base using (Pointwise; [])
import Data.List.Relation.Ternary.Appending.Properties as Appendingₚ
open import Data.Product using (∃-syntax; _×_; _,_)
open import Data.Product.Base using (∃-syntax; _×_; _,_)
open import Function.Base using (id)
open import Relation.Binary.Core using (_⇒_)
open import Relation.Binary.PropositionalEquality.Core using (refl)
Expand Down Expand Up @@ -45,7 +45,7 @@ open Appendingₚ public
++[]⁻¹ : Appending as [] cs → Pointwise _≈_ as cs
++[]⁻¹ {as} {cs} ls with break ls
... | cs₁ , cs₂ , refl , pw , []
rewrite Listₚ.++-identityʳ cs₁
rewrite List.++-identityʳ cs₁
= pw

respʳ-≋ : ∀ {cs′} → Appending as bs cs → Pointwise _≈_ cs cs′ →
Expand Down
23 changes: 11 additions & 12 deletions src/Data/List/Relation/Unary/First/Properties.agda
Original file line number Diff line number Diff line change
Expand Up @@ -8,17 +8,16 @@

module Data.List.Relation.Unary.First.Properties where

open import Data.Empty
open import Data.Fin.Base using (suc)
open import Data.List.Base as List using (List; []; _∷_)
open import Data.List.Relation.Unary.All as All using (All; []; _∷_)
open import Data.List.Relation.Unary.Any as Any using (here; there)
open import Data.List.Relation.Unary.First
import Data.Sum as Sum
open import Function.Base using (_∘′_; _$_; _∘_; id)
open import Relation.Binary.PropositionalEquality as ≡ using (_≡_; refl; _≗_)
open import Relation.Unary
open import Relation.Nullary.Negation
open import Relation.Binary.PropositionalEquality.Core as ≡ using (_≡_; refl; _≗_)
open import Relation.Unary using (Pred; _⊆_; ∁; Irrelevant; Decidable)
open import Relation.Nullary.Negation using (contradiction)

------------------------------------------------------------------------
-- map
Expand Down Expand Up @@ -52,7 +51,7 @@ module _ {a p q} {A : Set a} {P : Pred A p} {Q : Pred A q} where
module _ {a p q} {A : Set a} {P : Pred A p} {Q : Pred A q} where

All⇒¬First : P ⊆ ∁ Q → All P ⊆ ∁ (First P Q)
All⇒¬First p⇒¬q (px ∷ pxs) [ qx ] = ⊥-elim (p⇒¬q px qx)
All⇒¬First p⇒¬q (px ∷ pxs) [ qx ] = contradiction qx (p⇒¬q px)
All⇒¬First p⇒¬q (_ ∷ pxs) (_ ∷ hf) = All⇒¬First p⇒¬q pxs hf

First⇒¬All : Q ⊆ ∁ P → First P Q ⊆ ∁ (All P)
Expand All @@ -64,16 +63,16 @@ module _ {a p q} {A : Set a} {P : Pred A p} {Q : Pred A q} where

unique-index : ∀ {xs} → P ⊆ ∁ Q → (f₁ f₂ : First P Q xs) → index f₁ ≡ index f₂
unique-index p⇒¬q [ _ ] [ _ ] = refl
unique-index p⇒¬q [ qx ] (px ∷ _) = ⊥-elim (p⇒¬q px qx)
unique-index p⇒¬q (px ∷ _) [ qx ] = ⊥-elim (p⇒¬q px qx)
unique-index p⇒¬q [ qx ] (px ∷ _) = contradiction qx (p⇒¬q px)
unique-index p⇒¬q (px ∷ _) [ qx ] = contradiction qx (p⇒¬q px)
unique-index p⇒¬q (_ ∷ f₁) (_ ∷ f₂) = ≡.cong suc (unique-index p⇒¬q f₁ f₂)

irrelevant : P ⊆ ∁ Q → Irrelevant P → Irrelevant Q → Irrelevant (First P Q)
irrelevant p⇒¬q p-irr q-irr [ qx₁ ] [ qx ] = ≡.cong [_] (q-irr qx₁ qx)
irrelevant p⇒¬q p-irr q-irr [ qx ] (pxf₂) = ⊥-elim (p⇒¬q px₂ qx₁)
irrelevant p⇒¬q p-irr q-irr (pxf₁) [ qx ] = ⊥-elim (p⇒¬q px₁ qx₂)
irrelevant p⇒¬q p-irr q-irr (px ∷ f₁) (px₂f₂) =
≡.cong₂ _∷_ (p-irr px₁ px₂) (irrelevant p⇒¬q p-irr q-irr f₁ f₂)
irrelevant p⇒¬q p-irr q-irr [ px ] [ qx ] = ≡.cong [_] (q-irr px qx)
irrelevant p⇒¬q p-irr q-irr [ qx ] (px ∷ _) = contradiction qx (p⇒¬q px)
irrelevant p⇒¬q p-irr q-irr (px ∷ _) [ qx ] = contradiction qx (p⇒¬q px)
irrelevant p⇒¬q p-irr q-irr (px ∷ f) (qxg) =
≡.cong₂ _∷_ (p-irr px qx) (irrelevant p⇒¬q p-irr q-irr f g)

------------------------------------------------------------------------
-- Decidability
Expand Down
13 changes: 9 additions & 4 deletions src/Data/Nat/Primality/Factorisation.agda
Original file line number Diff line number Diff line change
Expand Up @@ -8,28 +8,33 @@

module Data.Nat.Primality.Factorisation where

open import Data.Empty using (⊥-elim)
open import Data.Nat.Base
open import Data.Nat.Divisibility
using (_∣?_; quotient; quotient>1; quotient-<; quotient-∣; m∣n⇒n≡m*quotient; _∣_; ∣1⇒≡1;
divides)
open import Data.Nat.Properties
open import Data.Nat.Induction using (<-Rec; <-rec; <-recBuilder)
open import Data.Nat.Primality
open import Data.Product as Π using (∃-syntax; _×_; _,_; proj₁; proj₂)
using (Prime; _Rough_; rough∧square>⇒prime; ∤⇒rough-suc; rough∧∣⇒rough; rough∧∣⇒prime;
2-rough; euclidsLemma; prime⇒irreducible; ¬prime[1]; productOfPrimes≥1; prime⇒nonZero)
open import Data.Product.Base using (∃-syntax; _×_; _,_; proj₁; proj₂)
open import Data.List.Base using (List; []; _∷_; _++_; product)
open import Data.List.Membership.Propositional using (_∈_)
open import Data.List.Membership.Propositional.Properties using (∈-∃++)
open import Data.List.Relation.Unary.All as All using (All; []; _∷_)
open import Data.List.Relation.Unary.Any using (here; there)
open import Data.List.Relation.Binary.Permutation.Propositional
using (_↭_; prep; swap; ↭-reflexive; ↭-refl; ↭-trans; refl; module PermutationReasoning)
open import Data.List.Relation.Binary.Permutation.Propositional.Properties using (product-↭; All-resp-↭; shift)
open import Data.List.Relation.Binary.Permutation.Propositional.Properties
using (product-↭; All-resp-↭; shift)
open import Data.Sum.Base using (inj₁; inj₂)
open import Function.Base using (_$_; _∘_; _|>_; flip)
open import Induction using (build)
open import Induction.Lexicographic using (_⊗_; [_⊗_])
open import Relation.Nullary.Decidable using (yes; no)
open import Relation.Nullary.Negation using (contradiction)
open import Relation.Binary.PropositionalEquality using (_≡_; refl; sym; trans; cong; module ≡-Reasoning)
open import Relation.Binary.PropositionalEquality
using (_≡_; refl; sym; trans; cong; module ≡-Reasoning)

private
variable
Expand Down
13 changes: 8 additions & 5 deletions src/Data/Product/Relation/Binary/Pointwise/NonDependent.agda
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,16 @@
module Data.Product.Relation.Binary.Pointwise.NonDependent where

open import Data.Product.Base as Product
open import Data.Product.Properties using (≡-dec)
open import Data.Sum.Base
open import Data.Unit.Base using (⊤)
open import Data.Sum.Base using (inj₁; inj₂)
open import Level using (Level; _⊔_; 0ℓ)
open import Function
open import Function.Base using (_on_; id)
open import Function.Bundles using (Inverse)
open import Relation.Nullary.Decidable using (_×-dec_)
open import Relation.Binary
open import Relation.Binary.Core using (Rel; _⇒_)
open import Relation.Binary.Bundles
using (Setoid; DecSetoid; Preorder; Poset; StrictPartialOrder)
open import Relation.Binary.Definitions
open import Relation.Binary.Structures
open import Relation.Binary.PropositionalEquality.Core as ≡ using (_≡_)
import Relation.Binary.PropositionalEquality.Properties as ≡

Expand Down
1 change: 1 addition & 0 deletions src/Data/Rational/Unnormalised/Base.agda
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
module Data.Rational.Unnormalised.Base where

open import Algebra.Bundles.Raw
using (RawMagma; RawMonoid; RawGroup; RawNearSemiring; RawSemiring; RawRing)
open import Data.Bool.Base using (Bool; true; false; if_then_else_)
open import Data.Integer.Base as ℤ
using (ℤ; +_; +0; +[1+_]; -[1+_]; +<+; +≤+)
Expand Down
12 changes: 8 additions & 4 deletions src/Data/Sum/Algebra.agda
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,16 @@

module Data.Sum.Algebra where

open import Algebra
open import Algebra.Bundles
using (Magma; Semigroup; Monoid; CommutativeMonoid)
open import Algebra.Definitions
open import Algebra.Structures
using (IsMagma; IsSemigroup; IsMonoid; IsCommutativeMonoid)
open import Data.Empty.Polymorphic using (⊥)
open import Data.Product.Base using (_,_)
open import Data.Sum.Base
open import Data.Sum.Properties
open import Data.Unit.Polymorphic using (⊤; tt)
open import Data.Sum.Base using (_⊎_; inj₁; inj₂; map; [_,_]; swap; assocʳ; assocˡ)
open import Data.Sum.Properties using (swap-involutive)
open import Data.Unit.Polymorphic.Base using (⊤; tt)
open import Function.Base using (id; _∘_)
open import Function.Properties.Inverse using (↔-isEquivalence)
open import Function.Bundles using (_↔_; Inverse; mk↔ₛ′)
Expand Down
9 changes: 6 additions & 3 deletions src/Data/Sum/Function/Propositional.agda
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,18 @@

module Data.Sum.Function.Propositional where

open import Data.Sum.Base
open import Data.Sum.Base using (_⊎_)
open import Data.Sum.Function.Setoid
open import Data.Sum.Relation.Binary.Pointwise using (Pointwise-≡↔≡; _⊎ₛ_)
open import Function.Construct.Composition as Compose
open import Function.Related.Propositional
open import Function
open import Function.Base using (id)
open import Function.Bundles
using (Inverse; _⟶_; _⇔_; _↣_; _↠_; _↩_; _↪_; _⤖_; _↔_)
open import Function.Properties.Inverse as Inv
open import Level using (Level; _⊔_)
open import Relation.Binary using (REL; Setoid)
open import Relation.Binary.Core using (REL)
open import Relation.Binary.Bundles using (Setoid)
open import Relation.Binary.PropositionalEquality using (setoid)

private
Expand Down
1 change: 1 addition & 0 deletions src/Data/Unit/Polymorphic/Properties.agda
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ open import Relation.Binary.Structures
open import Relation.Binary.Definitions
using (Decidable; Antisymmetric; Total)
open import Relation.Binary.PropositionalEquality
using (_≡_; refl; trans; decSetoid; setoid; isEquivalence)

private
variable
Expand Down
38 changes: 9 additions & 29 deletions src/Effect/Monad/Partiality.agda
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,15 @@

module Effect.Monad.Partiality where

open import Codata.Musical.Notation
open import Effect.Functor
open import Effect.Applicative
open import Effect.Monad
open import Codata.Musical.Notation using (∞; ♯_; ♭)
open import Effect.Functor using (RawFunctor)
open import Effect.Applicative using (RawApplicative)
open import Effect.Monad using (RawMonad; module Join)
open import Data.Bool.Base using (Bool; false; true)
open import Data.Nat using (ℕ; zero; suc; _+_)
open import Data.Product as Prod hiding (map)
open import Data.Nat.Base using (ℕ; zero; suc; _+_)
open import Data.Product as Prod using (∃; ∄; -,_; ∃₂; _,_; _×_)
open import Data.Sum.Base using (_⊎_; inj₁; inj₂)
open import Function.Base
open import Function.Base using (_∘′_; flip; id; _∘_; _$_; _⟨_⟩_)
open import Function.Bundles using (_⇔_; mk⇔)
open import Level using (Level; _⊔_)
open import Relation.Binary.Core as B hiding (Rel; _⇔_)
Expand All @@ -29,9 +29,8 @@ open import Relation.Binary.Bundles
import Relation.Binary.Properties.Setoid as SetoidProperties
open import Relation.Binary.PropositionalEquality.Core as ≡ using (_≡_)
import Relation.Binary.PropositionalEquality.Properties as ≡
open import Relation.Nullary
open import Relation.Nullary.Decidable hiding (map)
open import Relation.Nullary.Negation
open import Relation.Nullary.Decidable using (yes; no; False; Dec; ¬¬-excluded-middle)
open import Relation.Nullary.Negation using (¬_; ¬¬-Monad)

private
variable
Expand Down Expand Up @@ -934,22 +933,3 @@ idempotent {A = A} B x f = sound (idem x)
laterˡ (refl (Setoid.refl B))) ⟩
(♭ x >>= λ y′ → ♭ x >>= λ y″ → f y′ y″) ≳⟨ idem (♭ x) ⟩≅
(♭ x >>= λ y′ → f y′ y′) ∎))

------------------------------------------------------------------------
-- Example

private
module Example where

open Data.Nat
open Workaround

-- McCarthy's f91:

f91′ : ℕ → ℕ ⊥P
f91′ n with does (n ≤? 100)
... | true = later (♯ (f91′ (11 + n) >>= f91′))
... | false = now (n ∸ 10)

f91 : ℕ → ℕ ⊥
f91 n = ⟦ f91′ n ⟧P
8 changes: 5 additions & 3 deletions src/Function/Properties/Inverse/HalfAdjointEquivalence.agda
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,12 @@

module Function.Properties.Inverse.HalfAdjointEquivalence where

open import Function.Base
open import Function
open import Level
open import Function.Base using (id; _∘_)
open import Function.Bundles using (Inverse; _↔_; mk↔ₛ′)
open import Level using (Level; _⊔_)
open import Relation.Binary.PropositionalEquality
using (_≡_; refl; cong; sym; trans; trans-reflʳ; cong-≡id; cong-∘; naturality;
cong-id; trans-assoc; trans-symˡ; module ≡-Reasoning)

private
variable
Expand Down
Loading