All Projects → latte-central → Latte

latte-central / Latte

Licence: mit
LaTTe : a Laboratory for Type Theory experiments (in clojure)

Programming Languages

clojure
4091 projects

Projects that are alternatives of or similar to Latte

Philosophy
A list of philosophy books and resources.
Stars: ✭ 206 (-1.9%)
Mutual labels:  logic, mathematics
discrete-math-python-scripts
Python code snippets from Discrete Mathematics for Computer Science specialization at Coursera
Stars: ✭ 98 (-53.33%)
Mutual labels:  logic, mathematics
Resources
Resources on various topics being worked on at IvLabs
Stars: ✭ 158 (-24.76%)
Mutual labels:  mathematics
Odl
Operator Discretization Library https://odlgroup.github.io/odl/
Stars: ✭ 198 (-5.71%)
Mutual labels:  mathematics
Ugm
Ubpa Graphics Mathematics
Stars: ✭ 178 (-15.24%)
Mutual labels:  mathematics
42
@rsapkf's linkroll.
Stars: ✭ 1,906 (+807.62%)
Mutual labels:  mathematics
Swiftymath
Pure Math in Pure Swift.
Stars: ✭ 182 (-13.33%)
Mutual labels:  mathematics
Math Php
Powerful modern math library for PHP: Features descriptive statistics and regressions; Continuous and discrete probability distributions; Linear algebra with matrices and vectors, Numerical analysis; special mathematical functions; Algebra
Stars: ✭ 2,009 (+856.67%)
Mutual labels:  mathematics
Acl2
ACL2 System and Books as Maintained by the Community
Stars: ✭ 200 (-4.76%)
Mutual labels:  logic
Computator.net
Computator.NET is a special kind of numerical software that is fast and easy to use but not worse than others feature-wise. It's features include: - Real and complex functions charts - Real and complex calculator - Real functions numerical calculations including different methods - Over 107 Elementary functions - Over 141 Special functions - Over 21 Matrix functions and operations - Scripting language with power to easy computations including matrices - You can declare your own custom functions with scripting language
Stars: ✭ 174 (-17.14%)
Mutual labels:  mathematics
Pybotics
The Python Toolbox for Robotics
Stars: ✭ 192 (-8.57%)
Mutual labels:  mathematics
Jwave
A Discrete Fourier Transform (DFT), a Fast Wavelet Transform (FWT), and a Wavelet Packet Transform (WPT) algorithm in 1-D, 2-D, and 3-D using normalized orthogonal (orthonormal) Haar, Coiflet, Daubechie, Legendre and normalized biorthognal wavelets in Java.
Stars: ✭ 174 (-17.14%)
Mutual labels:  mathematics
Riemann book
An interactive book about the Riemann problem for hyperbolic PDEs, using Jupyter notebooks. Work in progress.
Stars: ✭ 160 (-23.81%)
Mutual labels:  mathematics
Math Finance Cheat Sheet
Mathematical finance cheat sheet.
Stars: ✭ 186 (-11.43%)
Mutual labels:  mathematics
Dslsofmath
Domain Specific Languages of Mathematics
Stars: ✭ 159 (-24.29%)
Mutual labels:  mathematics
Mathmodel
研究生数学建模,本科生数学建模、数学建模竞赛优秀论文,数学建模算法,LaTeX论文模板,算法思维导图,参考书籍,Matlab软件教程,PPT
Stars: ✭ 3,834 (+1725.71%)
Mutual labels:  mathematics
C Plus Plus
Collection of various algorithms in mathematics, machine learning, computer science and physics implemented in C++ for educational purposes.
Stars: ✭ 17,151 (+8067.14%)
Mutual labels:  mathematics
Data Science Masters
Self-study plan to achieve mastery in data science
Stars: ✭ 179 (-14.76%)
Mutual labels:  mathematics
Mesecons
Mod for minetest that adds digital circuitry [=minecraft redstone]
Stars: ✭ 165 (-21.43%)
Mutual labels:  logic
M2
The primary source code repository for Macaulay2, a system for computing in commutative algebra, algebraic geometry and related fields.
Stars: ✭ 200 (-4.76%)
Mutual labels:  mathematics

LaTTe

http://latte-central.github.io/LaTTe/

             ((((
            ((((
             ))))
          _ .---.
         ( |`---'|
          \|     |
          : .___, :
           `-----'  -Karl

LaTTe : a Laboratory for Type Theory experiments (in clojure)

CircleCI Clojars Project

What?

LaTTe is a proof assistant library based on type theory (a variant of λD as described in the book Type theory and formal proof: an introduction).

The specific feature of LaTTe is its design as a library (unlike most proof assistant, generally designed as tools) tightly integrated with the Clojure language. It is of course fully implemented in Clojure, but most importantly all the definitional aspects of the assistant (definitions, theorem and axioms) are handled using Clojure namespaces, definitions and macros.

For example, the fact that logical implication is reflexive can be stated directly as a Clojure top-level form:

(defthm impl-refl
  "Implication is reflexive."
  [[A :type]]
  (==> A A))
;; => [:declared :theorem impl-refl]

in plain text:

assuming a type A, then A implies A.

The proof of the theorem can be also constructed as a Clojure form:

  • either giving a lambda-term as a direct proof (exploiting the proposition-as-type, proof-as-term correspondance) :
(proof 'impl-refl
  (qed (lambda [x A] x)))
;; => [:qed impl-refl]

(i.e. the identity function is a proof of reflexivity for implication)

  • or using a declarative proof script:
(proof 'impl-refl
   (assume [x A]
     (have concl A :by x))
   (qed concl))
;; => [:qed impl-refl]

... which, with some training, can be read as a "standard" mathematical proof:

assuming A holds, as an hypothesis named x we can deduce A by x hence A implies A as stated (QED).

Of course, all the proofs are checked for correctness. Without the introduction of an inconsistent axiom (and assuming the correctness of the implementation of the LaTTe kernel), no mathematical inconsistency can be introduced by the proof form.

Yes, but what?

LaTTe helps you formalize mathematic concepts and construct formal proofs of theorems (propositions) about such concepts. Given the tight integration with the Clojure language, existing Clojure development environments (e.g. Cider, Cursive) can be used as (quite effective) interactive proof assistants.

How?

Standard library :

(obviously more to come ...)

Who?

LaTTe may be of some interest for you:

  • obviously if you are interested in type theory and the way it can be implemented on a Computer. LaTTe has been implemented with readability and simplicity in mind (more so than efficiency or correctness),
  • probably if you are interested in the "mechanical" formalization of mathematics, intuitionistic logic, etc. (although you might not learn much, you may be interested in contributing definitions, theorems and proofs),
  • maybe if you are curious about the lambda-calculus (the underlying theory of your favorite programming language) and dependent types (a current trend) and what you can do with these besides programming.

When?

LaTTe is, at least for now, an experiment more than a finalized product, but it is already usable.

A few non-trivial formalizations have been conducted using LaTTe:

Contributions such as mathematical content or enhancement/correction of the underlying machinery are very much welcomed.

Build

Running Tests

clj -A:test

Building Documentation

clj -A:codox

Copyright (C) 2015-2018 Frederic Peschanski (MIT license, cf. 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].