-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Higher order logic -- -- This package implements a higher order logic kernel with OpenTheory -- support. @package hol @version 1.4 module HOL.Name newtype Namespace Namespace :: [String] -> Namespace data Name Name :: Namespace -> String -> Name global :: Namespace mkGlobal :: String -> Name destGlobal :: Name -> Maybe String isGlobal :: Name -> Bool variantAvoiding :: Set Name -> Name -> Name freshSupply :: [Name] boolNamespace :: Namespace listNamespace :: Namespace pairNamespace :: Namespace sumNamespace :: Namespace functionNamespace :: Namespace naturalNamespace :: Namespace realNamespace :: Namespace setNamespace :: Namespace instance GHC.Show.Show HOL.Name.Namespace instance GHC.Classes.Ord HOL.Name.Namespace instance GHC.Classes.Eq HOL.Name.Namespace instance GHC.Show.Show HOL.Name.Name instance GHC.Classes.Ord HOL.Name.Name instance GHC.Classes.Eq HOL.Name.Name module HOL.Data type Size = Integer data TypeVar TypeVar :: Name -> TypeVar data TypeOp TypeOp :: Name -> TypeOpProv -> TypeOp data TypeOpProv UndefTypeOpProv :: TypeOpProv DefTypeOpProv :: TypeOpDef -> TypeOpProv data TypeOpDef TypeOpDef :: Term -> [TypeVar] -> TypeOpDef data Type Type :: TypeData -> TypeId -> Size -> Set TypeVar -> Type data TypeData VarType :: TypeVar -> TypeData OpType :: TypeOp -> [Type] -> TypeData type TypeId = StableName TypeData data Var Var :: Name -> Type -> Var data Const Const :: Name -> ConstProv -> Const data ConstProv UndefConstProv :: ConstProv DefConstProv :: ConstDef -> ConstProv AbsConstProv :: TypeOpDef -> ConstProv RepConstProv :: TypeOpDef -> ConstProv data ConstDef ConstDef :: Term -> ConstDef data Term Term :: TermData -> TermId -> Size -> Type -> Set TypeVar -> Set Var -> Term data TermData ConstTerm :: Const -> Type -> TermData VarTerm :: Var -> TermData AppTerm :: Term -> Term -> TermData AbsTerm :: Var -> Term -> TermData type TermId = StableName TermData instance GHC.Show.Show HOL.Data.TypeVar instance GHC.Classes.Ord HOL.Data.TypeVar instance GHC.Classes.Eq HOL.Data.TypeVar instance GHC.Show.Show HOL.Data.ConstDef instance GHC.Classes.Ord HOL.Data.ConstDef instance GHC.Classes.Eq HOL.Data.ConstDef instance GHC.Show.Show HOL.Data.ConstProv instance GHC.Classes.Ord HOL.Data.ConstProv instance GHC.Classes.Eq HOL.Data.ConstProv instance GHC.Show.Show HOL.Data.Const instance GHC.Classes.Ord HOL.Data.Const instance GHC.Classes.Eq HOL.Data.Const instance GHC.Show.Show HOL.Data.TypeOpDef instance GHC.Classes.Ord HOL.Data.TypeOpDef instance GHC.Classes.Eq HOL.Data.TypeOpDef instance GHC.Show.Show HOL.Data.TypeOpProv instance GHC.Classes.Ord HOL.Data.TypeOpProv instance GHC.Classes.Eq HOL.Data.TypeOpProv instance GHC.Show.Show HOL.Data.TypeOp instance GHC.Classes.Ord HOL.Data.TypeOp instance GHC.Classes.Eq HOL.Data.TypeOp instance GHC.Show.Show HOL.Data.TypeData instance GHC.Classes.Ord HOL.Data.TypeData instance GHC.Classes.Eq HOL.Data.TypeData instance GHC.Show.Show HOL.Data.Var instance GHC.Classes.Ord HOL.Data.Var instance GHC.Classes.Eq HOL.Data.Var instance GHC.Show.Show HOL.Data.TermData instance GHC.Classes.Ord HOL.Data.TermData instance GHC.Classes.Eq HOL.Data.TermData instance GHC.Classes.Eq HOL.Data.Type instance GHC.Classes.Ord HOL.Data.Type instance GHC.Show.Show HOL.Data.Type instance GHC.Classes.Eq HOL.Data.Term instance GHC.Classes.Ord HOL.Data.Term instance GHC.Show.Show HOL.Data.Term module HOL.Const name :: Const -> Name prov :: Const -> ConstProv mkUndef :: Name -> Const isUndef :: Const -> Bool class HasConsts a consts :: HasConsts a => a -> Set Const eqName :: Name eq :: Const selectName :: Name select :: Const primitives :: Set Const condName :: Name conjName :: Name disjName :: Name existsName :: Name existsUniqueName :: Name forallName :: Name impName :: Name negName :: Name appendName :: Name consName :: Name pairName :: Name composeName :: Name funpowName :: Name addName :: Name bit0Name :: Name bit1Name :: Name divName :: Name geName :: Name gtName :: Name leName :: Name ltName :: Name modName :: Name multName :: Name powerName :: Name subName :: Name sucName :: Name zeroName :: Name addRealName :: Name divRealName :: Name fromNaturalRealName :: Name geRealName :: Name gtRealName :: Name leRealName :: Name ltRealName :: Name multRealName :: Name powerRealName :: Name subRealName :: Name crossName :: Name deleteName :: Name differenceName :: Name fromPredicateName :: Name insertName :: Name intersectName :: Name memberName :: Name properSubsetName :: Name subsetName :: Name unionName :: Name instance HOL.Const.HasConsts HOL.Data.Const instance HOL.Const.HasConsts a => HOL.Const.HasConsts [a] instance HOL.Const.HasConsts a => HOL.Const.HasConsts (Data.Set.Internal.Set a) instance HOL.Const.HasConsts HOL.Data.TermData instance HOL.Const.HasConsts HOL.Data.Term module HOL.Parse spaceParser :: Parsec Text st () eolParser :: Parsec Text st () lineParser :: Parsec Text st Char class Parsable a parser :: Parsable a => Parsec Text st a fromText :: Parsable a => Text -> Maybe a fromString :: Parsable a => String -> Maybe a fromStringUnsafe :: Parsable a => String -> a fromTextFile :: Parsable a => FilePath -> IO a data ParseInteger StartParseInteger :: ParseInteger ZeroParseInteger :: ParseInteger NegativeParseInteger :: ParseInteger NonZeroParseInteger :: Bool -> !Integer -> ParseInteger ErrorParseInteger :: ParseInteger advanceParseInteger :: ParseInteger -> Char -> ParseInteger endParseInteger :: ParseInteger -> Maybe Integer type FoldlParseInteger a = (ParseInteger -> Char -> ParseInteger) -> ParseInteger -> a -> ParseInteger parseInteger :: FoldlParseInteger a -> a -> Maybe Integer instance HOL.Parse.Parsable GHC.Integer.Type.Integer instance HOL.Parse.Parsable HOL.Name.Name module HOL.TypeData mkVar :: TypeVar -> TypeData destVar :: TypeData -> Maybe TypeVar isVar :: TypeData -> Bool eqVar :: TypeVar -> TypeData -> Bool mkOp :: TypeOp -> [Type] -> TypeData destOp :: TypeData -> Maybe (TypeOp, [Type]) isOp :: TypeData -> Bool destGivenOp :: TypeOp -> TypeData -> Maybe [Type] isGivenOp :: TypeOp -> TypeData -> Bool size :: TypeData -> Size isNullaryOp :: TypeOp -> TypeData -> Bool destUnaryOp :: TypeOp -> TypeData -> Maybe Type isUnaryOp :: TypeOp -> TypeData -> Bool destBinaryOp :: TypeOp -> TypeData -> Maybe (Type, Type) isBinaryOp :: TypeOp -> TypeData -> Bool module HOL.TypeOp name :: TypeOp -> Name prov :: TypeOp -> TypeOpProv mkUndef :: Name -> TypeOp isUndef :: TypeOp -> Bool class HasOps a ops :: HasOps a => a -> Set TypeOp boolName :: Name bool :: TypeOp funName :: Name fun :: TypeOp indName :: Name ind :: TypeOp primitives :: Set TypeOp productName :: Name sumName :: Name naturalName :: Name instance HOL.TypeOp.HasOps HOL.Data.TypeOp instance HOL.TypeOp.HasOps a => HOL.TypeOp.HasOps [a] instance HOL.TypeOp.HasOps a => HOL.TypeOp.HasOps (Data.Set.Internal.Set a) instance HOL.TypeOp.HasOps HOL.Data.TypeData instance HOL.TypeOp.HasOps HOL.Data.Type instance HOL.TypeOp.HasOps HOL.Data.Var instance HOL.TypeOp.HasOps HOL.Data.TermData instance HOL.TypeOp.HasOps HOL.Data.Term module HOL.TypeVar mk :: Name -> TypeVar dest :: TypeVar -> Name eqName :: Name -> TypeVar -> Bool alpha :: TypeVar beta :: TypeVar class HasVars a vars :: HasVars a => a -> Set TypeVar instance HOL.TypeVar.HasVars HOL.Data.TypeVar instance HOL.TypeVar.HasVars a => HOL.TypeVar.HasVars [a] instance HOL.TypeVar.HasVars a => HOL.TypeVar.HasVars (Data.Set.Internal.Set a) instance HOL.TypeVar.HasVars HOL.Data.TypeData instance HOL.TypeVar.HasVars HOL.Data.Type instance HOL.TypeVar.HasVars HOL.Data.Var instance HOL.TypeVar.HasVars HOL.Data.TermData instance HOL.TypeVar.HasVars HOL.Data.Term module HOL.Type dest :: Type -> TypeData mk :: TypeData -> Type mkVar :: TypeVar -> Type destVar :: Type -> Maybe TypeVar isVar :: Type -> Bool eqVar :: TypeVar -> Type -> Bool mkOp :: TypeOp -> [Type] -> Type destOp :: Type -> Maybe (TypeOp, [Type]) isOp :: Type -> Bool destGivenOp :: TypeOp -> Type -> Maybe [Type] isGivenOp :: TypeOp -> Type -> Bool size :: Type -> Size isNullaryOp :: TypeOp -> Type -> Bool destUnaryOp :: TypeOp -> Type -> Maybe Type isUnaryOp :: TypeOp -> Type -> Bool destBinaryOp :: TypeOp -> Type -> Maybe (Type, Type) isBinaryOp :: TypeOp -> Type -> Bool alpha :: Type beta :: Type bool :: Type isBool :: Type -> Bool mkPred :: Type -> Type destPred :: Type -> Maybe Type isPred :: Type -> Bool mkRel :: Type -> Type -> Type destRel :: Type -> Maybe (Type, Type) isRel :: Type -> Bool mkFun :: Type -> Type -> Type destFun :: Type -> Maybe (Type, Type) isFun :: Type -> Bool domain :: Type -> Maybe Type range :: Type -> Maybe Type listMkFun :: [Type] -> Type -> Type stripFun :: Type -> ([Type], Type) ind :: Type isInd :: Type -> Bool mkEq :: Type -> Type destEq :: Type -> Maybe Type isEq :: Type -> Bool mkSelect :: Type -> Type destSelect :: Type -> Maybe Type isSelect :: Type -> Bool module HOL.TypeSubst data TypeSubst TypeSubst :: Map TypeVar Type -> Map Type (Maybe Type) -> TypeSubst mk :: Map TypeVar Type -> TypeSubst dest :: TypeSubst -> Map TypeVar Type fromList :: [(TypeVar, Type)] -> TypeSubst empty :: TypeSubst singleton :: TypeVar -> Type -> TypeSubst null :: TypeSubst -> Bool varSubst :: TypeVar -> TypeSubst -> Maybe Type dataSubst :: TypeData -> TypeSubst -> (Maybe Type, TypeSubst) class CanSubst a basicSubst :: CanSubst a => a -> TypeSubst -> (Maybe a, TypeSubst) sharingSubst :: CanSubst a => a -> TypeSubst -> (Maybe a, TypeSubst) subst :: CanSubst a => TypeSubst -> a -> Maybe a trySharingSubst :: CanSubst a => a -> TypeSubst -> (a, TypeSubst) trySubst :: CanSubst a => TypeSubst -> a -> a -- | compose :: TypeSubst -> TypeSubst -> TypeSubst instance HOL.TypeSubst.CanSubst a => HOL.TypeSubst.CanSubst [a] instance (GHC.Classes.Ord a, HOL.TypeSubst.CanSubst a) => HOL.TypeSubst.CanSubst (Data.Set.Internal.Set a) instance HOL.TypeSubst.CanSubst HOL.Data.Type instance HOL.TypeSubst.CanSubst HOL.Data.Var instance GHC.Classes.Eq HOL.TypeSubst.TypeSubst module HOL.Util mkUnsafe :: String -> Maybe a -> a mkUnsafe1 :: String -> (a -> Maybe b) -> a -> b mkUnsafe2 :: String -> (a -> b -> Maybe c) -> a -> b -> c module HOL.Var mk :: Name -> Type -> Var dest :: Var -> (Name, Type) name :: Var -> Name typeOf :: Var -> Type class HasFree a free :: HasFree a => a -> Set Var freeIn :: HasFree a => Var -> a -> Bool notFreeIn :: HasFree a => Var -> a -> Bool closed :: HasFree a => a -> Bool renameAvoiding :: Set Name -> Var -> Var instance HOL.Var.HasFree HOL.Data.Var instance HOL.Var.HasFree a => HOL.Var.HasFree [a] instance HOL.Var.HasFree a => HOL.Var.HasFree (Data.Set.Internal.Set a) instance HOL.Var.HasFree HOL.Data.TermData instance HOL.Var.HasFree HOL.Data.Term module HOL.TermData mkConst :: Const -> Type -> TermData destConst :: TermData -> Maybe (Const, Type) isConst :: TermData -> Bool destGivenConst :: Const -> TermData -> Maybe Type isGivenConst :: Const -> TermData -> Bool mkVar :: Var -> TermData destVar :: TermData -> Maybe Var isVar :: TermData -> Bool eqVar :: Var -> TermData -> Bool mkApp :: Term -> Term -> Maybe TermData destApp :: TermData -> Maybe (Term, Term) isApp :: TermData -> Bool mkAbs :: Var -> Term -> TermData destAbs :: TermData -> Maybe (Var, Term) isAbs :: TermData -> Bool size :: TermData -> Size typeOf :: TermData -> Type freeInMultiple :: Var -> TermData -> Bool module HOL.Term dest :: Term -> TermData mk :: TermData -> Term mkConst :: Const -> Type -> Term destConst :: Term -> Maybe (Const, Type) isConst :: Term -> Bool destGivenConst :: Const -> Term -> Maybe Type isGivenConst :: Const -> Term -> Bool mkVar :: Var -> Term destVar :: Term -> Maybe Var isVar :: Term -> Bool eqVar :: Var -> Term -> Bool mkApp :: Term -> Term -> Maybe Term mkAppUnsafe :: Term -> Term -> Term destApp :: Term -> Maybe (Term, Term) isApp :: Term -> Bool rator :: Term -> Maybe Term rand :: Term -> Maybe Term land :: Term -> Maybe Term listMkApp :: Term -> [Term] -> Maybe Term listMkAppUnsafe :: Term -> [Term] -> Term stripApp :: Term -> (Term, [Term]) mkAbs :: Var -> Term -> Term destAbs :: Term -> Maybe (Var, Term) isAbs :: Term -> Bool listMkAbs :: [Var] -> Term -> Term stripAbs :: Term -> ([Var], Term) size :: Term -> Size typeOf :: Term -> Type isBool :: Term -> Bool sameType :: Term -> Term -> Bool sameTypeVar :: Var -> Term -> Bool freeInMultiple :: Var -> Term -> Bool freeInOnce :: Var -> Term -> Bool alphaCompare :: Term -> Term -> Ordering alphaEqual :: Term -> Term -> Bool renameFresh :: Term -> Term mkEqConst :: Type -> Term destEqConst :: Term -> Maybe Type isEqConst :: Term -> Bool mkEq :: Term -> Term -> Maybe Term mkEqUnsafe :: Term -> Term -> Term destEq :: Term -> Maybe (Term, Term) isEq :: Term -> Bool lhs :: Term -> Maybe Term rhs :: Term -> Maybe Term rhsUnsafe :: Term -> Term mkRefl :: Term -> Term destRefl :: Term -> Maybe Term isRefl :: Term -> Bool mkSelectConst :: Type -> Term destSelectConst :: Term -> Maybe Type isSelectConst :: Term -> Bool mkSelect :: Var -> Term -> Term destSelect :: Term -> Maybe (Var, Term) isSelect :: Term -> Bool module HOL.Subst data Subst Subst :: TypeSubst -> Map Var Term -> Map Term (Maybe Term) -> Subst mk :: TypeSubst -> Map Var Term -> Maybe Subst mkUnsafe :: TypeSubst -> Map Var Term -> Subst dest :: Subst -> (TypeSubst, Map Var Term) fromList :: [(TypeVar, Type)] -> [(Var, Term)] -> Maybe Subst fromListUnsafe :: [(TypeVar, Type)] -> [(Var, Term)] -> Subst empty :: Subst singleton :: Var -> Term -> Maybe Subst singletonUnsafe :: Var -> Term -> Subst null :: Subst -> Bool capturableVars :: Var -> Term -> Term -> Set Var renameBoundVar :: Var -> Term -> Term -> Term -> Term avoidCapture :: Bool -> Var -> Var -> Term -> Term -> (Var, Term) varSubst :: Var -> Subst -> (Maybe Term, Subst) dataSubst :: TermData -> Subst -> (Maybe Term, Subst) class CanSubst a basicSubst :: CanSubst a => a -> Subst -> (Maybe a, Subst) sharingSubst :: CanSubst a => a -> Subst -> (Maybe a, Subst) subst :: CanSubst a => Subst -> a -> Maybe a typeSubst :: CanSubst a => TypeSubst -> a -> Maybe a trySharingSubst :: CanSubst a => a -> Subst -> (a, Subst) trySubst :: CanSubst a => Subst -> a -> a tryTypeSubst :: CanSubst a => TypeSubst -> a -> a instance HOL.Subst.CanSubst a => HOL.Subst.CanSubst [a] instance (GHC.Classes.Ord a, HOL.Subst.CanSubst a) => HOL.Subst.CanSubst (Data.Set.Internal.Set a) instance HOL.Subst.CanSubst HOL.Data.Type instance HOL.Subst.CanSubst HOL.Data.Var instance HOL.Subst.CanSubst HOL.Data.Term module HOL.TermAlpha newtype TermAlpha TermAlpha :: Term -> TermAlpha mk :: Term -> TermAlpha dest :: TermAlpha -> Term typeOf :: TermAlpha -> Type isBool :: TermAlpha -> Bool axiomOfExtensionality :: TermAlpha axiomOfChoice :: TermAlpha axiomOfInfinity :: TermAlpha standardAxioms :: Set TermAlpha standardAxiomName :: TermAlpha -> String instance GHC.Show.Show HOL.TermAlpha.TermAlpha instance GHC.Classes.Eq HOL.TermAlpha.TermAlpha instance GHC.Classes.Ord HOL.TermAlpha.TermAlpha instance HOL.TypeVar.HasVars HOL.TermAlpha.TermAlpha instance HOL.TypeOp.HasOps HOL.TermAlpha.TermAlpha instance HOL.Const.HasConsts HOL.TermAlpha.TermAlpha instance HOL.Var.HasFree HOL.TermAlpha.TermAlpha instance HOL.Subst.CanSubst HOL.TermAlpha.TermAlpha module HOL.Sequent data Sequent Sequent :: TermAlpha -> Set TermAlpha -> Sequent [concl] :: Sequent -> TermAlpha [hyp] :: Sequent -> Set TermAlpha mk :: Set TermAlpha -> TermAlpha -> Maybe Sequent mkUnsafe :: Set TermAlpha -> TermAlpha -> Sequent dest :: Sequent -> (Set TermAlpha, TermAlpha) nullHyp :: Sequent -> Bool mkNullHyp :: TermAlpha -> Maybe Sequent mkNullHypUnsafe :: TermAlpha -> Sequent axiomOfExtensionality :: Sequent axiomOfChoice :: Sequent axiomOfInfinity :: Sequent standardAxioms :: Set Sequent instance GHC.Show.Show HOL.Sequent.Sequent instance GHC.Classes.Ord HOL.Sequent.Sequent instance GHC.Classes.Eq HOL.Sequent.Sequent instance HOL.TypeVar.HasVars HOL.Sequent.Sequent instance HOL.TypeOp.HasOps HOL.Sequent.Sequent instance HOL.Const.HasConsts HOL.Sequent.Sequent instance HOL.Var.HasFree HOL.Sequent.Sequent instance HOL.Subst.CanSubst HOL.Sequent.Sequent module HOL.Thm data Thm assume :: Term -> Maybe Thm axiomOfChoice :: Thm axiomOfExtensionality :: Thm axiomOfInfinity :: Thm betaConv :: Term -> Maybe Thm concl :: Thm -> TermAlpha deductAntisym :: Thm -> Thm -> Thm defineConst :: Name -> Term -> Maybe (Const, Thm) defineTypeOp :: Name -> Name -> Name -> [TypeVar] -> Thm -> Maybe (TypeOp, Const, Const, Thm, Thm) dest :: Thm -> Sequent eqMp :: Thm -> Thm -> Maybe Thm hyp :: Thm -> Set TermAlpha mkAbs :: Var -> Thm -> Maybe Thm mkAbsUnsafe :: Var -> Thm -> Thm mkApp :: Thm -> Thm -> Maybe Thm mkAppUnsafe :: Thm -> Thm -> Thm nullHyp :: Thm -> Bool refl :: Term -> Thm standardAxioms :: Set Thm subst :: Subst -> Thm -> Thm instance GHC.Show.Show HOL.Thm.Thm instance GHC.Classes.Ord HOL.Thm.Thm instance GHC.Classes.Eq HOL.Thm.Thm instance HOL.TypeVar.HasVars HOL.Thm.Thm instance HOL.TypeOp.HasOps HOL.Thm.Thm instance HOL.Const.HasConsts HOL.Thm.Thm instance HOL.Var.HasFree HOL.Thm.Thm instance HOL.Subst.CanSubst HOL.Thm.Thm module HOL.Rule rator :: Thm -> Term -> Maybe Thm ratorUnsafe :: Thm -> Term -> Thm rand :: Term -> Thm -> Maybe Thm randUnsafe :: Term -> Thm -> Thm sym :: Thm -> Maybe Thm trans :: Thm -> Thm -> Maybe Thm transUnsafe :: Thm -> Thm -> Thm proveHyp :: Thm -> Thm -> Maybe Thm alpha :: Term -> Thm -> Maybe Thm alphaHyp :: Term -> Thm -> Maybe Thm alphaSequent :: Sequent -> Thm -> Maybe Thm defineConstList :: [(Name, Var)] -> Thm -> Maybe ([Const], Thm) defineTypeOpLegacy :: Name -> Name -> Name -> [TypeVar] -> Thm -> Maybe (TypeOp, Const, Const, Thm, Thm) module HOL.Conv data Result Unchanged :: Result Changed :: Thm -> Result newtype Conv Conv :: (Term -> Maybe Result) -> Conv apply :: Conv -> Term -> Maybe Result applyData :: Conv -> Conv -> Conv -> TermData -> Maybe Result applyTerm :: Conv -> Term -> Term fail :: Conv id :: Conv beta :: Conv betaSimp :: Conv orelse :: Conv -> Conv -> Conv thenc :: Conv -> Conv -> Conv try :: Conv -> Conv repeat :: Conv -> Conv sub :: Conv -> Conv rator :: Conv -> Conv rand :: Conv -> Conv abs :: Conv -> Conv cond :: (Term -> Bool) -> Conv -> Conv -> Conv bottomUp :: Conv -> Conv eval :: Conv -> Conv instance GHC.Show.Show HOL.Conv.Result instance GHC.Classes.Ord HOL.Conv.Result instance GHC.Classes.Eq HOL.Conv.Result module HOL.Print isSymbolChar :: Char -> Bool isSymbolString :: String -> Bool ppSymbolName :: Name -> Doc type PrefixOp = Doc -> Doc ppPrefixOps :: [PrefixOp] -> Doc -> Doc type Prec = Int data Assoc LeftAssoc :: Assoc RightAssoc :: Assoc NonAssoc :: Assoc type InfixOp = (Prec, Assoc, Doc -> Doc) ppInfixOps :: (a -> Maybe (InfixOp, a, a)) -> (Bool -> a -> Doc) -> Bool -> a -> Doc class Printable a toDoc :: Printable a => a -> Doc toStringWith :: Printable a => Style -> a -> String toString :: Printable a => a -> String quoteNamespace :: Namespace -> Doc quoteName :: Name -> Doc instance GHC.Show.Show HOL.Print.Assoc instance GHC.Classes.Ord HOL.Print.Assoc instance GHC.Classes.Eq HOL.Print.Assoc instance HOL.Print.Printable Text.PrettyPrint.HughesPJ.Doc instance HOL.Print.Printable GHC.Integer.Type.Integer instance (HOL.Print.Printable a, HOL.Print.Printable b) => HOL.Print.Printable (a, b) instance HOL.Print.Printable a => HOL.Print.Printable [a] instance HOL.Print.Printable a => HOL.Print.Printable (Data.Set.Internal.Set a) instance HOL.Print.Printable HOL.Name.Namespace instance HOL.Print.Printable HOL.Name.Name instance HOL.Print.Printable HOL.Data.TypeVar instance HOL.Print.Printable HOL.Data.TypeOp instance HOL.Print.Printable HOL.Data.Type instance HOL.Print.Printable HOL.TypeSubst.TypeSubst instance HOL.Print.Printable HOL.Data.Const instance HOL.Print.Printable HOL.Data.Var instance HOL.Print.Printable HOL.Data.Term instance HOL.Print.Printable HOL.TermAlpha.TermAlpha instance HOL.Print.Printable HOL.Sequent.Sequent instance HOL.Print.Printable HOL.Thm.Thm module HOL.Theory data Theory Theory :: Map Name (Set TypeOp) -> Map Name (Set Const) -> Map Sequent Thm -> Theory [typeOpMap] :: Theory -> Map Name (Set TypeOp) [constMap] :: Theory -> Map Name (Set Const) [thmMap] :: Theory -> Map Sequent Thm empty :: Theory fromThmSet :: Set Thm -> Theory union :: Theory -> Theory -> Theory unionList :: [Theory] -> Theory lookupTypeOp :: Theory -> Name -> Maybe TypeOp lookupTypeOpUnsafe :: Theory -> Name -> TypeOp lookupConst :: Theory -> Name -> Maybe Const lookupConstUnsafe :: Theory -> Name -> Const sequents :: Theory -> Set Sequent thms :: Theory -> Set Thm lookupThm :: Theory -> Sequent -> Maybe Thm standard :: Theory instance GHC.Show.Show HOL.Theory.Theory instance GHC.Classes.Ord HOL.Theory.Theory instance GHC.Classes.Eq HOL.Theory.Theory instance HOL.TypeOp.HasOps HOL.Theory.Theory instance HOL.Const.HasConsts HOL.Theory.Theory instance HOL.Print.Printable HOL.Theory.Theory module HOL.OpenTheory.Interpret data Symbol TypeOpSymbol :: Name -> Symbol ConstSymbol :: Name -> Symbol symbolName :: Symbol -> Name renameSymbol :: Symbol -> Name -> Symbol data Rename Rename :: Symbol -> Name -> Rename destRename :: Rename -> (Symbol, Name) newtype Renames Renames :: [Rename] -> Renames [destRenames] :: Renames -> [Rename] concatRenames :: [Renames] -> Renames data Interpret Interpret :: Map Symbol Name -> Interpret mk :: Map Symbol Name -> Interpret empty :: Interpret toRenames :: Interpret -> Renames fromRenames :: Renames -> Maybe Interpret fromRenamesUnsafe :: Renames -> Interpret interpret :: Interpret -> Symbol -> Name interpretTypeOp :: Interpret -> Name -> Name interpretConst :: Interpret -> Name -> Name -- | compose :: Interpret -> Interpret -> Interpret instance GHC.Show.Show HOL.OpenTheory.Interpret.Symbol instance GHC.Classes.Ord HOL.OpenTheory.Interpret.Symbol instance GHC.Classes.Eq HOL.OpenTheory.Interpret.Symbol instance GHC.Show.Show HOL.OpenTheory.Interpret.Rename instance GHC.Classes.Ord HOL.OpenTheory.Interpret.Rename instance GHC.Classes.Eq HOL.OpenTheory.Interpret.Rename instance GHC.Show.Show HOL.OpenTheory.Interpret.Renames instance GHC.Classes.Ord HOL.OpenTheory.Interpret.Renames instance GHC.Classes.Eq HOL.OpenTheory.Interpret.Renames instance HOL.Print.Printable HOL.OpenTheory.Interpret.Interpret instance HOL.Parse.Parsable HOL.OpenTheory.Interpret.Interpret instance HOL.Print.Printable HOL.OpenTheory.Interpret.Renames instance HOL.Parse.Parsable HOL.OpenTheory.Interpret.Renames instance HOL.Print.Printable HOL.OpenTheory.Interpret.Rename instance HOL.Parse.Parsable HOL.OpenTheory.Interpret.Rename instance HOL.Print.Printable HOL.OpenTheory.Interpret.Symbol instance HOL.Parse.Parsable HOL.OpenTheory.Interpret.Symbol module HOL.OpenTheory.Article newtype Number Number :: Integer -> Number data Object NumberObject :: Number -> Object NameObject :: Name -> Object ListObject :: [Object] -> Object TypeOpObject :: TypeOp -> Object TypeObject :: Type -> Object ConstObject :: Const -> Object VarObject :: Var -> Object TermObject :: Term -> Object ThmObject :: Thm -> Object class Objective a toObject :: Objective a => a -> Object fromObject :: Objective a => Object -> Maybe a sequentObject :: Object -> Object -> Maybe Sequent pushObject :: Objective a => a -> [Object] -> [Object] push2Object :: (Objective a, Objective b) => a -> b -> [Object] -> [Object] push3Object :: (Objective a, Objective b, Objective c) => a -> b -> c -> [Object] -> [Object] push4Object :: (Objective a, Objective b, Objective c, Objective d) => a -> b -> c -> d -> [Object] -> [Object] push5Object :: (Objective a, Objective b, Objective c, Objective d, Objective e) => a -> b -> c -> d -> e -> [Object] -> [Object] popObject :: Objective a => [Object] -> Maybe (a, [Object]) pop2Object :: (Objective a, Objective b) => [Object] -> Maybe (a, b, [Object]) pop3Object :: (Objective a, Objective b, Objective c) => [Object] -> Maybe (a, b, c, [Object]) pop4Object :: (Objective a, Objective b, Objective c, Objective d) => [Object] -> Maybe (a, b, c, d, [Object]) pop5Object :: (Objective a, Objective b, Objective c, Objective d, Objective e) => [Object] -> Maybe (a, b, c, d, e, [Object]) data Command NumberCommand :: Number -> Command NameCommand :: Name -> Command AbsTermCommand :: Command AbsThmCommand :: Command AppTermCommand :: Command AppThmCommand :: Command AssumeCommand :: Command AxiomCommand :: Command BetaConvCommand :: Command ConsCommand :: Command ConstCommand :: Command ConstTermCommand :: Command DeductAntisymCommand :: Command DefCommand :: Command DefineConstCommand :: Command DefineConstListCommand :: Command DefineTypeOpCommand :: Command EqMpCommand :: Command HdTlCommand :: Command NilCommand :: Command OpTypeCommand :: Command PopCommand :: Command PragmaCommand :: Command ProveHypCommand :: Command RefCommand :: Command ReflCommand :: Command RemoveCommand :: Command SubstCommand :: Command SymCommand :: Command ThmCommand :: Command TransCommand :: Command TypeOpCommand :: Command VarCommand :: Command VarTermCommand :: Command VarTypeCommand :: Command VersionCommand :: Command DefineTypeOpLegacyCommand :: Command regularCommands :: [(Command, String)] type Version = Number supportedCommand :: Version -> Command -> Bool versionCommand :: Version -> Command -> Maybe Command data State State :: [Object] -> Map Number Object -> Set Thm -> State [stack] :: State -> [Object] [dict] :: State -> Map Number Object [theorems] :: State -> Set Thm pushState :: Objective a => a -> State -> State push2State :: (Objective a, Objective b) => a -> b -> State -> State push5State :: (Objective a, Objective b, Objective c, Objective d, Objective e) => a -> b -> c -> d -> e -> State -> State popState :: Objective a => State -> Maybe (a, State) pop2State :: (Objective a, Objective b) => State -> Maybe (a, b, State) pop3State :: (Objective a, Objective b, Objective c) => State -> Maybe (a, b, c, State) pop5State :: (Objective a, Objective b, Objective c, Objective d, Objective e) => State -> Maybe (a, b, c, d, e, State) peekState :: Objective a => State -> Maybe a defState :: Number -> Object -> State -> State refState :: Number -> State -> Maybe Object removeState :: Number -> State -> Maybe (Object, State) thmState :: Thm -> State -> State initialState :: State executeCommand :: Theory -> Interpret -> State -> Command -> Maybe State type LineNumber = Integer readArticle :: Theory -> Interpret -> FilePath -> IO (Set Thm) instance GHC.Show.Show HOL.OpenTheory.Article.Number instance GHC.Classes.Ord HOL.OpenTheory.Article.Number instance GHC.Classes.Eq HOL.OpenTheory.Article.Number instance GHC.Show.Show HOL.OpenTheory.Article.Object instance GHC.Classes.Ord HOL.OpenTheory.Article.Object instance GHC.Classes.Eq HOL.OpenTheory.Article.Object instance GHC.Show.Show HOL.OpenTheory.Article.Command instance GHC.Classes.Ord HOL.OpenTheory.Article.Command instance GHC.Classes.Eq HOL.OpenTheory.Article.Command instance GHC.Show.Show HOL.OpenTheory.Article.State instance GHC.Classes.Ord HOL.OpenTheory.Article.State instance GHC.Classes.Eq HOL.OpenTheory.Article.State instance HOL.Print.Printable HOL.OpenTheory.Article.State instance HOL.Parse.Parsable HOL.OpenTheory.Article.Command instance HOL.Print.Printable HOL.OpenTheory.Article.Command instance HOL.OpenTheory.Article.Objective HOL.OpenTheory.Article.Object instance HOL.OpenTheory.Article.Objective HOL.OpenTheory.Article.Number instance HOL.OpenTheory.Article.Objective HOL.Name.Name instance HOL.OpenTheory.Article.Objective a => HOL.OpenTheory.Article.Objective [a] instance HOL.OpenTheory.Article.Objective HOL.Data.TypeOp instance HOL.OpenTheory.Article.Objective HOL.Data.Type instance HOL.OpenTheory.Article.Objective HOL.Data.Const instance HOL.OpenTheory.Article.Objective HOL.Data.Var instance HOL.OpenTheory.Article.Objective HOL.Data.Term instance HOL.OpenTheory.Article.Objective HOL.Thm.Thm instance (HOL.OpenTheory.Article.Objective a, HOL.OpenTheory.Article.Objective b) => HOL.OpenTheory.Article.Objective (a, b) instance HOL.Print.Printable HOL.OpenTheory.Article.Object instance HOL.Print.Printable HOL.OpenTheory.Article.Number instance HOL.Parse.Parsable HOL.OpenTheory.Article.Number module HOL.OpenTheory.Package newtype Name Name :: String -> Name [destName] :: Name -> String newtype Version Version :: String -> Version [destVersion] :: Version -> String data NameVersion NameVersion :: Name -> Version -> NameVersion [name] :: NameVersion -> Name [version] :: NameVersion -> Version data KeyValue KeyValue :: Name -> String -> KeyValue printKeyValue :: Printable a => Name -> a -> KeyValue matchKeyValue :: Name -> KeyValue -> Maybe String parseKeyValue :: Parsable a => Name -> KeyValue -> Maybe a newtype Info Info :: [KeyValue] -> Info [destInfo] :: Info -> [KeyValue] nullInfo :: Info -> Bool appendInfo :: Info -> Info -> Info concatInfo :: [Info] -> Info firstInfo :: (KeyValue -> Maybe a) -> Info -> Maybe (a, Info) firstGetInfo :: [Info -> Maybe (a, Info)] -> Info -> Maybe (a, Info) mapGetInfo :: (a -> b) -> (Info -> Maybe (a, Info)) -> Info -> Maybe (b, Info) maybeGetInfo :: (Info -> Maybe (a, Info)) -> Info -> (Maybe a, Info) listGetInfo :: (Info -> Maybe (a, Info)) -> Info -> ([a], Info) class Informative a toInfo :: Informative a => a -> Info getInfo :: Informative a => Info -> Maybe (a, Info) fromInfo :: Informative a => Info -> Maybe a newtype File File :: FilePath -> File [destFile] :: File -> FilePath data Interpretation Interpret :: Rename -> Interpretation Interpretation :: File -> Interpretation readInterpretation :: FilePath -> [Interpretation] -> IO Interpret data Operation Article :: File -> Operation Include :: NameVersion -> Maybe String -> Operation [package] :: Operation -> NameVersion [checksum] :: Operation -> Maybe String Union :: Operation data Block Block :: Name -> [Name] -> [Interpretation] -> Operation -> Block [block] :: Block -> Name [imports] :: Block -> [Name] [interpret] :: Block -> [Interpretation] [operation] :: Block -> Operation mkBlock :: Name -> Info -> Maybe Block destBlock :: Block -> (Name, Info) data Package Package :: Info -> [Block] -> Package [information] :: Package -> Info [source] :: Package -> [Block] requires :: Package -> [Name] packageFile :: FilePath -> Name -> FilePath opentheory :: [String] -> IO String opentheoryDirectory :: String -> IO FilePath directory :: Name -> IO FilePath directoryVersion :: NameVersion -> IO FilePath newtype Blocks Blocks :: [Block] -> Blocks [destBlocks] :: Blocks -> [Block] mkBlocks :: [Block] -> Blocks readVersion :: Theory -> Interpret -> NameVersion -> IO Theory readPackageFile :: Theory -> Interpret -> FilePath -> IO Theory readPackage :: Theory -> Interpret -> FilePath -> Package -> IO Theory readBlocks :: Theory -> Interpret -> FilePath -> Blocks -> IO Theory readBlock :: Theory -> Interpret -> FilePath -> [Theory] -> Block -> IO Theory newtype Requires Requires :: Map Name ([Name], FilePath, Blocks) -> Requires emptyRequires :: Requires addRequires :: Requires -> Name -> IO Requires fromListRequires :: [Name] -> IO Requires readList :: [Name] -> IO [Theory] instance GHC.Show.Show HOL.OpenTheory.Package.Name instance GHC.Classes.Ord HOL.OpenTheory.Package.Name instance GHC.Classes.Eq HOL.OpenTheory.Package.Name instance GHC.Show.Show HOL.OpenTheory.Package.Version instance GHC.Classes.Ord HOL.OpenTheory.Package.Version instance GHC.Classes.Eq HOL.OpenTheory.Package.Version instance GHC.Show.Show HOL.OpenTheory.Package.NameVersion instance GHC.Classes.Ord HOL.OpenTheory.Package.NameVersion instance GHC.Classes.Eq HOL.OpenTheory.Package.NameVersion instance GHC.Show.Show HOL.OpenTheory.Package.KeyValue instance GHC.Classes.Ord HOL.OpenTheory.Package.KeyValue instance GHC.Classes.Eq HOL.OpenTheory.Package.KeyValue instance GHC.Show.Show HOL.OpenTheory.Package.Info instance GHC.Classes.Ord HOL.OpenTheory.Package.Info instance GHC.Classes.Eq HOL.OpenTheory.Package.Info instance GHC.Show.Show HOL.OpenTheory.Package.File instance GHC.Classes.Ord HOL.OpenTheory.Package.File instance GHC.Classes.Eq HOL.OpenTheory.Package.File instance GHC.Show.Show HOL.OpenTheory.Package.Interpretation instance GHC.Classes.Ord HOL.OpenTheory.Package.Interpretation instance GHC.Classes.Eq HOL.OpenTheory.Package.Interpretation instance GHC.Show.Show HOL.OpenTheory.Package.Operation instance GHC.Classes.Ord HOL.OpenTheory.Package.Operation instance GHC.Classes.Eq HOL.OpenTheory.Package.Operation instance GHC.Show.Show HOL.OpenTheory.Package.Block instance GHC.Classes.Ord HOL.OpenTheory.Package.Block instance GHC.Classes.Eq HOL.OpenTheory.Package.Block instance GHC.Show.Show HOL.OpenTheory.Package.Package instance GHC.Classes.Ord HOL.OpenTheory.Package.Package instance GHC.Classes.Eq HOL.OpenTheory.Package.Package instance GHC.Show.Show HOL.OpenTheory.Package.Blocks instance GHC.Classes.Ord HOL.OpenTheory.Package.Blocks instance GHC.Classes.Eq HOL.OpenTheory.Package.Blocks instance HOL.Print.Printable HOL.OpenTheory.Package.Package instance HOL.Parse.Parsable HOL.OpenTheory.Package.Package instance HOL.Print.Printable HOL.OpenTheory.Package.Block instance HOL.Parse.Parsable HOL.OpenTheory.Package.Block instance HOL.OpenTheory.Package.Informative HOL.OpenTheory.Package.Operation instance HOL.OpenTheory.Package.Informative HOL.OpenTheory.Package.Interpretation instance HOL.Print.Printable HOL.OpenTheory.Package.File instance HOL.Parse.Parsable HOL.OpenTheory.Package.File instance HOL.OpenTheory.Package.Informative a => HOL.OpenTheory.Package.Informative [a] instance (HOL.OpenTheory.Package.Informative a, HOL.OpenTheory.Package.Informative b) => HOL.OpenTheory.Package.Informative (a, b) instance HOL.Print.Printable HOL.OpenTheory.Package.Info instance HOL.Parse.Parsable HOL.OpenTheory.Package.Info instance HOL.Print.Printable HOL.OpenTheory.Package.KeyValue instance HOL.Parse.Parsable HOL.OpenTheory.Package.KeyValue instance HOL.Print.Printable HOL.OpenTheory.Package.NameVersion instance HOL.Parse.Parsable HOL.OpenTheory.Package.NameVersion instance HOL.Print.Printable HOL.OpenTheory.Package.Version instance HOL.Parse.Parsable HOL.OpenTheory.Package.Version instance HOL.Print.Printable HOL.OpenTheory.Package.Name instance HOL.Parse.Parsable HOL.OpenTheory.Package.Name module HOL.OpenTheory readArticle :: Theory -> Interpret -> FilePath -> IO (Set Thm) readPackages :: [Name] -> IO [Theory]