Free-group lemmas (#106)

This commit is contained in:
Patrick Stevens
2020-04-05 11:09:12 +01:00
committed by GitHub
parent 61b5f8acc5
commit 2f07a8e972
18 changed files with 327 additions and 188 deletions

View File

@@ -0,0 +1,18 @@
{-# OPTIONS --safe --warning=error --without-K #-}
open import Agda.Primitive using (Level; lzero; lsuc; _⊔_)
open import LogicalFormulae
open import Functions
open import Numbers.Naturals.Definition
open import Sets.FinSet.Definition
open import Setoids.Setoids
module Setoids.Cardinality.Infinite.Definition where
InfiniteSetoid : {a b : _} {A : Set a} (S : Setoid {a} {b} A) Set (a b)
InfiniteSetoid {A = A} S = (n : ) (f : FinSet n A) (SetoidBijection (reflSetoid (FinSet n)) S f) False
record DedekindInfiniteSetoid {a b : _} {A : Set a} (S : Setoid {a} {b} A) : Set (a b) where
field
inj : A
isInjection : SetoidInjection (reflSetoid ) S inj

View File

@@ -0,0 +1,29 @@
{-# OPTIONS --safe --warning=error --without-K #-}
open import Agda.Primitive using (Level; lzero; lsuc; _⊔_)
open import LogicalFormulae
open import Functions
open import Numbers.Naturals.Definition
open import Numbers.Naturals.Order
open import Sets.FinSet.Definition
open import Sets.FinSet.Lemmas
open import Setoids.Setoids
open import Setoids.Cardinality.Infinite.Definition
open import Sets.Cardinality.Infinite.Lemmas
open import Setoids.Subset
open import Sets.EquivalenceRelations
module Setoids.Cardinality.Infinite.Lemmas where
finsetNotInfiniteSetoid : {n : } InfiniteSetoid (reflSetoid (FinSet n)) False
finsetNotInfiniteSetoid {n} isInfinite = isInfinite n id (record { inj = record { wellDefined = id ; injective = id } ; surj = record { wellDefined = id ; surjective = λ {x} x , refl } })
dedekindInfiniteImpliesInfiniteSetoid : {a b : _} {A : Set a} (S : Setoid {a} {b} A) DedekindInfiniteSetoid S InfiniteSetoid S
dedekindInfiniteImpliesInfiniteSetoid S record { inj = inj ; isInjection = isInj } zero f isBij with SetoidInvertible.inverse (setoidBijectiveImpliesInvertible isBij) (inj 0)
... | ()
dedekindInfiniteImpliesInfiniteSetoid {A = A} S record { inj = inj ; isInjection = isInj } (succ n) f isBij = noInjectionNToFinite {f = t} tInjective
where
t : FinSet (succ n)
t n = SetoidInvertible.inverse (setoidBijectiveImpliesInvertible isBij) (inj n)
tInjective : Injection t
tInjective pr = SetoidInjection.injective isInj (SetoidInjection.injective (SetoidBijection.inj (setoidInvertibleImpliesBijective (inverseInvertible (setoidBijectiveImpliesInvertible isBij)))) pr)