use std::rc::Rc;
use crate::ast::*;
pub type NormalTelescope = Rc<GenericTelescope<NormalExpression>>;
pub type NormalDeepClosure = GenericCaseTree<NormalExpression>;
pub type NormalNeutral = GenericNeutral<NormalExpression>;
#[derive(Debug, Clone, Eq, PartialEq)]
pub enum NormalExpression {
Lambda(u32, Box<Self>),
Pair(Box<Self>, Box<Self>),
Unit,
One,
Type,
Pi(Box<Self>, u32, Box<Self>),
Sigma(Box<Self>, u32, Box<Self>),
Constructor(String, Box<Self>),
Split(NormalDeepClosure),
Sum(NormalDeepClosure),
Neutral(NormalNeutral),
}