Git Product home page Git Product logo

cubical-mini's People

Stargazers

 avatar  avatar  avatar

Watchers

 avatar

cubical-mini's Issues

cubical shenanigans

Third time I think about path composition definition and find it biased. Can we do better? Yes, need to create an experimental branch, redefine composition with refl as top path and not as the left one. In the process of refactoring everything else we can uncover the subtleties in the new definition, maybe it doesn't work as good for unification or whatever, need to check this.

Also it would be nice to:

  • consistently reorient all the n-cubes
  • add some drawings for newcomers
  • define Square rotations
  • vertical/horizontal composition of squares

Variadic functions

There's a clear hierarchy of n-ary functions, in order of increasing expressivity (and increasing complexity + unification-unfriendliness):

  • Homogeneous non-dependent
    A -> A -> A -> ... -> R
    These were easy to use (see 7199c36), but too restrictive.
  • Heterogeneous non-dependent
    A -> B -> C -> ... -> R
    Unusable without reflection, enough for basic tasks.
  • Heterogeneous dependent
    (a : A) -> (b : B a) -> C a b -> ... -> R
    Deviously hard. See old drafts by Roman Kireev

The last point is also a prerequisite for generics.

`Show` instances

Manual implementation would be useful too until we get generics

use `opaque`

What's the intended usage? See the official docs and paper.
Need to experiment and find out whether the feature is usable.

Do we want to make levels abstract?

  • HLevel , is-of-hlevel
    Probably not worth the hassle, as we frequently rely on computation for the latter.

There are cases where records were used just to ensure no unneccessary reduction takes place.

  • n-Type and other structured types
    Refactoring this sound promising: we would define all these literally as sigmas/Type-with without record isomoprhism macros

Can we make all abstract definitions opaque instead? There aren't a lot of these, and they're all related either to hlevels or path algebra. Btw, making path algebra stuff abstract would be really nice as it's built from hcomps anyway.

`Erased` theory

Moving Erased to Correspondences was a mistake, lack of subtyping between erased and nonerased types is painful.
We need to get erased counterparts for all definitions in Foundations, that's a lot of work.

  • erased is-of-hlevel should be defined with only one base case (contractibility), because is-prop is NOT equivalent to inductive case under erasure
  • erased fibre
  • all higher constructors in HITs must be erased (see truncations etc)
  • isomorphism and equivalence with erased proofs is a must because we have plenty of stuff which is perfectly computable but uses univalence in proofs
  • Dec with erased proof

Still need:

  • universal property, closure, relationship with double negation
  • stability
  • effect instances (don't touch, wait for effect system)

Follow the original paper by Danielsson and the sequel, code here

`Underlying`

Instance's too inflexible, overlapping instances start to creep in algebraic structures. We need a macro which would banish overlap and allow extracting not only underling types from structured ones but also underlying functions (embeddings, surjections) etc.

Decidability automation

Currently we have Meta.Witness and it's really bad from the point of UX: user is forced to separately define a Dec something then define something in another opaque block for it to be filled by witness! tactic. The tactic must not require such manipulations.

Investigate the cause of this behaviour and leave a comment. First hypothesis: the problem stems from a wacky implementation of Meta.Search tactics, which doesn't provide an easy way to granularly control reductions when composing search hints.

Second part is more subtle. It may be possible to reformulate Meta.Search.Decidable using n-ary Decidable predicate instead of Dec. I'll have no doubt the unifier's gonna choke on such a definition, but it's worth trying.

Algebraic hierarchy

  • infinity-magma
  • n-magma
  • semigroup
  • 2-semigroup
  • monoid
  • commutative monoid
  • 2-monoid
  • group
  • abelian group
  • braided 2-monoid
  • symmetric 2-monoid
  • rig
  • partially/naturally ordered rig
  • ring
  • commutative ring

IO

This is a very vast topic, and needs a lot of further research. One thing is clear though \em no monad transformers and Haskell bullshit like MonadIO, MonadBase IO, MonadBaseControl IO etc.

Guess we'll need something based on interaction trees (hello, algebraic effects). If you love history, read this dusty paper. Hefty algebras are cutting edge level, but I'm afraid they might be too hefty for a minimal library.

Guillaume implemented IO for agda-stdlib, this is what we use now, but it's based on old coinduction. Can we do something like this but with later modality?

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.