All Projects → langston-barrett → coq-big-o

langston-barrett / coq-big-o

Licence: MPL-2.0 license
A general yet easy-to-use formalization of Big O, Big Theta, and more based on seminormed vector spaces.

Programming Languages

Coq
218 projects
Nix
1067 projects

Projects that are alternatives of or similar to coq-big-o

Hott Intro
An introductory course to Homotopy Type Theory
Stars: ✭ 277 (+793.55%)
Mutual labels:  coq, mathematics
Unimath
This coq library aims to formalize a substantial body of mathematics using the univalent point of view.
Stars: ✭ 680 (+2093.55%)
Mutual labels:  coq, mathematics
Math Classes
A library of abstract interfaces for mathematical structures in Coq [[email protected]]
Stars: ✭ 133 (+329.03%)
Mutual labels:  coq, mathematics
pyrgg
🔧 Python Random Graph Generator
Stars: ✭ 158 (+409.68%)
Mutual labels:  mathematics
math
Complex special functions and common mathematical operations in JavaScript
Stars: ✭ 42 (+35.48%)
Mutual labels:  mathematics
eslintcc
Complexity of Code - JavaScript/TypeScript
Stars: ✭ 15 (-51.61%)
Mutual labels:  complexity
mathb
MathB.in - Mathematics Pastebin Written in Common Lisp
Stars: ✭ 203 (+554.84%)
Mutual labels:  mathematics
LSMLIB
Level Set Method Library
Stars: ✭ 67 (+116.13%)
Mutual labels:  mathematics
creative-coding-notebooks
🎨 An authorial collection of fundamental recipes on Creative Coding and Recreational Programming.
Stars: ✭ 17 (-45.16%)
Mutual labels:  mathematics
simulate
A collection of simulations and visualizations for all sorts of stuff (Majorly Algorithmic or Mathematical)
Stars: ✭ 82 (+164.52%)
Mutual labels:  mathematics
mathcell
Interactive mathematics in the browser
Stars: ✭ 34 (+9.68%)
Mutual labels:  mathematics
gt
Source files for my course on Game Theory.
Stars: ✭ 28 (-9.68%)
Mutual labels:  mathematics
coq-library-undecidability
A library of mechanised undecidability proofs in the Coq proof assistant.
Stars: ✭ 84 (+170.97%)
Mutual labels:  coq
kami
A Platform for High-Level Parametric Hardware Specification and its Modular Verification
Stars: ✭ 119 (+283.87%)
Mutual labels:  coq
cas
Cellular Automata Simulator
Stars: ✭ 22 (-29.03%)
Mutual labels:  complexity
system-F
Formalization of the polymorphic lambda calculus and its parametricity theorem
Stars: ✭ 20 (-35.48%)
Mutual labels:  coq
mandelbrot
A mandelbrot fractal viewer in javascript using svelte
Stars: ✭ 30 (-3.23%)
Mutual labels:  mathematics
coq-program-verification-template
Template project for program verification in Coq
Stars: ✭ 26 (-16.13%)
Mutual labels:  coq
bignums
Coq library of arbitrarily large numbers, providing BigN, BigZ, BigQ that used to be part of the standard library [maintainers=@proux01,@erikmd]
Stars: ✭ 20 (-35.48%)
Mutual labels:  coq
RandLib
🚀 A library designed to facilitate work with probability, statistics and stochastic calculus
Stars: ✭ 64 (+106.45%)
Mutual labels:  mathematics

Big O Notation for Coq

Build Status Documentation

A flexible yet easy-to-use formalization of Big O, Big Theta, and more Bachmann-Landau notations based on seminormed vector spaces.

Table of Contents

Table of Contents

Features

Definitions

  • Bachmann-Landau notations
  • Big O
  • Big Ω
  • Big Θ
  • little o
  • little ω
  • (Optional) Unicode notation: f ∈ ω(g) → g ∈ Ω(f)
  • Alternate definitions and proofs of their equivalence

Theorems & Lemmas

This is not an exhaustive list:

  • Big Θ as an equivalence relation on functions
  • Big O as a partial ordering on functions
  • Big Ω as a partial ordering on functions
  • Duality of Big O and Big Ω: f ∈ O(g) g ∈ Ω(f)
  • f ∈ o(g) → f ∈ O(g)
  • f ∈ ω(g) → f ∈ Ω(g)
  • Various facts about the compositions of functions
  • Indifference of these notations to multiplication by constants
  • If you have ideas for useful lemmas, please open an issue!

API Documentation

You can view the documentation online or build it locally:

./configure && make html && firefox html/toc.html

to build the API documentation with coqdoc.

Installation

You can build this package using the Nix package manager:

nix-build . && ls result/lib/coq/8.5/user-contrib/BigO/

Alternatively, you can use the the standard

./configure && make

If you're using Nix, you can easily intergrate this library with your own package's default.nix or shell.nix, and Coq should automatically find it.

{
  stdenv,
  coq,
  pkgs ? import <nixpkgs> { }
}:
let
  coq_big_o = with pkgs; callPackage (fetchFromGitHub {
    owner  = "siddharthist";
    repo   = "coq-big-o";
    rev    = "some commit hash"; # customize this
    sha256 = "appropriate sha256 checksum"; # and this
  }) { };
in stdenv.mkDerivation {
  name = "my-coq-project";
  src = ./.;
  buildInputs = [ coq coq_big_o ];
  ...
}

Otherwise, just copy what you built to somewhere that Coq will find it.

Related Work

I don't know of any. If anyone else is interested in formal complexity theory, let me know!

This project leans heavily on the math-classes library for definitions of algebraic structures, specifically seminormed vector spaces.

Contributing

Pull requests for fixes, new results, or anything else are welcome! Just run

nix-shell

to be dropped into a shell with all dependencies installed.

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].