Natural Numbers

Table of Contents

1 Natural numbers

module Lib.Data.Nat where

The standard library provides the usual inductive definition of natural numbers using unary encoding. This file gives the induction principle of Nat together with some shortcuts.

import Stdlib.Nat.Base

1.1 Induction principle

ind-Nat (P : Nat  U) (pz : P zero) (ps : ((n : Nat)  P n  P (suc n))) : (n : Nat)  P n = split
  zero  pz
  suc n'  ps n' (ind-Nat P pz ps n')

1.2 Shortcuts

one-Nat : Nat = suc zero

two-Nat : Nat = suc one-Nat

three-Nat : Nat = suc two-Nat

four-Nat : Nat = suc three-Nat

five-Nat : Nat = suc four-Nat

six-Nat : Nat = suc five-Nat

seven-Nat : Nat = suc six-Nat

eight-Nat : Nat = suc seven-Nat

nine-Nat : Nat = suc eight-Nat

ten-Nat : Nat = suc nine-Nat          

1.3 Functions

The addition is trivially defined by induction.

plus-Nat (m : Nat) : Nat  Nat = split
  zero  m
  suc k  suc (plus-Nat m k)

The multiplication is defined using addition.

times-Nat (m : Nat) : Nat  Nat = split
  zero  zero
  suc k  plus-Nat m (times-Nat k m)

Author: Johann Rosain

Created: 2024-07-23 Tue 13:52

Validate