Skip to content

Latest commit

 

History

History
114 lines (99 loc) · 2.43 KB

arithmetic.rst

File metadata and controls

114 lines (99 loc) · 2.43 KB

Arithmetic

The most basic type of number in Vehicle are the natural numbers. The type of natural numbers is written as Nat.

The available operations over naturals are:

Operation Symbol Type Example
Addition + Nat -> Nat -> Nat x + y
Multiplication * Nat -> Nat -> Nat x * y
Division / Nat -> Nat -> Rat x / y
Less than or equal <= Nat -> Nat -> Bool x <= y
Less than < Nat -> Nat -> Bool x < y
Greater than or equal >= Nat -> Nat -> Bool x >= y
Greater than > Nat -> Nat -> Bool x >= y

Note that inequalities can be chained, so that x < y <= z will be expanded to x < y and y <= z.

Rational numbers in Vehicle are stored using arbitrary precision. The type of rational numbers is written as Rat.

The available operations over rationals are:

Operation Symbol Type Example
Addition + Rat -> Rat -> Rat x + y
Subtraction - Rat -> Rat -> Rat x - y
Multiplication * Rat -> Rat -> Rat x * y
Division / Rat -> Rat -> Rat x / y
Negation - Rat -> Rat - y
Less than or equal <= Rat -> Rat -> Bool x <= y
Less than < Rat -> Rat -> Bool x < y
Greater than or equal >= Rat -> Rat -> Bool x >= y
Greater than > Rat -> Rat -> Bool x >= y

Note

We are aware that the disconnect between the semantics of rational/real numbers and floating point can lead to soundness bugs in verification. Adding floating point types with configurable precision is on our road map.