All Projects → xieyuheng → cat

xieyuheng / cat

Licence: GPL-3.0 license
A categorical semantics library in Agda.

Programming Languages

Agda
84 projects
shell
77523 projects

Projects that are alternatives of or similar to cat

Typedefs
Programming language agnostic type construction language based on polynomials.
Stars: ✭ 337 (+2006.25%)
Mutual labels:  type-theory, category-theory
reed-thesis
My undergradate thesis on coinductive types in univalent type theory
Stars: ✭ 14 (-12.5%)
Mutual labels:  type-theory, category-theory
Plt
λΠ Programming Language Theory
Stars: ✭ 4,609 (+28706.25%)
Mutual labels:  type-theory, category-theory
Foundational Knowledge For Programmers
List of resources about foundational knowledge for programmers (supposed to last a few decades)
Stars: ✭ 115 (+618.75%)
Mutual labels:  type-theory, category-theory
SymmetryBookFormalization
Univalent mathematics in Agda
Stars: ✭ 117 (+631.25%)
Mutual labels:  type-theory, category-theory
Hott Uf Agda Lecture Notes
Lecture notes on univalent foundations of mathematics with Agda
Stars: ✭ 162 (+912.5%)
Mutual labels:  type-theory
reading-material
Reading schedule and our library of pdfs
Stars: ✭ 19 (+18.75%)
Mutual labels:  type-theory
Proofs
A selection of formal proofs in Coq.
Stars: ✭ 135 (+743.75%)
Mutual labels:  type-theory
Kind
A modern proof language
Stars: ✭ 2,075 (+12868.75%)
Mutual labels:  type-theory
shapesafe
SHAPE/S∀F∃: static prover/type-checker for N-D array programming in Scala, a use case of intuitionistic type theory
Stars: ✭ 17 (+6.25%)
Mutual labels:  type-theory
minitt-rs
Dependently-typed lambda calculus, Mini-TT, extended and implemented in Rust
Stars: ✭ 101 (+531.25%)
Mutual labels:  type-theory
functional-structures-refactoring-kata
Starting code and proposed solution for Functional Structures Refactoring Kata
Stars: ✭ 31 (+93.75%)
Mutual labels:  category-theory
Lean
Homepage Theorem Proving in Lean FAQ
Stars: ✭ 2,006 (+12437.5%)
Mutual labels:  type-theory
gidti
Book: Gentle Introduction to Dependent Types with Idris
Stars: ✭ 70 (+337.5%)
Mutual labels:  type-theory
Ditto
A Super Kawaii Dependently Typed Programming Language
Stars: ✭ 154 (+862.5%)
Mutual labels:  type-theory
voile-rs
Dependently-typed row-polymorphic programming language, evolved from minitt-rs
Stars: ✭ 89 (+456.25%)
Mutual labels:  type-theory
cubical-categories
Category theory formalized in cubical agda
Stars: ✭ 20 (+25%)
Mutual labels:  category-theory
monadic-mondays
Code samples for #monadicmonday topics
Stars: ✭ 86 (+437.5%)
Mutual labels:  category-theory
hamcat
Category Theory for Programmers の勉強記録
Stars: ✭ 13 (-18.75%)
Mutual labels:  category-theory
Sml Redprl
The People's Refinement Logic
Stars: ✭ 214 (+1237.5%)
Mutual labels:  type-theory

Cat -- A categorical semantics library in Agda

[Work in progress, but you can star it first.]

The aim of this library is to provide semantics to type theories.
For examples,

  • inductive types can be modeled by initial algebras,
  • the validity of a group of introduction rules and elimination rule can be ensured by adjoint functors.

Using inconsistent system

The inconsistent type-in-type system is used.
At this early stage of development, we care more about easy to use than consistency.

An inconsistent system is still very valuable for creative reasoning,
and we can always use a consistent system later in the development.

This argument is like the argument against premature optimization in programming.

Coding style

A consistent and scale-able coding style is important for keeping a software library maintainable.
This is specially true for languages with strong syntax extension supports (like Agda).
The preferred coding style of this library includes,

  • prefer to use ASCII instead of unicode,
  • prefer to use prefix notation instead of infix notation,
    except for syntax sugar and some associative binary functions,
  • prefer to use lisp-naming-convention (see the following code example) instead of camelCase.

Example

record category-t : type where
  field
    object-t : type
    morphism-t : object-t -> object-t -> type
    id : (a : object-t) -> morphism-t a a
    compose : {a b c : object-t} ->
      morphism-t a b ->
      morphism-t b c ->
      morphism-t a c
    id-left : {a b : object-t} ->
      (f : morphism-t a b) ->
      the-eqv-t (morphism-t a b)
        (compose (id a) f) f
    id-right : {a b : object-t} ->
      (f : morphism-t a b) ->
      the-eqv-t (morphism-t a b)
        (compose f (id b)) f
    compose-associative : {a b c d : object-t} ->
      (f : morphism-t a b) ->
      (g : morphism-t b c) ->
      (h : morphism-t c d) ->
      the-eqv-t (morphism-t a d)
        (compose f (compose g h))
        (compose (compose f g) h)

Community

Contributions are welcome, see current TODO list for tasks.
(Please add yourself to the AUTHORS list if you made any contributions.)

License

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].