\begin{code}
module T where
open import MiniLibrary
open import Sequence
open import Space
open import Space-product
open import Space-exponential
open import Space-discrete
open import Inequality
open import UniformContinuity
open import Fan
infixl 10 _₊_
\end{code}
\begin{code}
data _^_ (X : Set) : ℕ → Set where
ε : X ^ 0
_₊_ : {n : ℕ} → X ^ n → X → X ^ (succ n)
\end{code}
\begin{code}
_₍_₎ : {X : Set} {n : ℕ} → X ^ n → Fin n → X
(xs ₊ x) ₍ zero ₎ = x
(xs ₊ x) ₍ succ i ₎ = xs ₍ i ₎
infixr 10 _⇨_
\end{code}
\begin{code}
data Ty : Set where
② : Ty
Ⓝ : Ty
_⇨_ : Ty → Ty → Ty
\end{code}
\begin{code}
Cxt : ℕ → Set
Cxt n = Ty ^ n
infixl 10 _∙_
\end{code}
\begin{code}
data Tm : {n : ℕ} → Cxt n → Ty → Set where
⊥ : {n : ℕ}{Γ : Cxt n} → Tm Γ ②
⊤ : {n : ℕ}{Γ : Cxt n} → Tm Γ ②
IF : {n : ℕ}{Γ : Cxt n}{σ : Ty} → Tm Γ (σ ⇨ σ ⇨ ② ⇨ σ)
ZERO : {n : ℕ}{Γ : Cxt n} → Tm Γ Ⓝ
SUCC : {n : ℕ}{Γ : Cxt n} → Tm Γ (Ⓝ ⇨ Ⓝ)
REC : {n : ℕ}{Γ : Cxt n}{σ : Ty} → Tm Γ (σ ⇨ (Ⓝ ⇨ σ ⇨ σ) ⇨ Ⓝ ⇨ σ)
VAR : {n : ℕ}{Γ : Cxt n} → (i : Fin n) → Tm Γ (Γ ₍ i ₎)
LAM : {n : ℕ}{Γ : Cxt n}{σ τ : Ty} → Tm (Γ ₊ σ) τ → Tm Γ (σ ⇨ τ)
_∙_ : {n : ℕ}{Γ : Cxt n}{σ τ : Ty} → Tm Γ (σ ⇨ τ) → Tm Γ σ → Tm Γ τ
FAN : {n : ℕ}{Γ : Cxt n} → Tm Γ (((Ⓝ ⇨ ②) ⇨ Ⓝ) ⇨ Ⓝ)
infix 10 _==_
infixr 10 _→→_
infixl 10 _∧∧_
\end{code}
\begin{code}
data Fml : {n : ℕ} → Cxt n → Set where
_==_ : {n : ℕ}{Γ : Cxt n}{σ : Ty} → Tm Γ σ → Tm Γ σ → Fml Γ
_∧∧_ : {n : ℕ}{Γ : Cxt n} → Fml Γ → Fml Γ → Fml Γ
_→→_ : {n : ℕ}{Γ : Cxt n} → Fml Γ → Fml Γ → Fml Γ
\end{code}