{-# OPTIONS --without-K #-}
open import Algebra.Bundles
open import Level
open import Data.List
import Data.Nat
module SchlehdorfBasics (A… : CommutativeRing Level.zero Level.zero) where
open CommutativeRing A… renaming (Carrier to A)
open import Relation.Unary hiding (Pred; ∅) public
open import Data.Nat hiding (_+_; _*_)
open import Data.Product hiding (_,_) public
open import Data.Sum using (_⊎_) public
open import Data.List using (List; _∷ʳ_; _++_) public
Pred = λ X → Relation.Unary.Pred {Level.zero} X 0ℓ
⊥ : Set
⊥ = 1# ≈ 0#
∅ : Pred A
∅ _ = ⊥
infix 3 ¬_
¬_ : Set → Set
¬ X = X → ⊥
data Dec (X : Set) : Set where
yes : X → Dec X
no : (X → ⊥) → Dec X
ExcludedMiddle : Set₁
ExcludedMiddle = (X : Set) → Dec X
data ⟨_⟩ (X : A → Set) : A → Set where
Base : {x : A} → X x → ⟨ X ⟩ x
Zero : ⟨ X ⟩ 0#
Add : {a b : A} → ⟨ X ⟩ a → ⟨ X ⟩ b → ⟨ X ⟩ (a + b)
Mult : {r a : A} → ⟨ X ⟩ a → ⟨ X ⟩ (r * a)
Eq : {a b : A} → a ≈ b → ⟨ X ⟩ a → ⟨ X ⟩ b
⟨_,_⟩ = λ X a → ⟨ X ∪ { a } ⟩
data {_∥_} {X : Set} (x : X) (P : Set) : Pred X where
In : P → { x ∥ P } x
data comprehension-syntax {X : Set} (F : Pred X) (P : X → Set) : Pred X where
In : {x : X} → F x → P x → comprehension-syntax F P x
syntax comprehension-syntax A (λ x → B) = { x ∶ A ∥ B }
data _[_]≡_ : List A → Data.Nat.ℕ → A → Set where
here : {σ : List A} {a : A} → (a ∷ σ) [ 0 ]≡ a
there : {n : Data.Nat.ℕ} {σ : List A} {a x : A} → σ [ n ]≡ a → (x ∷ σ) [ Data.Nat.suc n ]≡ a