--            A Certified Library of Ordinal Arithmetic
--    Nicolai Kraus, Fredrik Nordvall-Forsberg, and Chuangjie Xu

-- Source files can be found at
--   https://bitbucket.org/nicolaikraus/constructive-ordinals-in-hott/
-- and
--   https://github.com/cj-xu/OrdinalNotations
-- All files are tested with
-- • Agda version 2.6.2 and
-- • Cubical Agda library (commit: 4e9e4f7177c3c625db3fb3249e31fa81035c2d69).

{-# OPTIONS --cubical --safe #-}

-- We define a notation system representing ordinals below ε₀
-- simultaneously with an order relation on it.
import CantorNormalForm.Base

-- The order is wellfounded and thus the notation system allows the
-- principle of transfinite induction.
import CantorNormalForm.Wellfoundedness

-- Every term can be classified as a zero, a successor or a limit.
import CantorNormalForm.Classifiability

-- We construct the ordinary arithmetic operations:
import CantorNormalForm.Addition
import CantorNormalForm.Subtraction
import CantorNormalForm.Multiplication
import CantorNormalForm.Division
import CantorNormalForm.Exponentiation
-- and verified their correctness by showing that they satisfy the
-- equations/rules in their set-theoretic definitions.
import CantorNormalForm.Arithmetic

-- We obtain the commutative Hessenberg arithmetic operations
import CantorNormalForm.HessenbergArithmetic
-- by transporting those on finite hereditary multisets
import FiniteHereditaryMultiset.Everything
-- because finite hereditary multisets are an equivalent system.
import Interpretations.CnfEqFhm