Giter Club home page Giter Club logo

martinescardo / typetopology Goto Github PK

View Code? Open in Web Editor NEW
212.0 14.0 39.0 14.26 MB

Logical manifestations of topological concepts, and other things, via the univalent point of view.

License: GNU General Public License v3.0

Agda 91.66% TeX 6.68% Haskell 0.02% Shell 0.06% Makefile 1.59%
univalent-foundations agda homotopy-type-theory type-theory constructive-mathematics compact-type totally-separated-type injective-type ordinal searchable-set univalent-mathematics

typetopology's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

typetopology's Issues

Use `꞉` (MODIFIER LETTER COLON) instead of `:` (RATIO) in `UF-Subsingleton-Combinators`

It seems that in

syntax ∀[∶]-syntax I (λ i → e) = Ɐ i ∶ I , e
syntax ∀[]-syntax (λ i → e) = Ɐ i , e

and

syntax ∃[∶]-syntax I (λ i → e) = Ǝ i ∶ I , e
syntax ∃[]-syntax (λ i → e) = Ǝ i , e

I accidentally used the wrong unicode character. I need to fix this at some point.

Port PathSeq from HoTT-Agda to TypeTopology

Request to port the PathSeq functionality from the
PathSeq library in https://github.com/HoTT/HoTT-Agda to
TypeTopology. In HoTT-Agda the data structure PathSeq is defined in lib.Base, with auxiliary structure and data in lib.path-seq.*.

Let us call a term p : x = y a "path" from x to y. Abstract
path manipulation should have the following features:

  1. A data structure to represent a path normalized concatenation. This is called an "abstract path."

    If p, q, r, s, t are paths, then, say, [p,q,r,s,t] should be the corresponding abstract path, regardless of the parentheses. That is, p ∙ (q ∙ (r ∙ (s ∙ t))) and (p ∙ q) ∙ (r ∙ (s ∙ t)) should ideally give rise to the same [p,q,r,s,t].

  2. Path reasoning: equational-style reasoning for abstract path concatenation.

  3. Conversion to and insertion from paths.

  4. Abstract path equality, say, ==

  5. Manipulation: if two abstract paths s (resp. t) contain
    sub-(abstract) paths u (resp. v) and α : u == v, we should
    be able to write somethings of the form:

   lemma : s == t
   lemma = s ==⟨⟨ insertion-point | end-point | α ⟩⟩
           t ==∎∎ 

In the above the insertion and the end points specify where u occur
in s. This should work even if u and v are of not of the same
length.

Should order-theoretic notions be separated out from the Dcpo module?

The Dcpo module contains the definitions of partial order, meet, join and so on.

is-reflexive : 𝓤 ⊔ 𝓣 ̇
is-reflexive = (x : D) → x ⊑ x
is-transitive : 𝓤 ⊔ 𝓣 ̇
is-transitive = (x y z : D) → x ⊑ y → y ⊑ z → x ⊑ z
is-antisymmetric : 𝓤 ⊔ 𝓣 ̇
is-antisymmetric = (x y : D) → x ⊑ y → y ⊑ x → x ≡ y
is-least : D → 𝓤 ⊔ 𝓣 ̇
is-least x = ∀ (y : D) → x ⊑ y
has-least : 𝓤 ⊔ 𝓣 ̇
has-least = Σ x ꞉ D , is-least x
is-upperbound : {I : 𝓥 ̇ } (u : D) (α : I → D) → 𝓥 ⊔ 𝓣 ̇
is-upperbound u α = (i : domain α) → α i ⊑ u

I am now working on implementing the beginnings of locale theory in TypeTopology for which I need these definitions.

Would it be okay to separate these out into a module of their own or was this perhaps deliberately avoided for the sake of self-containment?

Unify two developments of frames (`frame.lagda` and `Frame.lagda`)

I just noticed the existence of the module frame.lagda which I believe defines σ-frames.

Now that we have Frame.lagda (added in #44), we should be a bit careful about the distinction between the two. As of now, the coexistence of multiple definitions that use the same name is a bit confusing.

Define combinators for Ω

It is often convenient to have combinators for Ω, for instance

_∧_ : Ω 𝓤  Ω 𝓥  Ω (𝓤 ⊔ 𝓥)
P ∧ Q = (P holds × Q holds) , γ
 where
  γ = ×-is-prop (holds-is-prop P) (holds-is-prop Q)

agda/cubical has these defined in this module. It might be a good idea to do something similar in TypeTopology.

Proper compilation to HTML

Something we discussed with @martinescardo a while ago. Making an issue here so that I don't forget about it.


Currently, all Agda files in TypeTopology have the .lagda extension. For reasons that I don't really understand, Agda can generate Markdown files only from files with extension .lagda.md. It is possible to generate HTML from .lagda files but this has the problem that the literate parts of the code are treated as code (i.e. are not wrapped in <p></p> tags) so it's not possible to make the formatting nice by adding a CSS file.

It seems that the best way to fix this is by converting .lagda files to .lagda.md files (in fact @martinescardo already wrote a script for this if I recall correctly). It would be great to make the HTML files generated from TypeTopology nicer by doing this and compiling through a Markdown processor.

Define the sublocale of a locale

I realised that I’ve never ported the definition of a sublocale from ayberkt/formal-topology-in-UF. It’s probably a good idea to do this.

Prove equivalence to alternative notion of uniform continuity

In PR #148, I mentioned that I completed a TODO that I saw in module EffectfulForcing.MFPSAndVariations.Continuity. This was actually just one component of the problem mentioned in that TODO, the other half being the same thing for uniform continuity.

Now, to complete PR #210, I need to complete that other component of that TODO.

Add comments to the locale theory development

Make sure that each of the following modules is properly commented:

  • AdjointFunctorTheoremForFrames.lagda
  • BooleanAlgebra.lagda
  • CharacterisationOfContinuity.lagda
  • ClassificationOfScottOpens.lagda
  • Clopen.lagda
  • CompactRegular.lagda
  • Compactness.lagda
  • Complements.lagda
  • Frame.lagda
  • GaloisConnection.lagda
  • HeytingComplementation.lagda
  • HeytingImplication.lagda
  • InitialFrame.lagda
  • NotationalConventions.lagda
  • Nucleus.lagda
  • PatchLocale.lagda
  • PatchOfOmega.lagda
  • PatchProperties.lagda
  • PerfectMaps.lagda
  • Regular.lagda
  • ScottContinuity.lagda
  • ScottLocale.lagda
  • Sierpinski.lagda
  • SmallBasis.lagda
  • Stone.lagda
  • StoneImpliesSpectral.lagda
  • UniversalPropertyOfPatch.lagda
  • WellInside.lagda
  • ZeroDimensionality.lagda
  • index.lagda
  • Properties.lagda
  • Spectrality.SpectralLocale.lagda
  • Spectrality.SpectralMap.lagda
  • Spectrality.SpectralityOfOmega.lagda
  • WayBelowRelation.Definition.lagda
  • WayBelowRelation.Properties.lagda

Propositional truncation causes some types to not be strictly positive

I'm trying to define a QIIT with the following constructors:

data _⊥ (A : 𝓤 ̇ ) : 𝓥 ⁺ ⊔ 𝓤 ̇
data Leq (A : 𝓤 ̇ ) : A ⊥  A ⊥  𝓥 ⁺ ⊔ 𝓤 ̇ 

data _⊥ A where
 -- ...
 lub : {I : 𝓥 ̇ }  (Σ α ꞉ (I  A ⊥) , is-directed (Leq A) α)  A ⊥
 -- ...

data Leq A where
 -- ...
 lub-is-upperbound : {I : 𝓥 ̇ } {α : I  A ⊥} (δ : is-directed (Leq A) α)
                     (i : I)  Leq A (α i) (lub (α , δ))
 -- ...

Agda does not accept these types, as it cannot verify that they're strictly positive. This has to do with the definition of is-directed:

is-directed : {I : 𝓥 ̇ } {X : 𝓦' ̇ } (_⊑_ : X  X  𝓣 ̇ )  (I  X)  𝓥 ⊔ 𝓣 ̇
is-directed {I = I} _⊑_ α =
 ∥ I ∥ ×
 ((i j : I)  ∥ Σ k ꞉ I , (α i ⊑ α k) × (α j ⊑ α k) ∥)

This causes Leq A to occur inside of the propositional truncation, and as Agda only knows that ∥_∥ exists but knows nothing about how its elements may be constructed, Agda cannot verify that Leq A occurs in a strictly positive place.

However, instead of just assuming that a propositional truncation type exists, we can also define it and only assume it's properties, like follows (I used postulate here, but I would of course replace that with a modular approach if this makes it to a PR):

data ∥_∥' {𝓤 : Universe} (X : 𝓤 ̇ ) : 𝓤 ̇  where
 ∣_∣' : X  ∥ X ∥'

postulate
 ∥∥'-is-prop : {𝓤 : Universe} {X : 𝓤 ̇ }  is-prop ∥ X ∥'
 ∥∥'-rec : {𝓤 𝓥 : Universe} {X : 𝓤 ̇ } {P : 𝓥 ̇ }  is-prop P  (X  P)  ∥ X ∥'  P

It's easy to show that ∥_∥ and ∥_∥' are equivalent and if I use ∥_∥' in the definition of is-directed, Agda will be able to typecheck the above QIIT.

It therefore seems to me that defining the propositional truncation and only assuming its properties, is preferred over assuming the whole type. Is this something we want to change in TypeTopology?

Weird message in typechecking workflow logs

Note: I'm creating this issue so that I don't forget about it. Nothing needs to be done about it for now.


The typechecking logs show a weird message

/entrypoint.sh: 37: [: true: unexpected operator

and I'm not sure why. Typechecking seems to be going fine though so this is probably nothing serious. In any case, I should take a look at why this is happening.

A to-do from the `LiftingSetAlgebraic` module

A TODO that I saw in the DomainTheory.Lifting.LiftingSetAlgebraic module:

TODO: Show that freely adding a least element to a dcpo gives an algebraic dcpo
      with a small compact basis if the original dcpo had a small compact basis.
      (Do so in another file, e.g. LiftingDcpoAlgebraic.lagda).

Remove completed TODO on the topology of Scott domains

@tomdjong: The index of the DomainTheory development lists the TODO:

4. Formalize the definition of the Scott topology of a (continuous) dcpo and
show that the Scott opens form a frame, using Ayberk Tosun's formalization of
frames and locales, see Locales.index.
Additionally, show that the Scott topology of a continuous dcpo is spectral,
as defined in Locales.CompactRegular.

and says

If you'd like to work on Item 4, please get in touch with Ayberk Tosun.

This has now been done (in PR #255) so we can remove this TODO (and maybe provide some pointers to the modules in which it has been done).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.