| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Language.Rzk.Free.Syntax
Synopsis
- data RzkPosition = RzkPosition {}
- ppRzkPosition :: RzkPosition -> String
- newtype VarIdent = VarIdent {}
- ppVarIdentWithLocation :: VarIdent -> String
- varIdent :: VarIdent -> VarIdent
- varIdentAt :: Maybe FilePath -> VarIdent -> VarIdent
- fromVarIdent :: VarIdent -> VarIdent
- holeName :: Text -> Maybe VarIdent
- holeIdentToken :: Maybe VarIdent -> Text
- data Binder
- binderName :: Binder -> Maybe VarIdent
- data TModality
- toModality :: Modality -> TModality
- modCompToMods :: ModComp -> (TModality, TModality)
- fromMod :: TModality -> Modality
- modsToModComp :: TModality -> TModality -> ModComp
- data TermF scope term
- = UniverseF
- | UniverseCubeF
- | UniverseTopeF
- | CubeUnitF
- | CubeUnitStarF
- | Cube2F
- | Cube2_0F
- | Cube2_1F
- | CubeIF
- | CubeI_0F
- | CubeI_1F
- | CubeProductF term term
- | CubeFlipF term
- | CubeUnflipF term
- | TopeTopF
- | TopeBottomF
- | TopeEQF term term
- | TopeLEQF term term
- | TopeAndF term term
- | TopeOrF term term
- | TopeInvF term
- | TopeUninvF term
- | RecBottomF
- | RecOrF [(term, term)]
- | TypeFunF Binder TModality term (Maybe scope) scope
- | TypeSigmaF Binder TModality term scope
- | TypeIdF term (Maybe term) term
- | AppF term term
- | LetF Binder (Maybe term) term scope
- | LambdaF Binder (Maybe (TModality, term, Maybe scope)) scope
- | PairF term term
- | FirstF term
- | SecondF term
- | ReflF (Maybe (term, Maybe term))
- | IdJF term term term term term term
- | UnitF
- | TypeUnitF
- | TypeAscF term term
- | TypeRestrictedF term [(term, term)]
- | TypeModalF TModality term
- | ModAppF TModality term
- | ModExtractF TModality TModality term
- | LetModF Binder TModality TModality (Maybe term) term scope
- | HoleF (Maybe VarIdent)
- pattern HoleTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> Maybe VarIdent -> FS (Sum (AnnF ann TermF) g) a
- pattern LetModTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> Binder -> TModality -> TModality -> Maybe (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a -> Scope (FS (Sum (AnnF ann TermF) g)) a -> FS (Sum (AnnF ann TermF) g) a
- pattern ModExtractTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> TModality -> TModality -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a
- pattern ModAppTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> TModality -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a
- pattern TypeModalTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> TModality -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a
- pattern TypeRestrictedTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a -> [(FS (Sum (AnnF ann TermF) g) a, FS (Sum (AnnF ann TermF) g) a)] -> FS (Sum (AnnF ann TermF) g) a
- pattern TypeAscTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a
- pattern TypeUnitTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a
- pattern UnitTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a
- pattern IdJTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a
- pattern ReflTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> Maybe (FS (Sum (AnnF ann TermF) g) a, Maybe (FS (Sum (AnnF ann TermF) g) a)) -> FS (Sum (AnnF ann TermF) g) a
- pattern SecondTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a
- pattern FirstTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a
- pattern PairTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a
- pattern LambdaTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> Binder -> Maybe (TModality, FS (Sum (AnnF ann TermF) g) a, Maybe (Scope (FS (Sum (AnnF ann TermF) g)) a)) -> Scope (FS (Sum (AnnF ann TermF) g)) a -> FS (Sum (AnnF ann TermF) g) a
- pattern LetTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> Binder -> Maybe (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a -> Scope (FS (Sum (AnnF ann TermF) g)) a -> FS (Sum (AnnF ann TermF) g) a
- pattern AppTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a
- pattern TypeIdTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a -> Maybe (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a
- pattern TypeSigmaTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> Binder -> TModality -> FS (Sum (AnnF ann TermF) g) a -> Scope (FS (Sum (AnnF ann TermF) g)) a -> FS (Sum (AnnF ann TermF) g) a
- pattern TypeFunTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> Binder -> TModality -> FS (Sum (AnnF ann TermF) g) a -> Maybe (Scope (FS (Sum (AnnF ann TermF) g)) a) -> Scope (FS (Sum (AnnF ann TermF) g)) a -> FS (Sum (AnnF ann TermF) g) a
- pattern RecOrTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> [(FS (Sum (AnnF ann TermF) g) a, FS (Sum (AnnF ann TermF) g) a)] -> FS (Sum (AnnF ann TermF) g) a
- pattern RecBottomTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a
- pattern TopeUninvTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a
- pattern TopeInvTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a
- pattern TopeOrTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a
- pattern TopeAndTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a
- pattern TopeLEQTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a
- pattern TopeEQTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a
- pattern TopeBottomTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a
- pattern TopeTopTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a
- pattern CubeUnflipTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a
- pattern CubeFlipTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a
- pattern CubeProductTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a
- pattern CubeI_1TE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a
- pattern CubeI_0TE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a
- pattern CubeITE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a
- pattern Cube2_1TE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a
- pattern Cube2_0TE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a
- pattern Cube2TE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a
- pattern CubeUnitStarTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a
- pattern CubeUnitTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a
- pattern UniverseTopeTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a
- pattern UniverseCubeTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a
- pattern UniverseTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a
- pattern HoleT :: ann (FS (AnnF ann TermF) a) -> Maybe VarIdent -> FS (AnnF ann TermF) a
- pattern LetModT :: ann (FS (AnnF ann TermF) a) -> Binder -> TModality -> TModality -> Maybe (FS (AnnF ann TermF) a) -> FS (AnnF ann TermF) a -> Scope (FS (AnnF ann TermF)) a -> FS (AnnF ann TermF) a
- pattern ModExtractT :: ann (FS (AnnF ann TermF) a) -> TModality -> TModality -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a
- pattern ModAppT :: ann (FS (AnnF ann TermF) a) -> TModality -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a
- pattern TypeModalT :: ann (FS (AnnF ann TermF) a) -> TModality -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a
- pattern TypeRestrictedT :: ann (FS (AnnF ann TermF) a) -> FS (AnnF ann TermF) a -> [(FS (AnnF ann TermF) a, FS (AnnF ann TermF) a)] -> FS (AnnF ann TermF) a
- pattern TypeAscT :: ann (FS (AnnF ann TermF) a) -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a
- pattern TypeUnitT :: ann (FS (AnnF ann TermF) a) -> FS (AnnF ann TermF) a
- pattern UnitT :: ann (FS (AnnF ann TermF) a) -> FS (AnnF ann TermF) a
- pattern IdJT :: ann (FS (AnnF ann TermF) a) -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a
- pattern ReflT :: ann (FS (AnnF ann TermF) a) -> Maybe (FS (AnnF ann TermF) a, Maybe (FS (AnnF ann TermF) a)) -> FS (AnnF ann TermF) a
- pattern SecondT :: ann (FS (AnnF ann TermF) a) -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a
- pattern FirstT :: ann (FS (AnnF ann TermF) a) -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a
- pattern PairT :: ann (FS (AnnF ann TermF) a) -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a
- pattern LambdaT :: ann (FS (AnnF ann TermF) a) -> Binder -> Maybe (TModality, FS (AnnF ann TermF) a, Maybe (Scope (FS (AnnF ann TermF)) a)) -> Scope (FS (AnnF ann TermF)) a -> FS (AnnF ann TermF) a
- pattern LetT :: ann (FS (AnnF ann TermF) a) -> Binder -> Maybe (FS (AnnF ann TermF) a) -> FS (AnnF ann TermF) a -> Scope (FS (AnnF ann TermF)) a -> FS (AnnF ann TermF) a
- pattern AppT :: ann (FS (AnnF ann TermF) a) -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a
- pattern TypeIdT :: ann (FS (AnnF ann TermF) a) -> FS (AnnF ann TermF) a -> Maybe (FS (AnnF ann TermF) a) -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a
- pattern TypeSigmaT :: ann (FS (AnnF ann TermF) a) -> Binder -> TModality -> FS (AnnF ann TermF) a -> Scope (FS (AnnF ann TermF)) a -> FS (AnnF ann TermF) a
- pattern TypeFunT :: ann (FS (AnnF ann TermF) a) -> Binder -> TModality -> FS (AnnF ann TermF) a -> Maybe (Scope (FS (AnnF ann TermF)) a) -> Scope (FS (AnnF ann TermF)) a -> FS (AnnF ann TermF) a
- pattern RecOrT :: ann (FS (AnnF ann TermF) a) -> [(FS (AnnF ann TermF) a, FS (AnnF ann TermF) a)] -> FS (AnnF ann TermF) a
- pattern RecBottomT :: ann (FS (AnnF ann TermF) a) -> FS (AnnF ann TermF) a
- pattern TopeUninvT :: ann (FS (AnnF ann TermF) a) -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a
- pattern TopeInvT :: ann (FS (AnnF ann TermF) a) -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a
- pattern TopeOrT :: ann (FS (AnnF ann TermF) a) -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a
- pattern TopeAndT :: ann (FS (AnnF ann TermF) a) -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a
- pattern TopeLEQT :: ann (FS (AnnF ann TermF) a) -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a
- pattern TopeEQT :: ann (FS (AnnF ann TermF) a) -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a
- pattern TopeBottomT :: ann (FS (AnnF ann TermF) a) -> FS (AnnF ann TermF) a
- pattern TopeTopT :: ann (FS (AnnF ann TermF) a) -> FS (AnnF ann TermF) a
- pattern CubeUnflipT :: ann (FS (AnnF ann TermF) a) -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a
- pattern CubeFlipT :: ann (FS (AnnF ann TermF) a) -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a
- pattern CubeProductT :: ann (FS (AnnF ann TermF) a) -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a
- pattern CubeI_1T :: ann (FS (AnnF ann TermF) a) -> FS (AnnF ann TermF) a
- pattern CubeI_0T :: ann (FS (AnnF ann TermF) a) -> FS (AnnF ann TermF) a
- pattern CubeIT :: ann (FS (AnnF ann TermF) a) -> FS (AnnF ann TermF) a
- pattern Cube2_1T :: ann (FS (AnnF ann TermF) a) -> FS (AnnF ann TermF) a
- pattern Cube2_0T :: ann (FS (AnnF ann TermF) a) -> FS (AnnF ann TermF) a
- pattern Cube2T :: ann (FS (AnnF ann TermF) a) -> FS (AnnF ann TermF) a
- pattern CubeUnitStarT :: ann (FS (AnnF ann TermF) a) -> FS (AnnF ann TermF) a
- pattern CubeUnitT :: ann (FS (AnnF ann TermF) a) -> FS (AnnF ann TermF) a
- pattern UniverseTopeT :: ann (FS (AnnF ann TermF) a) -> FS (AnnF ann TermF) a
- pattern UniverseCubeT :: ann (FS (AnnF ann TermF) a) -> FS (AnnF ann TermF) a
- pattern UniverseT :: ann (FS (AnnF ann TermF) a) -> FS (AnnF ann TermF) a
- pattern HoleE :: forall {g :: Type -> Type -> Type} {a}. Maybe VarIdent -> FS (Sum TermF g) a
- pattern LetModE :: forall {g :: Type -> Type -> Type} {a}. Binder -> TModality -> TModality -> Maybe (FS (Sum TermF g) a) -> FS (Sum TermF g) a -> Scope (FS (Sum TermF g)) a -> FS (Sum TermF g) a
- pattern ModExtractE :: forall {g :: Type -> Type -> Type} {a}. TModality -> TModality -> FS (Sum TermF g) a -> FS (Sum TermF g) a
- pattern ModAppE :: forall {g :: Type -> Type -> Type} {a}. TModality -> FS (Sum TermF g) a -> FS (Sum TermF g) a
- pattern TypeModalE :: forall {g :: Type -> Type -> Type} {a}. TModality -> FS (Sum TermF g) a -> FS (Sum TermF g) a
- pattern TypeRestrictedE :: forall {g :: Type -> Type -> Type} {a}. FS (Sum TermF g) a -> [(FS (Sum TermF g) a, FS (Sum TermF g) a)] -> FS (Sum TermF g) a
- pattern TypeAscE :: forall {g :: Type -> Type -> Type} {a}. FS (Sum TermF g) a -> FS (Sum TermF g) a -> FS (Sum TermF g) a
- pattern TypeUnitE :: forall {g :: Type -> Type -> Type} {a}. FS (Sum TermF g) a
- pattern UnitE :: forall {g :: Type -> Type -> Type} {a}. FS (Sum TermF g) a
- pattern IdJE :: forall {g :: Type -> Type -> Type} {a}. FS (Sum TermF g) a -> FS (Sum TermF g) a -> FS (Sum TermF g) a -> FS (Sum TermF g) a -> FS (Sum TermF g) a -> FS (Sum TermF g) a -> FS (Sum TermF g) a
- pattern ReflE :: forall {g :: Type -> Type -> Type} {a}. Maybe (FS (Sum TermF g) a, Maybe (FS (Sum TermF g) a)) -> FS (Sum TermF g) a
- pattern SecondE :: forall {g :: Type -> Type -> Type} {a}. FS (Sum TermF g) a -> FS (Sum TermF g) a
- pattern FirstE :: forall {g :: Type -> Type -> Type} {a}. FS (Sum TermF g) a -> FS (Sum TermF g) a
- pattern PairE :: forall {g :: Type -> Type -> Type} {a}. FS (Sum TermF g) a -> FS (Sum TermF g) a -> FS (Sum TermF g) a
- pattern LambdaE :: forall {g :: Type -> Type -> Type} {a}. Binder -> Maybe (TModality, FS (Sum TermF g) a, Maybe (Scope (FS (Sum TermF g)) a)) -> Scope (FS (Sum TermF g)) a -> FS (Sum TermF g) a
- pattern LetE :: forall {g :: Type -> Type -> Type} {a}. Binder -> Maybe (FS (Sum TermF g) a) -> FS (Sum TermF g) a -> Scope (FS (Sum TermF g)) a -> FS (Sum TermF g) a
- pattern AppE :: forall {g :: Type -> Type -> Type} {a}. FS (Sum TermF g) a -> FS (Sum TermF g) a -> FS (Sum TermF g) a
- pattern TypeIdE :: forall {g :: Type -> Type -> Type} {a}. FS (Sum TermF g) a -> Maybe (FS (Sum TermF g) a) -> FS (Sum TermF g) a -> FS (Sum TermF g) a
- pattern TypeSigmaE :: forall {g :: Type -> Type -> Type} {a}. Binder -> TModality -> FS (Sum TermF g) a -> Scope (FS (Sum TermF g)) a -> FS (Sum TermF g) a
- pattern TypeFunE :: forall {g :: Type -> Type -> Type} {a}. Binder -> TModality -> FS (Sum TermF g) a -> Maybe (Scope (FS (Sum TermF g)) a) -> Scope (FS (Sum TermF g)) a -> FS (Sum TermF g) a
- pattern RecOrE :: forall {g :: Type -> Type -> Type} {a}. [(FS (Sum TermF g) a, FS (Sum TermF g) a)] -> FS (Sum TermF g) a
- pattern RecBottomE :: forall {g :: Type -> Type -> Type} {a}. FS (Sum TermF g) a
- pattern TopeUninvE :: forall {g :: Type -> Type -> Type} {a}. FS (Sum TermF g) a -> FS (Sum TermF g) a
- pattern TopeInvE :: forall {g :: Type -> Type -> Type} {a}. FS (Sum TermF g) a -> FS (Sum TermF g) a
- pattern TopeOrE :: forall {g :: Type -> Type -> Type} {a}. FS (Sum TermF g) a -> FS (Sum TermF g) a -> FS (Sum TermF g) a
- pattern TopeAndE :: forall {g :: Type -> Type -> Type} {a}. FS (Sum TermF g) a -> FS (Sum TermF g) a -> FS (Sum TermF g) a
- pattern TopeLEQE :: forall {g :: Type -> Type -> Type} {a}. FS (Sum TermF g) a -> FS (Sum TermF g) a -> FS (Sum TermF g) a
- pattern TopeEQE :: forall {g :: Type -> Type -> Type} {a}. FS (Sum TermF g) a -> FS (Sum TermF g) a -> FS (Sum TermF g) a
- pattern TopeBottomE :: forall {g :: Type -> Type -> Type} {a}. FS (Sum TermF g) a
- pattern TopeTopE :: forall {g :: Type -> Type -> Type} {a}. FS (Sum TermF g) a
- pattern CubeUnflipE :: forall {g :: Type -> Type -> Type} {a}. FS (Sum TermF g) a -> FS (Sum TermF g) a
- pattern CubeFlipE :: forall {g :: Type -> Type -> Type} {a}. FS (Sum TermF g) a -> FS (Sum TermF g) a
- pattern CubeProductE :: forall {g :: Type -> Type -> Type} {a}. FS (Sum TermF g) a -> FS (Sum TermF g) a -> FS (Sum TermF g) a
- pattern CubeI_1E :: forall {g :: Type -> Type -> Type} {a}. FS (Sum TermF g) a
- pattern CubeI_0E :: forall {g :: Type -> Type -> Type} {a}. FS (Sum TermF g) a
- pattern CubeIE :: forall {g :: Type -> Type -> Type} {a}. FS (Sum TermF g) a
- pattern Cube2_1E :: forall {g :: Type -> Type -> Type} {a}. FS (Sum TermF g) a
- pattern Cube2_0E :: forall {g :: Type -> Type -> Type} {a}. FS (Sum TermF g) a
- pattern Cube2E :: forall {g :: Type -> Type -> Type} {a}. FS (Sum TermF g) a
- pattern CubeUnitStarE :: forall {g :: Type -> Type -> Type} {a}. FS (Sum TermF g) a
- pattern CubeUnitE :: forall {g :: Type -> Type -> Type} {a}. FS (Sum TermF g) a
- pattern UniverseTopeE :: forall {g :: Type -> Type -> Type} {a}. FS (Sum TermF g) a
- pattern UniverseCubeE :: forall {g :: Type -> Type -> Type} {a}. FS (Sum TermF g) a
- pattern UniverseE :: forall {g :: Type -> Type -> Type} {a}. FS (Sum TermF g) a
- pattern Hole :: Maybe VarIdent -> FS TermF a
- pattern LetMod :: Binder -> TModality -> TModality -> Maybe (FS TermF a) -> FS TermF a -> Scope (FS TermF) a -> FS TermF a
- pattern ModExtract :: TModality -> TModality -> FS TermF a -> FS TermF a
- pattern ModApp :: TModality -> FS TermF a -> FS TermF a
- pattern TypeModal :: TModality -> FS TermF a -> FS TermF a
- pattern TypeRestricted :: FS TermF a -> [(FS TermF a, FS TermF a)] -> FS TermF a
- pattern TypeAsc :: FS TermF a -> FS TermF a -> FS TermF a
- pattern TypeUnit :: FS TermF a
- pattern Unit :: FS TermF a
- pattern IdJ :: FS TermF a -> FS TermF a -> FS TermF a -> FS TermF a -> FS TermF a -> FS TermF a -> FS TermF a
- pattern Refl :: Maybe (FS TermF a, Maybe (FS TermF a)) -> FS TermF a
- pattern Second :: FS TermF a -> FS TermF a
- pattern First :: FS TermF a -> FS TermF a
- pattern Pair :: FS TermF a -> FS TermF a -> FS TermF a
- pattern Lambda :: Binder -> Maybe (TModality, FS TermF a, Maybe (Scope (FS TermF) a)) -> Scope (FS TermF) a -> FS TermF a
- pattern Let :: Binder -> Maybe (FS TermF a) -> FS TermF a -> Scope (FS TermF) a -> FS TermF a
- pattern App :: FS TermF a -> FS TermF a -> FS TermF a
- pattern TypeId :: FS TermF a -> Maybe (FS TermF a) -> FS TermF a -> FS TermF a
- pattern TypeSigma :: Binder -> TModality -> FS TermF a -> Scope (FS TermF) a -> FS TermF a
- pattern TypeFun :: Binder -> TModality -> FS TermF a -> Maybe (Scope (FS TermF) a) -> Scope (FS TermF) a -> FS TermF a
- pattern RecOr :: [(FS TermF a, FS TermF a)] -> FS TermF a
- pattern RecBottom :: FS TermF a
- pattern TopeUninv :: FS TermF a -> FS TermF a
- pattern TopeInv :: FS TermF a -> FS TermF a
- pattern TopeOr :: FS TermF a -> FS TermF a -> FS TermF a
- pattern TopeAnd :: FS TermF a -> FS TermF a -> FS TermF a
- pattern TopeLEQ :: FS TermF a -> FS TermF a -> FS TermF a
- pattern TopeEQ :: FS TermF a -> FS TermF a -> FS TermF a
- pattern TopeBottom :: FS TermF a
- pattern TopeTop :: FS TermF a
- pattern CubeUnflip :: FS TermF a -> FS TermF a
- pattern CubeFlip :: FS TermF a -> FS TermF a
- pattern CubeProduct :: FS TermF a -> FS TermF a -> FS TermF a
- pattern CubeI_1 :: FS TermF a
- pattern CubeI_0 :: FS TermF a
- pattern CubeI :: FS TermF a
- pattern Cube2_1 :: FS TermF a
- pattern Cube2_0 :: FS TermF a
- pattern Cube2 :: FS TermF a
- pattern CubeUnitStar :: FS TermF a
- pattern CubeUnit :: FS TermF a
- pattern UniverseTope :: FS TermF a
- pattern UniverseCube :: FS TermF a
- pattern Universe :: FS TermF a
- newtype Type term = Type {
- getType :: term
- data TypeInfo term = TypeInfo {}
- type Term = FS TermF
- type TermT = FS (AnnF TypeInfo TermF)
- termIsWHNF :: TermT var -> TermT var
- termIsNF :: TermT var -> TermT var
- invalidateWHNF :: TermT var -> TermT var
- substituteT :: TermT var -> Scope TermT var -> TermT var
- type Term' = Term VarIdent
- type TermT' = TermT VarIdent
- freeVars :: Term a -> [a]
- partialFreeVarsT :: TermT a -> [a]
- freeVarsT :: Eq a => (a -> TermT a) -> TermT a -> [a]
- toTerm' :: Term -> Term'
- toScope :: VarIdent -> (VarIdent -> Term a) -> Term -> Scope Term a
- toScopePattern :: Pattern -> (VarIdent -> Term a) -> Term -> Scope Term a
- desugarTuple :: t -> [Pattern' t] -> Pattern' t -> Pattern' t -> Pattern' t
- toTerm :: (VarIdent -> Term a) -> Term -> Term a
- patternToTerm :: Pattern -> Term
- modalColonModality :: ModalColon -> Modality
- modalColonToTModality :: ModalColon -> TModality
- fromTModalityToModalColon :: TModality -> ModalColon
- flattenBinderApp :: Term -> [Term]
- unsafeTermToPattern :: Term -> Pattern
- sigmaParamToTypeSigma :: BNFC'Position -> SigmaParam -> Term -> Term
- data Proj
- binderToPattern :: Binder -> Pattern
- binderToTerm :: Binder -> Term VarIdent
- binderDisplayName :: Binder -> VarIdent
- binderPaths :: Binder -> [([Proj], VarIdent)]
- binderLeaves :: Binder -> [VarIdent]
- binderIsCompound :: Binder -> Bool
- freshenBinderLeaves :: [VarIdent] -> Binder -> Binder
- projChain :: Term a -> Maybe ([Proj], a)
- foldBinderProjections :: Eq a => [(a, [([Proj], a)])] -> Term a -> Term a
- restorePatternVars :: [(VarIdent, Binder)] -> Term VarIdent -> Term VarIdent
- projChainT :: TermT a -> Maybe ([Proj], a)
- foldBinderProjectionsT :: Eq a => [(a, [([Proj], a)])] -> TermT a -> TermT a
- fromTerm' :: Term' -> Term
- fromScope' :: VarIdent -> [VarIdent] -> [VarIdent] -> Scope Term VarIdent -> Term
- fromScopeBinder' :: Binder -> VarIdent -> [VarIdent] -> [VarIdent] -> Scope Term VarIdent -> Term
- fromTermWith' :: [VarIdent] -> [VarIdent] -> Term' -> Term
- defaultVarIdents :: [VarIdent]
- refreshVar :: [VarIdent] -> VarIdent -> VarIdent
- incVarIdentIndex :: VarIdent -> VarIdent
- incIndex :: Text -> Text
Documentation
data RzkPosition Source #
Constructors
| RzkPosition | |
Fields | |
ppRzkPosition :: RzkPosition -> String Source #
Constructors
| VarIdent | |
Fields | |
Instances
| IsString Term' Source # | |
Defined in Language.Rzk.Free.Syntax Methods fromString :: String -> Term' # | |
| IsString TermT' Source # | Parse and |
Defined in Rzk.TypeCheck Methods fromString :: String -> TermT' # | |
| IsString VarIdent Source # | |
Defined in Language.Rzk.Free.Syntax Methods fromString :: String -> VarIdent # | |
| Show Term' Source # | |
| Show TermT' Source # | |
| Show VarIdent Source # | |
| Eq VarIdent Source # | |
fromVarIdent :: VarIdent -> VarIdent Source #
holeName :: Text -> Maybe VarIdent Source #
The display name of a hole from its surface token text. The token includes
the leading ?; an anonymous hole (bare ?) has no name.
holeIdentToken :: Maybe VarIdent -> Text Source #
The surface token text (including the leading ?) for a hole name.
The name(s) a binder introduces. A binder may name a single (possibly
anonymous) variable, or destructure a pair/tuple via a pattern. The pattern
structure is kept around purely so that goals, holes and error messages can
show the user's original names (e.g. t and s for \ (t , s) -> …)
instead of projections of a fresh variable (e.g. π₁ x₄ and π₂ x₄).
Operationally a pair pattern still binds a single variable; the components
are projections of it (see toScopePattern). Binder only records the names
so they can be restored when rendering.
Constructors
| BinderVar (Maybe VarIdent) | a single variable ( |
| BinderPair Binder Binder | a pair pattern |
| BinderUnit | the unit pattern |
binderName :: Binder -> Maybe VarIdent Source #
The single name of a binder, if it binds exactly one named variable.
A pair/unit pattern has no single name, so this is Nothing for them.
Used wherever the old Maybe VarIdent binder name is still sufficient.
toModality :: Modality -> TModality Source #
data TermF scope term Source #
Constructors
| UniverseF | |
| UniverseCubeF | |
| UniverseTopeF | |
| CubeUnitF | |
| CubeUnitStarF | |
| Cube2F | |
| Cube2_0F | |
| Cube2_1F | |
| CubeIF | |
| CubeI_0F | |
| CubeI_1F | |
| CubeProductF term term | |
| CubeFlipF term | |
| CubeUnflipF term | |
| TopeTopF | |
| TopeBottomF | |
| TopeEQF term term | |
| TopeLEQF term term | |
| TopeAndF term term | |
| TopeOrF term term | |
| TopeInvF term | |
| TopeUninvF term | |
| RecBottomF | |
| RecOrF [(term, term)] | |
| TypeFunF Binder TModality term (Maybe scope) scope | |
| TypeSigmaF Binder TModality term scope | |
| TypeIdF term (Maybe term) term | |
| AppF term term | |
| LetF Binder (Maybe term) term scope | |
| LambdaF Binder (Maybe (TModality, term, Maybe scope)) scope | |
| PairF term term | |
| FirstF term | |
| SecondF term | |
| ReflF (Maybe (term, Maybe term)) | |
| IdJF term term term term term term | |
| UnitF | |
| TypeUnitF | |
| TypeAscF term term | |
| TypeRestrictedF term [(term, term)] | |
| TypeModalF TModality term | |
| ModAppF TModality term | |
| ModExtractF TModality TModality term | |
| LetModF Binder TModality TModality (Maybe term) term scope | |
| HoleF (Maybe VarIdent) |
Instances
| Bifoldable TermF Source # | |
| Bifunctor TermF Source # | |
| Bitraversable TermF Source # | |
Defined in Language.Rzk.Free.Syntax Methods bitraverse :: Applicative f => (a -> f c) -> (b -> f d) -> TermF a b -> f (TermF c d) # | |
| IsString Term' Source # | |
Defined in Language.Rzk.Free.Syntax Methods fromString :: String -> Term' # | |
| IsString TermT' Source # | Parse and |
Defined in Rzk.TypeCheck Methods fromString :: String -> TermT' # | |
| Show Term' Source # | |
| Show TermT' Source # | |
| Functor (TermF scope) Source # | |
| Foldable (TermF scope) Source # | |
Defined in Language.Rzk.Free.Syntax Methods fold :: Monoid m => TermF scope m -> m # foldMap :: Monoid m => (a -> m) -> TermF scope a -> m # foldMap' :: Monoid m => (a -> m) -> TermF scope a -> m # foldr :: (a -> b -> b) -> b -> TermF scope a -> b # foldr' :: (a -> b -> b) -> b -> TermF scope a -> b # foldl :: (b -> a -> b) -> b -> TermF scope a -> b # foldl' :: (b -> a -> b) -> b -> TermF scope a -> b # foldr1 :: (a -> a -> a) -> TermF scope a -> a # foldl1 :: (a -> a -> a) -> TermF scope a -> a # toList :: TermF scope a -> [a] # null :: TermF scope a -> Bool # length :: TermF scope a -> Int # elem :: Eq a => a -> TermF scope a -> Bool # maximum :: Ord a => TermF scope a -> a # minimum :: Ord a => TermF scope a -> a # | |
| Traversable (TermF scope) Source # | |
Defined in Language.Rzk.Free.Syntax | |
| (Eq term, Eq scope) => Eq (TermF scope term) Source # | |
pattern HoleTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> Maybe VarIdent -> FS (Sum (AnnF ann TermF) g) a Source #
pattern LetModTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> Binder -> TModality -> TModality -> Maybe (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a -> Scope (FS (Sum (AnnF ann TermF) g)) a -> FS (Sum (AnnF ann TermF) g) a Source #
pattern ModExtractTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> TModality -> TModality -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a Source #
pattern ModAppTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> TModality -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a Source #
pattern TypeModalTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> TModality -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a Source #
pattern TypeRestrictedTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a -> [(FS (Sum (AnnF ann TermF) g) a, FS (Sum (AnnF ann TermF) g) a)] -> FS (Sum (AnnF ann TermF) g) a Source #
pattern TypeAscTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a Source #
pattern TypeUnitTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a Source #
pattern UnitTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a Source #
pattern IdJTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a Source #
pattern ReflTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> Maybe (FS (Sum (AnnF ann TermF) g) a, Maybe (FS (Sum (AnnF ann TermF) g) a)) -> FS (Sum (AnnF ann TermF) g) a Source #
pattern SecondTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a Source #
pattern FirstTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a Source #
pattern PairTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a Source #
pattern LambdaTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> Binder -> Maybe (TModality, FS (Sum (AnnF ann TermF) g) a, Maybe (Scope (FS (Sum (AnnF ann TermF) g)) a)) -> Scope (FS (Sum (AnnF ann TermF) g)) a -> FS (Sum (AnnF ann TermF) g) a Source #
pattern LetTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> Binder -> Maybe (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a -> Scope (FS (Sum (AnnF ann TermF) g)) a -> FS (Sum (AnnF ann TermF) g) a Source #
pattern AppTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a Source #
pattern TypeIdTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a -> Maybe (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a Source #
pattern TypeSigmaTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> Binder -> TModality -> FS (Sum (AnnF ann TermF) g) a -> Scope (FS (Sum (AnnF ann TermF) g)) a -> FS (Sum (AnnF ann TermF) g) a Source #
pattern TypeFunTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> Binder -> TModality -> FS (Sum (AnnF ann TermF) g) a -> Maybe (Scope (FS (Sum (AnnF ann TermF) g)) a) -> Scope (FS (Sum (AnnF ann TermF) g)) a -> FS (Sum (AnnF ann TermF) g) a Source #
pattern RecOrTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> [(FS (Sum (AnnF ann TermF) g) a, FS (Sum (AnnF ann TermF) g) a)] -> FS (Sum (AnnF ann TermF) g) a Source #
pattern RecBottomTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a Source #
pattern TopeUninvTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a Source #
pattern TopeInvTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a Source #
pattern TopeOrTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a Source #
pattern TopeAndTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a Source #
pattern TopeLEQTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a Source #
pattern TopeEQTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a Source #
pattern TopeBottomTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a Source #
pattern TopeTopTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a Source #
pattern CubeUnflipTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a Source #
pattern CubeFlipTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a Source #
pattern CubeProductTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a -> FS (Sum (AnnF ann TermF) g) a Source #
pattern CubeI_1TE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a Source #
pattern CubeI_0TE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a Source #
pattern CubeITE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a Source #
pattern Cube2_1TE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a Source #
pattern Cube2_0TE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a Source #
pattern Cube2TE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a Source #
pattern CubeUnitStarTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a Source #
pattern CubeUnitTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a Source #
pattern UniverseTopeTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a Source #
pattern UniverseCubeTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a Source #
pattern UniverseTE :: forall {ann} {g :: Type -> Type -> Type} {a}. ann (FS (Sum (AnnF ann TermF) g) a) -> FS (Sum (AnnF ann TermF) g) a Source #
pattern LetModT :: ann (FS (AnnF ann TermF) a) -> Binder -> TModality -> TModality -> Maybe (FS (AnnF ann TermF) a) -> FS (AnnF ann TermF) a -> Scope (FS (AnnF ann TermF)) a -> FS (AnnF ann TermF) a Source #
pattern ModExtractT :: ann (FS (AnnF ann TermF) a) -> TModality -> TModality -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a Source #
pattern ModAppT :: ann (FS (AnnF ann TermF) a) -> TModality -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a Source #
pattern TypeModalT :: ann (FS (AnnF ann TermF) a) -> TModality -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a Source #
pattern TypeRestrictedT :: ann (FS (AnnF ann TermF) a) -> FS (AnnF ann TermF) a -> [(FS (AnnF ann TermF) a, FS (AnnF ann TermF) a)] -> FS (AnnF ann TermF) a Source #
pattern TypeAscT :: ann (FS (AnnF ann TermF) a) -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a Source #
pattern IdJT :: ann (FS (AnnF ann TermF) a) -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a Source #
pattern ReflT :: ann (FS (AnnF ann TermF) a) -> Maybe (FS (AnnF ann TermF) a, Maybe (FS (AnnF ann TermF) a)) -> FS (AnnF ann TermF) a Source #
pattern SecondT :: ann (FS (AnnF ann TermF) a) -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a Source #
pattern FirstT :: ann (FS (AnnF ann TermF) a) -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a Source #
pattern PairT :: ann (FS (AnnF ann TermF) a) -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a Source #
pattern LambdaT :: ann (FS (AnnF ann TermF) a) -> Binder -> Maybe (TModality, FS (AnnF ann TermF) a, Maybe (Scope (FS (AnnF ann TermF)) a)) -> Scope (FS (AnnF ann TermF)) a -> FS (AnnF ann TermF) a Source #
pattern LetT :: ann (FS (AnnF ann TermF) a) -> Binder -> Maybe (FS (AnnF ann TermF) a) -> FS (AnnF ann TermF) a -> Scope (FS (AnnF ann TermF)) a -> FS (AnnF ann TermF) a Source #
pattern AppT :: ann (FS (AnnF ann TermF) a) -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a Source #
pattern TypeIdT :: ann (FS (AnnF ann TermF) a) -> FS (AnnF ann TermF) a -> Maybe (FS (AnnF ann TermF) a) -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a Source #
pattern TypeSigmaT :: ann (FS (AnnF ann TermF) a) -> Binder -> TModality -> FS (AnnF ann TermF) a -> Scope (FS (AnnF ann TermF)) a -> FS (AnnF ann TermF) a Source #
pattern TypeFunT :: ann (FS (AnnF ann TermF) a) -> Binder -> TModality -> FS (AnnF ann TermF) a -> Maybe (Scope (FS (AnnF ann TermF)) a) -> Scope (FS (AnnF ann TermF)) a -> FS (AnnF ann TermF) a Source #
pattern RecOrT :: ann (FS (AnnF ann TermF) a) -> [(FS (AnnF ann TermF) a, FS (AnnF ann TermF) a)] -> FS (AnnF ann TermF) a Source #
pattern TopeUninvT :: ann (FS (AnnF ann TermF) a) -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a Source #
pattern TopeInvT :: ann (FS (AnnF ann TermF) a) -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a Source #
pattern TopeOrT :: ann (FS (AnnF ann TermF) a) -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a Source #
pattern TopeAndT :: ann (FS (AnnF ann TermF) a) -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a Source #
pattern TopeLEQT :: ann (FS (AnnF ann TermF) a) -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a Source #
pattern TopeEQT :: ann (FS (AnnF ann TermF) a) -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a Source #
pattern CubeUnflipT :: ann (FS (AnnF ann TermF) a) -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a Source #
pattern CubeFlipT :: ann (FS (AnnF ann TermF) a) -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a Source #
pattern CubeProductT :: ann (FS (AnnF ann TermF) a) -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a -> FS (AnnF ann TermF) a Source #
pattern HoleE :: forall {g :: Type -> Type -> Type} {a}. Maybe VarIdent -> FS (Sum TermF g) a Source #
pattern LetModE :: forall {g :: Type -> Type -> Type} {a}. Binder -> TModality -> TModality -> Maybe (FS (Sum TermF g) a) -> FS (Sum TermF g) a -> Scope (FS (Sum TermF g)) a -> FS (Sum TermF g) a Source #
pattern ModExtractE :: forall {g :: Type -> Type -> Type} {a}. TModality -> TModality -> FS (Sum TermF g) a -> FS (Sum TermF g) a Source #
pattern ModAppE :: forall {g :: Type -> Type -> Type} {a}. TModality -> FS (Sum TermF g) a -> FS (Sum TermF g) a Source #
pattern TypeModalE :: forall {g :: Type -> Type -> Type} {a}. TModality -> FS (Sum TermF g) a -> FS (Sum TermF g) a Source #
pattern TypeRestrictedE :: forall {g :: Type -> Type -> Type} {a}. FS (Sum TermF g) a -> [(FS (Sum TermF g) a, FS (Sum TermF g) a)] -> FS (Sum TermF g) a Source #
pattern TypeAscE :: forall {g :: Type -> Type -> Type} {a}. FS (Sum TermF g) a -> FS (Sum TermF g) a -> FS (Sum TermF g) a Source #
pattern IdJE :: forall {g :: Type -> Type -> Type} {a}. FS (Sum TermF g) a -> FS (Sum TermF g) a -> FS (Sum TermF g) a -> FS (Sum TermF g) a -> FS (Sum TermF g) a -> FS (Sum TermF g) a -> FS (Sum TermF g) a Source #
pattern ReflE :: forall {g :: Type -> Type -> Type} {a}. Maybe (FS (Sum TermF g) a, Maybe (FS (Sum TermF g) a)) -> FS (Sum TermF g) a Source #
pattern SecondE :: forall {g :: Type -> Type -> Type} {a}. FS (Sum TermF g) a -> FS (Sum TermF g) a Source #
pattern FirstE :: forall {g :: Type -> Type -> Type} {a}. FS (Sum TermF g) a -> FS (Sum TermF g) a Source #
pattern PairE :: forall {g :: Type -> Type -> Type} {a}. FS (Sum TermF g) a -> FS (Sum TermF g) a -> FS (Sum TermF g) a Source #
pattern LambdaE :: forall {g :: Type -> Type -> Type} {a}. Binder -> Maybe (TModality, FS (Sum TermF g) a, Maybe (Scope (FS (Sum TermF g)) a)) -> Scope (FS (Sum TermF g)) a -> FS (Sum TermF g) a Source #
pattern LetE :: forall {g :: Type -> Type -> Type} {a}. Binder -> Maybe (FS (Sum TermF g) a) -> FS (Sum TermF g) a -> Scope (FS (Sum TermF g)) a -> FS (Sum TermF g) a Source #
pattern AppE :: forall {g :: Type -> Type -> Type} {a}. FS (Sum TermF g) a -> FS (Sum TermF g) a -> FS (Sum TermF g) a Source #
pattern TypeIdE :: forall {g :: Type -> Type -> Type} {a}. FS (Sum TermF g) a -> Maybe (FS (Sum TermF g) a) -> FS (Sum TermF g) a -> FS (Sum TermF g) a Source #
pattern TypeSigmaE :: forall {g :: Type -> Type -> Type} {a}. Binder -> TModality -> FS (Sum TermF g) a -> Scope (FS (Sum TermF g)) a -> FS (Sum TermF g) a Source #
pattern TypeFunE :: forall {g :: Type -> Type -> Type} {a}. Binder -> TModality -> FS (Sum TermF g) a -> Maybe (Scope (FS (Sum TermF g)) a) -> Scope (FS (Sum TermF g)) a -> FS (Sum TermF g) a Source #
pattern RecOrE :: forall {g :: Type -> Type -> Type} {a}. [(FS (Sum TermF g) a, FS (Sum TermF g) a)] -> FS (Sum TermF g) a Source #
pattern TopeUninvE :: forall {g :: Type -> Type -> Type} {a}. FS (Sum TermF g) a -> FS (Sum TermF g) a Source #
pattern TopeInvE :: forall {g :: Type -> Type -> Type} {a}. FS (Sum TermF g) a -> FS (Sum TermF g) a Source #
pattern TopeOrE :: forall {g :: Type -> Type -> Type} {a}. FS (Sum TermF g) a -> FS (Sum TermF g) a -> FS (Sum TermF g) a Source #
pattern TopeAndE :: forall {g :: Type -> Type -> Type} {a}. FS (Sum TermF g) a -> FS (Sum TermF g) a -> FS (Sum TermF g) a Source #
pattern TopeLEQE :: forall {g :: Type -> Type -> Type} {a}. FS (Sum TermF g) a -> FS (Sum TermF g) a -> FS (Sum TermF g) a Source #
pattern TopeEQE :: forall {g :: Type -> Type -> Type} {a}. FS (Sum TermF g) a -> FS (Sum TermF g) a -> FS (Sum TermF g) a Source #
pattern CubeUnflipE :: forall {g :: Type -> Type -> Type} {a}. FS (Sum TermF g) a -> FS (Sum TermF g) a Source #
pattern CubeFlipE :: forall {g :: Type -> Type -> Type} {a}. FS (Sum TermF g) a -> FS (Sum TermF g) a Source #
pattern CubeProductE :: forall {g :: Type -> Type -> Type} {a}. FS (Sum TermF g) a -> FS (Sum TermF g) a -> FS (Sum TermF g) a Source #
pattern LetMod :: Binder -> TModality -> TModality -> Maybe (FS TermF a) -> FS TermF a -> Scope (FS TermF) a -> FS TermF a Source #
pattern IdJ :: FS TermF a -> FS TermF a -> FS TermF a -> FS TermF a -> FS TermF a -> FS TermF a -> FS TermF a Source #
pattern Lambda :: Binder -> Maybe (TModality, FS TermF a, Maybe (Scope (FS TermF) a)) -> Scope (FS TermF) a -> FS TermF a Source #
pattern Let :: Binder -> Maybe (FS TermF a) -> FS TermF a -> Scope (FS TermF) a -> FS TermF a Source #
pattern TypeFun :: Binder -> TModality -> FS TermF a -> Maybe (Scope (FS TermF) a) -> Scope (FS TermF) a -> FS TermF a Source #
pattern TopeBottom :: FS TermF a Source #
pattern CubeUnitStar :: FS TermF a Source #
pattern UniverseTope :: FS TermF a Source #
pattern UniverseCube :: FS TermF a Source #
Instances
| Functor Type Source # | |
| Foldable Type Source # | |
Defined in Language.Rzk.Free.Syntax Methods fold :: Monoid m => Type m -> m # foldMap :: Monoid m => (a -> m) -> Type a -> m # foldMap' :: Monoid m => (a -> m) -> Type a -> m # foldr :: (a -> b -> b) -> b -> Type a -> b # foldr' :: (a -> b -> b) -> b -> Type a -> b # foldl :: (b -> a -> b) -> b -> Type a -> b # foldl' :: (b -> a -> b) -> b -> Type a -> b # foldr1 :: (a -> a -> a) -> Type a -> a # foldl1 :: (a -> a -> a) -> Type a -> a # elem :: Eq a => a -> Type a -> Bool # maximum :: Ord a => Type a -> a # | |
| Traversable Type Source # | |
| Eq term => Eq (Type term) Source # | |
Instances
| Functor TypeInfo Source # | |
| Foldable TypeInfo Source # | |
Defined in Language.Rzk.Free.Syntax Methods fold :: Monoid m => TypeInfo m -> m # foldMap :: Monoid m => (a -> m) -> TypeInfo a -> m # foldMap' :: Monoid m => (a -> m) -> TypeInfo a -> m # foldr :: (a -> b -> b) -> b -> TypeInfo a -> b # foldr' :: (a -> b -> b) -> b -> TypeInfo a -> b # foldl :: (b -> a -> b) -> b -> TypeInfo a -> b # foldl' :: (b -> a -> b) -> b -> TypeInfo a -> b # foldr1 :: (a -> a -> a) -> TypeInfo a -> a # foldl1 :: (a -> a -> a) -> TypeInfo a -> a # elem :: Eq a => a -> TypeInfo a -> Bool # maximum :: Ord a => TypeInfo a -> a # minimum :: Ord a => TypeInfo a -> a # | |
| IsString TermT' Source # | Parse and |
Defined in Rzk.TypeCheck Methods fromString :: String -> TermT' # | |
| Traversable TypeInfo Source # | |
Defined in Language.Rzk.Free.Syntax | |
| Show TermT' Source # | |
| Eq term => Eq (TypeInfo term) Source # | |
termIsWHNF :: TermT var -> TermT var Source #
invalidateWHNF :: TermT var -> TermT var Source #
partialFreeVarsT :: TermT a -> [a] Source #
patternToTerm :: Pattern -> Term Source #
flattenBinderApp :: Term -> [Term] Source #
Split a binder term into the individual variables it names. A multi-variable
binder like (x y : A) is parsed as the application spine x y; this returns
[x, y] so each can become its own nested binder. A single binder term (a
variable, a pair pattern, …) is returned unchanged as a singleton.
unsafeTermToPattern :: Term -> Pattern Source #
sigmaParamToTypeSigma :: BNFC'Position -> SigmaParam -> Term -> Term Source #
A projection step: first (π₁) or second (π₂) component.
binderToPattern :: Binder -> Pattern Source #
Render a Binder as a surface pattern (used to display the binder itself,
e.g. (t , s)). Anonymous variables become _.
binderToTerm :: Binder -> Term VarIdent Source #
A term that prints as the binder's surface pattern, e.g. the point
(t , s). Used to render a bare occurrence of a pattern binder's variable
(one not under a projection, e.g. the point in a shape tope Δ² (t , s)) as
the pattern itself rather than the underlying single variable. A
single-variable binder yields that variable.
binderDisplayName :: Binder -> VarIdent Source #
A VarIdent that prints as the binder's surface pattern, e.g. (t , s).
Used to display a pattern binder in a hole's local context as the pattern
itself rather than as the underlying single variable.
binderPaths :: Binder -> [([Proj], VarIdent)] Source #
The named leaves of a binder, each paired with the projection path that
reaches it from the bound variable. For example (t , (a , b)) yields
[([PFst], t), ([PSnd, PFst], a), ([PSnd, PSnd], b)].
binderLeaves :: Binder -> [VarIdent] Source #
The names appearing in a binder.
binderIsCompound :: Binder -> Bool Source #
Does this binder destructure a pair/tuple (as opposed to naming a single
variable or _)?
freshenBinderLeaves :: [VarIdent] -> Binder -> Binder Source #
Refresh the named leaves of a binder so they avoid the given names (and one another). Anonymous leaves and the unit pattern are left unchanged.
projChain :: Term a -> Maybe ([Proj], a) Source #
Decompose a chain of projections applied to a variable into the projection
path from the variable outwards, matching binderPaths. The outermost
projection is applied last, so it goes at the end of the path: e.g.
π₂ (π₁ x) (select π₁ first, then π₂) becomes Just ([PFst, PSnd], x).
foldBinderProjections :: Eq a => [(a, [([Proj], a)])] -> Term a -> Term a Source #
Replace projection chains rooted at a pattern binder with the binder's
component name. Given a map from a (bound) variable to the named leaves of
its binder, every π₁/π₂ chain that reaches a named leaf is rewritten to
that name. Ordinary projections (of variables not bound by a pattern, or
chains that do not reach a named leaf) are left untouched.
restorePatternVars :: [(VarIdent, Binder)] -> Term VarIdent -> Term VarIdent Source #
Replace bare uses of a pattern binder's variable with the pattern term
(e.g. a whole point (t , s) rather than the underlying single variable, in
a tope Δ² (t , s)). Given a map from each (already display-named) variable
to its binder, every free occurrence of a compound binder's variable is
expanded to its pattern. Complements foldBinderProjections, which folds
projections of such a variable; run this after folding, so projections
have already become component names and only bare uses remain.
foldBinderProjectionsT :: Eq a => [(a, [([Proj], a)])] -> TermT a -> TermT a Source #
Like foldBinderProjections, but for type-annotated terms (e.g. those
embedded in type errors). The annotation of a folded leaf is dropped, which
is harmless: the result is only rendered, and a bare variable needs none.
fromScopeBinder' :: Binder -> VarIdent -> [VarIdent] -> [VarIdent] -> Scope Term VarIdent -> Term Source #
Like fromScope', but additionally restores pattern-binder component names
inside the scope: projections of the bound variable x are folded back to
the names recorded in binder (e.g. π₁ x becomes t). For a binder that
names a single variable this is exactly fromScope'.
defaultVarIdents :: [VarIdent] Source #
>>>:set -XOverloadedStrings>>>import qualified Data.Text as T
refreshVar :: [VarIdent] -> VarIdent -> VarIdent Source #
Given a list of used variable names in the current context, generate a unique fresh name based on a given one.
>>>print $ refreshVar ["x", "y", "x₁", "z"] "x"x₂
incVarIdentIndex :: VarIdent -> VarIdent Source #