% This is pdfTeX, Version 3.14159265-2.6-1.40.18 (MiKTeX 2.9.6350)
% LaTeX2e <2017-04-15>

% Package: amsbsy 1999/11/29 v1.2d Bold Symbols
% Package: amsfonts 2013/01/14 v3.01 Basic AMSFonts support
% Package: amsmath 2017/09/02 v2.17a AMS math features
% Package: amsopn 2016/03/08 v2.02 operator names
% Package: amstext 2000/06/29 v2.01 AMS text
% Package: amsthm 2017/10/31 v2.20.4
% Package: bm 2017/01/16 v1.2c Bold Symbol Support (DPC/FMi)
% Package: cleveref 2018/03/27 v0.21.4 Intelligent cross-referencing
% Package: enumitem 2011/09/28 v3.5.2 Customized lists
% Package: expl3 2018-06-01 L3 programming layer (code)
% Package: expl3 2018-06-01 L3 programming layer (loader)
% Package: graphics 2017/06/25 v1.2c Standard LaTeX Graphics (DPC,SPQR)
% Package: graphicx 2017/06/01 v1.1a Enhanced LaTeX Graphics (DPC,SPQR)
% Package: hyperref 2018/02/06 v6.86b Hypertext links for LaTeX
% Package: ifpdf 2017/03/15 v3.2 Provides the ifpdf switch
% Package: ifthen 2014/09/29 v1.1c Standard LaTeX ifthen package (DPC)
% Package: keyval 2014/10/28 v1.15 key=value parser (DPC)
% Package: mathtools 2018/01/08 v1.21 mathematical typesetting tools
% Package: nameref 2016/05/21 v2.44 Cross-referencing by name of section
% Package: pgf 2015/08/07 v3.0.1a (rcs-revision 1.15)
% Package: scalerel 2016/12/29 v1.8 Routines for constrained scaling and stretchi
% Package: showlabels 2015/12/08 v1.7
% Package: stix2 2018/04/02 v2.0.0-latex STIX Two fonts support package
% Package: thmtools 2014/04/21 v66
% Package: tikz 2015/08/07 v3.0.1a (rcs-revision 1.151)
% Package: tikz-cd 2014/10/30 v0.9e Commutative diagrams with tikzx

% Package: xparse 2018-05-12 L3 Experimental document command parser
% Package: xstring 2013/10/13  v1.7c  String manipulations (C Tellechea)
% Package: xy 2013/10/06 Xy-pic version 3.8.9
% Version 2
% 1.  Define \into
% 2.  Define m-chart at a point and subchart at a point
% 3.  Change definition of M-atlas morphism
% 3.  Change definition of Ck-atlas morphism

\documentclass{article}
\usepackage{amsmath}
%\usepackage{amssymb}
\usepackage{amsthm}
\usepackage{bm}
\usepackage{enumitem}
\usepackage{ifthen}
%\usepackage{mathrsfs}
\usepackage{mathtools}
\usepackage{scalerel}
\usepackage{stix2}[notext,not1] %reqires XeTeX or luaTeX
\usepackage{thmtools}
\usepackage{tikz-cd}
\usepackage{xparse} % loads expl3
%See interface3.pdf
\usepackage{xstring}

\usepackage[cmtip,all,barr]{xy}
%Remove when xybarr.tex bug fixed
\newdir_{ (}{{ }*!/-.5em/@_{(}}

%Morphisms of category
\newcommand \Ar {\mathrm{Ar}}

\DeclareMathOperator \arin {\stackrel{\Ar}{\in}}

%Category of atlases from E to C
%\DeclareMathOperator \Atl {\mathscr{A\!t\!l}}
\newcommand \Atl [1] []
   { \ifthenelse {\equal{#1}{}}
     {\mathscr{A\!t\!l}}
     {\mathscr{A\!t\!l}^{\mathrm{#1}}}
   }

\DeclareMathOperator \Atlas {\mathrm{Atlas}}

\newcommand \Bun {\mathrm{Bun}}

\newcommand \BunProd {\mathrm{Bun}-\mathrm{prod}}

\newcommand \C {\mathrm{C}}

% Select font for standard categories
\newcommand \Cat [1] {\mathbf{#1}}

% Select font for categories and sequences of categories
\newcommand \catname [1] {\mathscr{#1}}
\newcommand \catseqname [1] {\bm{\mathscr{#1}}}
% Can't use \bm without stix and XeTeX

\newcommand \Ck {\mathrm{C^k}}

\newcommand \Classic {\mathrm{Classic}}

\DeclareMathOperator \codomain {\mathrm{codomain}}

% Extended composition operators for function sequences
\newcommand {\compose} [1] [def]
   { \ifthenelse {\equal{#1}{def}}
       {\mathbin \circ}
       {\mathbin{\overset{#1} {\circ}}}
   }

% Compose head
\newcommand {\composeh} [1] [def]
   { \ifthenelse {\equal{#1}{def}}
       {\mathbin \odot}
       {\mathbin{\overset{#1} {\odot}}}
   }

% Compose tail
\newcommand {\composet} [1] [def]
   { \ifthenelse {\equal{#1}{def}}
       {\mathbin \cdot}
       {\mathbin{\overset{#1} {\cdot}}}
   }

\DeclareMathOperator \defeq {\stackrel{\mathrm{def}}{=}}

\DeclareMathOperator \domain {\mathrm{domain}}

\DeclareMathOperator \Domain {\seqname{domain}}

\newcommand \false {\mathrm{False}}

\newcommand \Fib   {\mathrm{Fib}}

\newcommand \full [2] [] {\underset{\mathrm {{#1}full}}{#2}}

\newcommand \fullcref [1]
   { \ifthenelse {\equal{\nameref{#1}}{}}
       {\cref{#1}}
       {\cref{#1} (\nameref{#1})}
   }

% Select font for functions and sequences of functions
% \newcommand \funcname [1] {\mathit{#1}}
% \newcommand \funcseqname [1] {\bm{#1}}

\DeclareMathOperator \Functor {\mathop{\mathscr{F}}}

\DeclareMathOperator \head {\mathrm{head}}

\DeclareMathOperator \Hom {\mathrm{Hom}}

\DeclareMathOperator \Id {\mathrm{Id}}

\DeclareMathOperator \ID {\mathbf{Id}}

\newcommand \into {\negthickspace\mon}

%Propositional function isCk_{f,A}(x,y,...)
\DeclareMathOperator \isCk {\mathrm{isCk}}

%Propositional function isAtl(A,E,C)
\newcommand \isAtl [1] []
   { \ifthenelse {\equal{#1}{}}
     {\mathrm{isAtl}}
     {\mathrm{isAtl}^{\mathrm{#1}}}
   }

%Propositional function isLCS(L, M, A, F, Sigma)
\DeclareMathOperator \isLCS {\mathrm{isLCS}}

\DeclareMathOperator \iso {\stackrel{\sim}{=}}

% Join two tuples
\DeclareMathOperator \join {\mathrm{join}}

%Category of M-Sigma local coordinate spaces
\newcommand \LCS {\mathrm{LCS}}

\DeclareMathOperator \length {\mathrm{length}}

\DeclareMathOperator \lengtho {\mathrm length0}

\newcommand \M {\mathrm{M}}

\newcommand \Man {\mathrm{Man}}

% Adjust : spacing for f maps a to b
\newcommand \maps {\!\colon}

%Set long names upright, short names italic
\newcommand{\mathvarname}[1]{%
  \begingroup\noexpandarg
  \StrLen{#1}[\temp]%
  \ifnum\temp>1
    \mathrm{#1}%
  \else
    #1%
  \fi
  \endgroup
}

\newcommand \maxfull [2] [] {\underset{\mathrm {{#1}max-full}}{#2}}
\newcommand \maximal [2] [] {\underset{\mathrm {{#1}max}}{#2}}

\newcommand \minimal [2] [] {\underset{{#1}\mathrm {min}}{#2}}

%Model category
\newcommand \Mod {\mathrm{Mod}}

%Morphisms between two objects
\newcommand \Mor {\mathrm{Mor}}

% Morphism of category
\DeclareMathOperator \morphin {\stackrel{\Ar}{\in}}

%Object of category
\newcommand \Ob {\mathrm{Ob}}
\DeclareMathOperator \objin {\stackrel{\Ob}{\in}}

\newcommand \onto {\epi}

% All non-null open sets
\newcommand \op [2] [] {\underset{{#1}\mathrm {op}}{#2}}

\newcommand \optriv [2] [] {\underset{{#1}\mathrm {op-triv}}{#2}}

\newcommand \pagecref [1]
   { \ifthenelse {\equal{\nameref{#1}}{}}
       {\cref{#1} on \cpageref{#1}}
       {\cref{#1} (\nameref{#1}) on \cpageref{#1}\!}
   }

\newcommand \Pagecref [1]
   { \ifthenelse {\equal{\nameref{#1}}{}}
       {\Cref{#1} on \cpageref{#1}}
       {\Cref{#1} (\nameref{#1}) on \cpageref{#1}}
   }

\DeclareMathOperator \range {\mathrm{range}}

\DeclareMathOperator \Range {\seqname{range}}

\newcommand \restrictto {\!\restriction}

\DeclareMathOperator \seqeq {\stackrel{()}{=}}

\DeclareMathOperator \seqin {\stackrel{()}{\in}}

%Font for sequence
%\newcommand \seqname [1] {\bm{\mathit{\mathsf{#1}}}}

\newcommand \Set {\mathbf{Set}}
%
%\newcommand \sing [2] [] {\underset{{#1}\mathrm{Sing}{#2}}
%\newcommand \Sing [2] [] {\underset{\bm{{#1}\mathrm{Sing}}{#2}}

\newcommand \singcat [2] [] {\underset{{#1}\mathscr{S\!i\!n\!g}}{#2}}
\newcommand \Singcat [2] [] {\underset{{#1}\mathscr{S\!i\!n\!g}}{#2}}
% Can't use \bm without stix and XeTeX

\newcommand \strict [2] [] {\underset{\mathrm {{#1}strict}}{#2}}

\newcommand \subcat [1] [] {\overset{\mathrm{{#1}cat}}{\subseteq}}
\newcommand \SUBCAT [1] [] {\overset{\mathbf{{#1}cat}}{\subseteq}}

\newcommand \submod [1] [] {\overset{\mathrm{{#1}mod}}{\subseteq}}

\DeclareMathOperator \SUBSETEQ {\stackrel{()}{\subseteq}}

\DeclareMathOperator \tail {\mathrm{tail}}

\newcommand \toiso {\,\to/{>}->>/^{\iso}}

\newcommand \Top {\mathrm{Top}}
\newcommand \Topcat {\mathscr{T\!o\!p}}

% Font for topology
\newcommand \topname [1] {\mathfrak{#1}}

\newcommand \Topology {\mathfrak{Top}}

\newcommand \triv [2] [] {\underset{{#1}\mathrm {triv}}{#2}}
\newcommand \Triv [2] [] {\underset{{#1}\mathbf {triv}}{#2}}

\newcommand \trivcat [2] [] {\underset{{#1}\mathscr{T\!r\!i\!v}}{#2}}
\newcommand \Trivcat [2] [] {\underset{{#1}\bm{\mathscr{T\!r\!i\!v}}}{#2}}
% Can't use \bm without stix and XeTeX

\newcommand \true {\mathrm{True}}
% Can't use long name because \mathscr doesn't support lower case.
\newcommand \truthcat {\mathscr{T}}
\newcommand \truthset {\mathbb{T}}
\newcommand \truthspace {\mathrm{Truthspace}}
\newcommand \truthtop {\mathfrak{Truthtop}}

\newcommand \unioncat [1] [] {\overset{\mathrm{{#1}cat}}{\cup}}
\newcommand \UNIONCAT [1] [] {\overset{\mathbf{{#1}cat}}{\cup}}

% Existential and universal quamtifiers
% Set former
% Union and intersection

% --------------------------------------------------------------------
% | From here to closing --- belongs in package                      |
% |                                                                  |

% Copyright 2016 Shmuel (Seymour J.) Metz
% I grant permission to the AMS, arXiv.org, the LATEX3 project and the
% TeX users group to incorporate these commands in any LaTeX package
% that may be freely redistributed, provided that they attribute the
% source.

% These commands are intended to allow semantic markup for some
% common mathermtical constructs:
%   \equant{variables}{proposition}     Existential qunatifier
%   \uquant{variables}{proposition}     Universal   quantifier
%   \union[indices]{set}                Union
%   \intersection[indices]{set}         Intersection
%   \set {elements}[propositions]       Set of
%   \set{elements}[propositions]*       Set of, split
%   \setupquant{optionstring}           Style of \equant, \uquant
%   \setupset{optionstring}             Style of \set, \union, \intersection
%   \seqname{name}                      Render sequence/set/tuple name

% Because LaTeX has problems with parameters containg \\, the \set command
% has code to split the line between the elements and the proposition if
% the invocation is \set* and the environment is multline.

% Surround individual indices in \intersection, individual variables in
% quantifiers, individual propositions in \set and individual indices in
% \union with braces, e.g., \equant {{x \in X},{y \in Y}}{P(x,y)},
% \set{x}[{P(x)}, {Q(x)}], \union[{i \in I},{j \in J}]{O(i.j)}.

% Setup keywords for \equant, \uquant
% subscript  =none            Default
%                             \exists var1 ... \exists varn prop
%             stacked         \exists_\substack{var1 \\ ... varn} prop
%             multiple        \exists_{var1,...,varn} prop
% parentheses=none            Default
%             single          (\exists var1 ... \exists varn) prop
%             multiple        (\exists var1) ... (\exists varn) prop
% separator=                  Default {}

% Setup keywords for \intersection, \set, \union
% subscript  =none            \bigcap ix1, ..., ixn set
%             stacked         Default
%                             \bigcap__\substack{ix1 \\ ... ixn} set
%             multiple        \bigcap_{ix1,...,ixn} set
% separator=                  Default {\mid}
%                             {elements separator prop1 ^ ... propn}

\ExplSyntaxOn

\int_gzero_new:N \g_style_quant_parens_int
\int_gzero_new:N \g_style_quant_subscr_int
\int_gzero_new:N \g_style_set_subscr_int

\NewDocumentCommand{\equant}{mm}
  {
    \quant:nnn {\exists} {#1} {#2}
  }

\NewDocumentCommand{\uquant}{mm}
  {
    \quant:nnn {\forall} {#1} {#2}
  }

\NewDocumentCommand \setupquant {m}
  {
    \keys_set:nn {shmuel / quant} {#1}
  }

\keys_define:nn {shmuel / quant}
 {
  subscript            .choices:nn =
    {
      {
        none,
        stacked,
        multiple
      }
      {
        \int_gset:Nn \g_style_quant_subscr_int {\l_keys_choice_int-1}
      }
    },
  subscript            .default:n = multiple,
  subscript            .initial:n = none,
  parentheses          .choices:nn =
    {
      {
        none,
        single,
        multiple
      }
      {
        \int_gset:Nn \g_style_quant_parens_int {\l_keys_choice_int - 1}
      }
    },
  parentheses          .default:n = multiple,
  parentheses          .initial:n = none,
  separater            .tl_set:N = \g_style_quant_sep_tl,
  separater            .default:n = {.},
  separater            .initial:n = {}
 }

\cs_new:Npn \quant:nnn #1 #2 #3
  {
    %\int_show:N \g_style_quant_parens_int
    %\int_show:N \g_style_quant_subscr_int
    % g_style_quant_parens_int \ \int_use:N \g_style_quant_parens_int \
    % g_style_quant_subscr_int \ \int_use:N \g_style_quant_subscr_int \
    \clist_set:Nn \l_tmpa_clist {#2}
    \int_case:nn
      {\g_style_quant_subscr_int}
      {
        {0}
        {
          % No subscript
          % Set separater to ) ( quantifier or just quantifier
          \int_compare:nTF {\g_style_quant_parens_int = 2}
            {\tl_set:Nn \l_tmpa_tl {\right ) \left ( #1}}
            {\tl_set:Nn \l_tmpa_tl {#1}}
          \int_compare:nT {\g_style_quant_parens_int > 0} {\left (}
          #1
          \clist_use:Nn \l_tmpa_clist {\l_tmpa_tl}
          \int_compare:nT {\g_style_quant_parens_int > 0} {\right )}
          \g_style_quant_sep_tl #3
        }
        {1}
        {
          % Stacked subscript on single quantifier
          \fp_set:Nn
            \l_tmpa_fp
            {ceil{\clist_count:N{\l_tmpa_clist} - 1} * .1 + 1}
          \int_compare:nT {\g_style_quant_parens_int > 0} {\left (}
          \scaleobj{\fp_to_decimal:N \l_tmpa_fp}{#1} \sb
             { \substack { \clist_use:Nn \l_tmpa_clist { \\ } } }
          \int_compare:nT {\g_style_quant_parens_int > 0} {\right )}
          #3
        }
        {2}
        {
          % Subscripts on separate quantifiers
          \clist_map_inline:Nn
            \l_tmpa_clist
            {
              % (quantifier \sb predicate) or quantifier \sb predicate
              {
                \int_compare:nT
                  {\g_style_quant_parens_int > 0}
                  {\left (}
                \scaleobj{1.2}{#1} \sb
                {##1}
                \int_compare:nT
                  {\g_style_quant_parens_int > 0}
                  {\right )}
              }
            }
          #3
        }
      }
  }

\NewDocumentCommand{\set}{mos}
  {
    \IfBooleanTF {#3}
    {
%      \msg_term:n {set with star}
%      \msg_term:n{{P1 #1}}
%      \msg_term:n{{P2 #2}}
      \bool_set_true:N \l_tmpa_bool
%      \bool_show:N \l_tmpa_bool
    }
    {
      \bool_set_false:N \l_tmpa_bool
    }
    \set_of:nnn {#1} {#2} {\l_tmpa_bool}
  }

%\tl_new:N \g_style_set_sep_tl
%\tl_gset:Nn \g_style_set_sep_tl {\mid}

\NewDocumentCommand \setupset {m}
  {
    \keys_set:nn {shmuel / set} {#1}
  }

\keys_define:nn {shmuel / set}
  {
    separater .tl_set:N = \g_style_set_sep_tl,
    subscript            .choices:nn =
      {
        {
          stacked,
          multiple
        }
        {
          \int_gset:Nn \g_style_set_subscr_int {\l_keys_choice_int-1}
        }
      },
    separater .initial:n = {\mid},
    subscript .initial:n = stacked
  }

\cs_new:Npn \set_of:nnn #1 #2 #3
  {
    \IfValueTF {#2}
    {
%      \msg_term:n {set_of:nn \ has \ predicates \ #2}
    }
    {
%      \msg_term:n {set_of:nn \ has \ no \ predicates}
    }
    \clist_set:Nn \l_tmpa_clist {#2}
%    \msg_term:n {l_tmpa_clist \ set}
    \tl_gset:Nn \g_tmpa_tl {\clist_use:Nn \l_tmpa_clist {\land}}
%    \msg_term:n {g_tmpa_tl \ set \ to \ \g_tmpa_tl}
    \IfValueTF {#2}
    {
      \bool_if:nTF {#3}
      {
        \scalerel*{\{}{#1\g_tmpa_tl}
        #1
%        \msg_term:n  {scalerel returns \scalerel{\g_style_set_sep_tl}{\g_tmpa_tl}}
        \clist_set:Nn \l_tmpa_clist {#2}
        \scalerel*{\mathbin{\g_style_set_sep_tl}}{#1\g_tmpa_tl}
        \\
        \clist_set:Nn \l_tmpa_clist {#2}
        \g_tmpa_tl
%         \tl_show:N \g_tmpa_tl
        \clist_set:Nn \l_tmpa_clist {#2}
        \scalerel*{\}}{#1\g_tmpa_tl}
      }
      {
        \left \{
        #1
        \clist_set:Nn \l_tmpa_clist {#2}
        \scalerel*{\mathbin{\g_style_set_sep_tl}}{#1\g_tmpa_tl}
        \g_tmpa_tl
        \right \}
      }
    }
    {
      \left \{ #1 \right \}
    }
  }

\NewDocumentCommand{\funcname}{m}
  {
    \funcname:n {#1}
  }

\cs_new:Npn \funcname:n #1
  {
    %code here \tl_count:n
    \int_compare:nTF {\tl_count:n{#1} > 1}
      {
        {\mathrm{#1}}
      }
      {
        {\mathit{#1}}
      }
  }

\NewDocumentCommand{\funcseqname}{m}
  {
    \funcseqname:n {#1}
  }

\cs_new:Npn \funcseqname:n #1
  {
    %code here \tl_count:n
    \int_compare:nTF {\tl_count:n{#1} > 1}
      {
        {\bm{\mathrm{#1}}}
      }
      {
        {\bm {\mathit{#1}}}
      }
  }

\NewDocumentCommand{\seqname}{m}
  {
    \seqname:n {#1}
  }

\cs_new:Npn \seqname:n #1
  {
    %code here \tl_count:n
    \int_compare:nTF {\tl_count:n{#1} > 1}
      {
        {\mathbf{#1}}
      }
      {
        {\mathbfit{#1}}
      }
  }

\NewDocumentCommand{\intersection}{om}
  {
    \unint_of:nnn \bigcap {#1} {#2}
  }

\NewDocumentCommand{\union}{om}
  {
    \unint_of:nnn \bigcup {#1} {#2}
  }

\cs_new:Npn \unint_of:nnn #1 #2 #3
  {
    \IfValueTF {#2}
    {
%      \int_show:N \g_style_set_subscr_int
      \clist_set:Nn \l_tmpa_clist {#2}
      \int_case:nn
        {\g_style_set_subscr_int}
        {
          {0}
          {
            % Stacked subscript
%            \msg_term:n {\clist_count:N{\l_tmpa_clist} \ tokens \ stacked}
%            \clist_show:N \l_tmpa_clist
            \fp_set:Nn
              \l_tmpa_fp
              {ceil{\clist_count:N{\l_tmpa_clist} - 1} * .1 + 1}
            \scaleobj{\fp_to_decimal:N \l_tmpa_fp}{#1} \sb
            {\substack { \clist_use:Nn \l_tmpa_clist { \\ } }}
            #3
          }
          {1}
          {
            % Subscripts comma separated
%            \msg_term:n {\clist_count:N{\l_tmpa_clist} \ tokens \ comma \ separated}
%            \clist_show:N \l_tmpa_clist
            #1 \sb
            {\clist_use:Nn \l_tmpa_clist {,}}
            #3
          }
        }
    }
    {
      % No subscript
%      \msg_term:n {No~subscript}
%      \clist_show:N \l_tmpa_clist
      #1 #3
    }
  }

\ExplSyntaxOff

% |                                                                  |
% | From opening to here --- belongs in package                      |
% --------------------------------------------------------------------


\newtheorem{theorem}{Theorem}[section]
\newtheorem{lemma}[theorem]{Lemma}
\def\lemmaautorefname{Lemma}          % Needed for \autoref
\newtheorem{corollary}[theorem]{Corollary}
\def\corollaryautorefname{Corollary}  % Needed for \autoref

\theoremstyle{definition}
\newtheorem{definition}[theorem]{Definition}
\def\definitionutorefname{Definition} % Needed for \autoref
\newtheorem{example}[theorem]{Example}
\newtheorem{xca}[theorem]{Exercise}

\theoremstyle{remark}
\newtheorem{remark}[theorem]{Remark}

\numberwithin{equation}{section}

\newcommand \Alpha   A
\newcommand \Beta    B
\newcommand \Epsilon E
\newcommand \Zeta    Z
\newcommand \Eta     H
\newcommand \Iota    I
\newcommand \Kappa   K
\newcommand \Mu      M
\newcommand \Nu      N
\newcommand \Omicron O
\newcommand \Rho     P
\newcommand \Tau     T
\newcommand \Chi     S

\usepackage[colorlinks,hidelinks,draft=false]{hyperref}

\usepackage{cleveref}
\def\corollaryautorefname{Corollary}  % Needed for \autoref
\def\definitionutorefname{Definition} % Needed for \autoref
\def\lemmaautorefname{Lemma}          % Needed for \autoref
\hypersetup {
   bookmarksnumbered=true,
   colorlinks,
   pdfinfo={
      Author={Shmuel (Seymour J.) Metz},
      Keywords={fiber bundles,manifolds},
      Subject={Topology},
      Title={Local Coordinate Spaces: a proposed unification of manifolds with fiber bundles, and associated machinery}
   }
}
\def\corollaryautorefname{Corollary}  % Needed for \autoref
\def\definitionutorefname{Definition} % Needed for \autoref
\def\lemmaautorefname{Lemma}          % Needed for \autoref
% \usepackage[final]{showlabels}
\usepackage[draft]{showlabels}
\showlabels{cite}
\showlabels{cref}
\showlabels{crefrange}

%\DeclareMathAlphabet{\mathbdit}{T1}{\itdefault}{\mddefault}{\sldefault}
%\SetMathAlphabet{\mathbdit}{bold}{T1}{\itdefault}{\bfdefault}{\sldefault}
%
%\DeclareMathAlphabet{\mathsfbd}{T1}{\sfdefault}{\mddefault}{\sldefault}
%\SetMathAlphabet{\mathsfbd}{bold}{T1}{\sfdefault}{\bfdefault}{\sldefault}
%
%\DeclareMathAlphabet{\mathsfit}{T1}{\sfdefault}{}{\sldefault}
%\SetMathAlphabet{\mathsfit}{normal}{T1}{\sfdefault}{}{\sldefault}
%
%\DeclareMathAlphabet{\mathsfbdit}{T1}{\sfdefault}{\mddefault}{\sldefault}
%\SetMathAlphabet{\mathsfbdit}{bold}{T1}{\sfdefault}{\bfdefault}{\sldefault}

\begin{document}
\hyphenation{near pres-en-ta-tion}

\title%
{%
   Local Coordinate Spaces:
  a proposed unification of manifolds and fiber bundles,
  and associated machinery\thanks%
  {
  I wish to gratefully thank Walter Hoffman (z"l),
  Milton Parnes, Dr. Stanley H. Levy, the Mathematics department of
  Wayne State University, the Mathematics department of the State
  University of New York at Buffalo and others who guided my education.
  }
}
\author{Shmuel (Seymour J.) Metz
}
\maketitle

% \address{4963 Oriskany Drive\\Annandale, VA  22003-5141}
% \email{smetz3@gmu.edu}
% \urladdr{http://mason.gmu.edu/~smetz3}

% \subjclass[2010]{Primary 18F15; Secondary 55R65,57N99,58A05}
% 18F15  Abstract manifolds and fiber bundles
% 32Qxx  Complex manifolds
% 53-    Differential geometry
% 53Axx  Classical differential geometry
% 53A99  None of the above, but in this section
% 55Rxx  Fiber spaces and bundles
% 55R10  Fiber bundles
% 55R65  Generalizations of fiber spaces and bundles
% 57Nxx  Topological manifolds
% 57N99  None of the above, but in this section
% 57Rxx  Differential topology
% 58Axx  General theory of differentiable manifolds
% 58A05  Differentiable manifolds, foundations
% 58Bxx  Infinite-dimensional manifolds

% Primary 18F15  Abstract manifolds and fiber bundles
% Secondary 55R65,57N99,58A05
% \keywords{fiber bundles,manifolds}

\begin{abstract}
This paper presents a unified view of manifolds and fiber bundles,
which, while superficially different, have strong parallels. It
introduces the notions of an m-atlas and of a local coordinate space,
and shows that special cases are equivalent to fiber bundles and
manifolds. Along the way it defines some convenient notation, defines
categories of atlases, and constructs potentially useful functors.
\end{abstract}

\setupquant {parentheses=multiple,subscript=stacked}
\setupset   {}

\tikzset{
    rot90/.style={anchor=south, rotate=90, inner sep=.2mm}
}

\part {Introduction}
\label{part;intro}

Historically, the concept of pseudo-groups allowed unifying manifolds
and manifolds with boundary. The definitions of fiber bundles and
manifolds have strong parallels, and can be unified in a similar fashion;
there are several ways to do so. The central part of this paper,
\pagecref{part;lcs}\negmedspace, defines an approach using categories and
commutative diagrams that is designed for easy exposition at the possible
expense of abstractness and generality. In particular, I have chosen to
assume the Axiom of Choice (AOC).

This paper treats atlases as objects of interest in their own right,
although it does not give them primacy. It introduces notions that
are convenient for use here and others that, while not used here, may be
useful for future work. It defines the new notions of
\hyperref[def:model]{model space}\negmedspace
\footnote{The phrase has been used before, but with a different
meaning.},
\hyperref[def:m-atlas]{m-atlas}
and of \hyperref[def:M-ATLmorph]{m-atlas morphism}.
Informally, a model space is a topological space with a category
specifying a family of open sets and functions satisfying specified
conditions.

Although this paper incidentally defines partial equivalents to
manifolds and fiber bundles using model spaces and model atlases, it
proposes the more general
\hyperref[def:LCS]{Local Coordinate Space (LCS)} in order to explicitly
reflect the role of the group in fiber bundles.

A local coordinate space (LCS) is a space (total space) with some
additional structure, including a coordinate model space and an atlas
whose transition functions are restricted to morphisms of the coordinate
model space; one can impose, e.g., differentiability restrictions, by
appropriate choice of the coordinate category. There is an equivalent
paradigm that avoids explicit mention of the total space by imposing
compatibility conditions on the transition functions, but that approach
is beyond the scope of this paper.

This paper defines functors among categories of atlases, categories of
model spaces, categories of local coordinate spaces, categories of
manifolds and categories of fiber bundles; it constructs more machinery
than is customary in order to facilitate the presentation of those
categories and functors.

\Crefrange{part;conv}{part;pre} present nomenclature and give basic
results.
\Cref{part;m-charts} defines m-atlases, m-atlas morphisms and categories
of them; \cref{lem:ATLiscat} proves that the defined categories are
indeed categories.
\Cref{part;lcs} defines local coordinate spaces and
categories of them; \pagecref{the:LCSiscat} proves that the defined
categories are indeed categories.

\Pagecref{Examples} gives some examples of structures that can be
represented as local coordinate spaces; \pagecref{part;man} and
\pagecref{part;bun} present two of the examples in detail, showing the
equivalence of manifolds and fiber bundles with special cases of local
coordinate spaces by explicitly exhibiting functors to and from local
coordinate spaces.
\begin{remark}
The unconventional definitions of manifold and fiber bundle are intended
to make their relationship to local coordinate spaces more natural.
\end{remark}

Most of the lemmata, theorems and corollaries in this paper should be
substantially identical to results that are familiar to the reader. What
is novel is the perspective and the material directly related to local
coordinate spaces. The presentation assumes only a basic knowledge of
Category Theory, such as may be found in the first chapter of
\cite{CftWM} or
{
  \showlabelsinline
  \cite{JoyCat}.
}

\section{New concepts and notation}
\label{sec:new}
This paper introduces a significant number of new concepts and some
modifications of the definitions for some conventional concepts. It also
introduces some notation of lesser importance.  The following are the
most important.

\begin{enumerate}
\item \hyperref[def:NCD]{Nearly commutative diagram (NCD)}, NCD at a point,
locally NCD and special cases with related nomenclature
\item \hyperref[def:model]{Model space} and related concepts
\item \hyperref[def:ModTop]{Model topology} and
\hyperref[def:M-para]{M-paracompactness}
\item \hyperref[sec:sig]{Signature},
\hyperref[def:Sigmacomm]{$\Sigma$-commutation} and related concepts
\item
\hyperref[def:LCS]{Local Coordinate Space (LCS)} and related concepts
\item
\hyperref[def:lin]{Linear space and related concepts}
\item
\hyperref[def:trivck]{Trivial $\Ck$ linear model space} and related
concepts
\item \hyperref[def:BunAtl]{$G$-$\rho$ bundle atlas}
\footnote{Similar to coordinate bundles}
and related concepts
\end{enumerate}

\part {Conventions}
\label{part;conv}
An arrow with an Equal-Tilde ($A \toiso_\phi B$) represents an
isomorphism. One with a hook ($A \underset{i}{\hookrightarrow} B$)
represents an inclusion map. One with a tail ($A \into_i B$) represents
a monomorphism. One with a double head ($A \onto_\pi B$) represents a
surjection.

When a superscript ends in $-1$, e.g., $\funcname{f}^{i-1}$, it is to be
taken as function inverse rather than subtraction of 1.

All diagrams shown are commutative; none are exact.

A definition of a base term several more restrictive terms may
specify the modifiers in parenthese in the base definition and then
give the restrictions for each modifier, e.g., if
"$\funcseqname{f}$ is a (semi-strict, strict) prestructure morphism
of $\seqname{P}^1$ to $\seqname{P}^2$ iff" is followed by the
definition of prestructure morphism, then the restrictions for
strict and semi-strict prestructure morphisms.

When a definition defines a base propositional function and variant
propositional functions with a qualifier given as a superscript,
then the form $\mathrm{base}^{(qualifiers)}$ will refer to
either $\mathrm{base}^{\mathrm{qualifer}}$
or $\mathrm{base}$, e.g.,
$\strict[semi-]{\isAtl[(classic,near)]_\Ar}$ refers to either
$\strict[semi-]{\isAtl[classic]_\Ar}$,
$\strict[semi-]{\isAtl[near]_\Ar}$
or $\strict[semi-]{\isAtl_\Ar}$.

Alternatively, a definition may specify a numbered list of alternatives,
and subsequently specify additional numbered lists with items
corresponding to those in the first list, e.g.,
$\funcseqname{f}$ is also a
\begin{enumerate}
\item full
\item semi-maximal
\item maximal
\item full semi-maximal
\item full maximal
\end{enumerate}
$E^1$-$E^2$ $\Ck$ near morphism of
$\seqname{A}^1$ to $\seqname{A}^2$ in the coordinate spaces $C^1$,
$C^2$, abbreviated as
\begin{enumerate}
\item abbreviation for full
\item abbreviation for semi-maximal
\item abbreviation for maximal
\item abbreviation for full semi-maximal
\item abbreviation for full maximal
\end{enumerate}
iff
\begin{enumerate}
\item definition for full
\item definition for semi-maximal
\item definition for maximal
\item definition for full semi-maximal
\item definition for full maximal
\end{enumerate}

A Corollary, Lemma or Theorem that applies to related terms defined
with the above convention will specify the modifiers in parentheses
to indicate that it applies to the base term and to the more
restrictive terms, e.g., "a (semi-strict, strict)
$\seqname{E}^i$-$\seqname{E}^{i+1}$ m-atlas morphism" If it applies
only to more restrictive terms them it will specify the first
relevant modifier followed by the remaining relevant modifiers in
parentheses, e.g., "If $\catname{S}^i \SUBCAT[full-]
\catname{S}'^i$ and $\funcseqname{f}^i$ is a semi-strict (strict)
prestructure morphism".

Blackboard bold upper case will denote specific sets, e.g., the
Naturals.

Bold lower case italic letters will refer to sets, sequences and tuples
of functions, e.g.,
$\funcseqname{f} \defeq (\funcname{f}_1, \funcname{f}_2)$.

Bold lower case Latin letters will refer to sequence valued functions of
sequences and tuple valued functions of tuples, e.g., $\Range$ yields
the sequence of ranges of a sequence of functions.

Bold upper case italic letters will refer to sequences or tuples, e.g.,
$\seqname{A}=(x,y,z)$, to sets of them, to sets of topological spaces or
to sets of open sets.

Bold upper case script letters will refer to
sequences of categories, e.g.,
$\catseqname{A} \defeq (\catname{A}_\alpha, \alpha \in \Alpha)$.

Fraktur will refer to topologies and to topology-valued functions, e.g.,
$\Topology$.

Functions have a range, domain and relation, not just a relation. Unless
otherwise stated, they are assumed to be continuous.

Groups are assumed to be topological groups. The ambiguous notation
$x^{-1}$ will be used when it is obvious from context what the group
operation $\star$ and the group identity $\mathbf{1}_G$ are.

Lower case Greek letters other than $\pi$, $\rho$, $\sigma$, $\phi$ and
$\psi$ will refer to ordinals, possibly transfinite, and to formal
labels.  A letter with a Greek superscript and a letter with a Latin or
numeric superscript always refer to distinct variables.

Lower case $\pi$ will refer to a projection operator

Lower case $\rho$ will refer to a continuous effective group action,
i.e., a continuous representation of a group in a homeomorphism group.

Lower case $\sigma$ will refer to a sequence of ordinals, referred to as
a signature.

Lower case $\phi$ will refer to a coordinate function.

Lower case italic and Latin letters will refer to
\begin{enumerate}
\item elements of a set or sequence
\item functions
\item morphisms of a category
\item natural numbers
\item objects of a category
\item ordinal numbers
\end{enumerate}

Upper case Greek letters other than $\Sigma$ may refer to
\begin{enumerate}
\item ordinal used as the limit of a sequence of consecutive ordinals,
e.g., $x_\alpha, \alpha \preceq \Alpha$
\item ordinal used as the order type of a sequence of consecutive
ordinals, e.g., $x_\alpha, \alpha \prec \Alpha$
\end{enumerate}

Upper case $\Sigma$ will refer to a sequence of signatures

Upper case Latin letters will refer to
\begin{enumerate}
\item Natural numbers
\item Topological spaces
\item Open sets
\item Elements of a sequence or tuple of functions, e.g.,
$\funcname{f}_E$ might be $\funcname{f}_0 \maps E_1 \to E_2$.
\end{enumerate}

Upper case Script Latin letters will refer to categories and functors.

Upright Latin letters will be used for long names.

The term $\Ck$ includes $\mathrm{C}^\infty$ (smooth) and
$\mathrm{C}^\omega$ (analytic).

This paper uses the term morphism in preference to arrow, but uses
the conventional $\Ar$.

The term sequence without an explicit reference to $\mathbb{N}$
will refer to a general ordinal sequence, possibly transfinite.

Sequence numbering, unlike tuple numbering, starts at 0 and the
exposition assumes a von Neumann definition of ordinals, so that
$\alpha \in \beta \equiv \alpha \prec \beta$.

Except where explicitly stated otherwise, all categories mentioned are
small categories with underlying sets, but the morphisms will often not
be set functions between the objects and there will not always be a
forgetful function to $\Set$ or $\Cat{Top}$. By abuse of language no
distinction will be made between a category $\catname{A}$ of topological
spaces and the concrete category $(\catname{A},\catname{U})$ over
$\Cat{Top}$.  Similarly, no distinction will be made among the object $U
\in \Ob(\catname{A})$, the topological space $\catname{U}(U)$ and the
underlying set.

The notation $G^V$ will refer only to the set of continuous functions
from $V$ to $G$, never to the set of all functions from $V$ to $G$.

When defining a category, the Ordered pair $(\seqname{O}, \seqname{M})$
refers to the smallest concrete category over $\Set$ or $\Cat{Top}$
whose objects are the elements in $\seqname{O}$, whose morphisms include
all of the elements of $\seqname{M}$ and whose morphisms from
$o^1 \in \seqname{O}$ to $o^2 \in \seqname{O}$ are functions
$\funcname{f} \maps o^1 \to o^2$ and whose composition is function
composition.

When defining a category, the Ordered triple
$(\seqname{O}, \seqname{M}, C)$ refers to the small category whose
objects are in $\seqname{O}$, whose morphisms are in $\seqname{M}$,
whose $\Hom$ is

\begin{equation}
\Hom_{(\seqname{O}, \seqname{M}, C)}
  (o_1 \in \seqname{O}, o_2 \in \seqname{O})
\defeq
\set
  {
    (
      \funcseqname{f},
      o_1,
      o_2
    )
    \in \seqname{M}
  }
\end{equation}
and whose composition is C.

By abuse of language I may write
``$\catname{S}$'' for $\Ob(\catname{S})$,
``$A \in \catname{A}$'' for  $A \in\ \Ob(\catname{A})$,
``$A \subset \catname{A}$'' for $A \subset \Ob(\catname{A})$,
``$A \in \catname{A} \subset B \in \catname{B}$'' for
``the underlying set of $A$ is contained in the underlying set of $B$
and the inclusion $\funcname{i} \maps x \in A \hookrightarrow x \in B$
is a morphism'' and
``$\funcname{f} \maps A \to B$'' for
$\funcname{f} \in \Hom_{\catname{C}}(A,B)$, where $\catname{C}$ is
understood by context.

By abuse of language I shall use the same nomenclature for sequences and
tuples, and will use parentheses around a single expression both for
grouping and for a tuple with a single element; the intent should be
clear from context.

By abuse of language I will omit parenthese around the operands of
Functors when they can be assumed by context.

By abuse of language I shall use the $\times$ and $\bigtimes$ symbols
for both Cartesian products of sets and Cartesian products of
functions on those sets.

By abuse of language, and assuming AOC,  I shall refer to some sets as
ordinal sequences, e.g., ``$(C_\alpha, \alpha \in \Alpha)$'' for
``$\{C_\alpha \mid \alpha \in \Alpha\}$'', in cases where the order is
irrelevant.

By abuse of language, I may omit universal quantifiers in cases where
the intent is clear.

In some cases I define a notion similar to a conventional notion and
also need to refer to the conventional notion. In those cases I prefix
a letter or phrase to the term, e.g., m-paracompact versus paracompact.

\part {General notions}
\label{part;notions}
This section describes nomenclature used throughout the paper. In
some cases this reflects new nomenclature or notions, in others it
simply makes a choice from among the various conventions in the
literature.

\begin{definition}[Operations on categories]
\label{def:catprop}
If $\catname{C}$ is a category then $x \objin \catname{C}$ iff $x$ is an
object of $\catname{C}$ and $y \arin \catname{C}$ iff $y$ is a morphism
of $\catname{C}$.

If $\catname{S}$ and $\catname{T}$ are categories then
$\catname{S} \subcat \catname{T}$ iff $S$ is a subcategory of
$\catname{T}$ and $\catname{S} \subcat[full-] \catname{T}$ iff $S$ is a
full subcategory of $\catname{T}$.

If $\catname{S}$ and $\catname{T}$ are categories then the category
union of $\catname{S}$ and $\catname{T}$, abbreviated
$\catname{S} \unioncat \catname{T}$, is the category whose objects are
in $\catname{S}$ or in $\catname{T}$ and whose morphisms are in
$\catname{S}$ or in $\catname{T}$.
\end{definition}

\begin{definition}[Identity]
$\Id_S$ is the identity function on the space $S$,

$\Id_o$ is the
identity morphism for the object $o$\footnote{
The object is often expressed as a tuple, e.g.,
$\Id_{(\seqname{A}, \seqname{B})}$ is the identity morphism for the
object $(\seqname{A}, \seqname{B})$
},

$\Id_{U,V}$, for $U \subseteq V$, is the inclusion map\footnote{
$U$ and $V$ need not have the same topology.
}.

$\Id_\catname{C}$ is the identity functor on the category $\catname{C}$.

$\ID_{\seqname{S}^i}$, $i=1,2$, is the sequence of identity functions
for the elements of the sequence
$\seqname{S}^i \defeq (\seqname{S}^1_\alpha,\ \alpha \prec \Alpha)$. Let
$\seqname{S}^1 \SUBSETEQ \seqname{S}^2$. Then
$\ID_{\seqname{S}^1,\seqname{S}^2}$ is the sequence of inclusion maps
$(\Id_{\seqname{S}^1_\alpha,\seqname{S}^2_\alpha}),\ \alpha \prec \Alpha$
for the elements of the sequences $\seqname{S}^i$.

The subscript may be omitted
when it is clear from context.
\end{definition}

\begin{definition}[Images]
$\funcname{f} [U] \defeq \set { {\funcname{f}(x)} }[x \in U]$ is the
image of $U$ under $\funcname{f}$ and
$\funcname{f}^{-1} [V] \defeq \set {x}[\funcname{f}(x) \in V]$ is the
inverse image of $V$ under $\funcname{f}$.

\begin{remark}
  This notation, adopted from \cite{GenTop}, avoids the ambiguity in
  the traditional $\funcname{f}(U)$ and $\funcname{f}^{-1}(V)$.
\end{remark}
\end{definition}

\begin{definition}[Projections]
\label{projections}
$\pi_\alpha$ is the projection function that maps a sequence into
element $\alpha$ of the sequence.  $\pi_i$ is also the projection
function that maps a tuple into element $i$ of the tuple.
\end{definition}

\begin{definition}[Topological category]
\label{def:topcat}
A topological category is a small subcategory of $\Cat{Top}$ or its
concrete category over $\Set$.

$\catname{T}$ is a full topological category iff it is a topological
category and whenever $U^i,V^i \objin \catname{T}$, $i=1,2$,
$V^i \subseteq U^i$,
$\funcname{f} \maps U^1 \to U^2 \arin \catname{T}$ and
$\funcname{f}[V^1] \subseteq V^2$ then \\
$\funcname{f} \maps V^1 \to V^2 \arin \catname{T}$.
\end{definition}

\begin{lemma}[Inclusions in topological categories are morphisms]
\label{lem:topInc}
Let $\catname{T}$ be a full topological category,
$S^i \objin \catname{T}$, $i=1,2$, and $S^1 \subseteq S^2$. Then
$\Id_{S^1,S^2}$ is a morphism of $\catname{T}$

\begin{proof}
$\Id_{S^2} \arin \catname{T}$, $S^1 \subseteq S^2$ by hypothesis and
$S^1 \subseteq S^2$, so $\Id_{S^1,S^2} \arin \catname{T}$ by
\cref{def:topcat}.
\end{proof}
\end{lemma}

\begin{definition}[Local morphisms]
\label{def:topLocal}
Let $\catname{S}^i$, $i=1,2$, be a full topological category and
$S^i \objin \catname{S}^i$, A continuous function
$\funcname{f} \maps S^1 \to S^2$ is locally a
$\catname{S}^1$-$\catname{S}^2$ morphism of $S^1$ to $S^2$ iff
$\catname{S}^1 \subcat[full-] \catname{S}^2$ and for every
$u \in S^1$ there is an open neighborhood $U_u$ for $u$ and an open
neighborhood $V_u$ for $v \defeq \funcname{f}(u)$ such that
$\funcname{f}[U_u] \subseteq V_u$ and $\funcname{f} \maps U_u \to V_u$
is a morphism of $\catname{S}^2$.

\begin{remark}
The condition $\funcname{f} \maps U_u \to V_u \arin \catname{S}^2$
ensures that $U_u \objin \catname{S}^1$ and $V_u \objin \catname{S}^2$
\end{remark}

Let $\catname{T}$ be a full topological category and
$S^i \objin \catname{T}$, $i=1,2$. A continuous function
$\funcname{f} \maps S^1 \to S^2$ is locally a $\catname{T}$ morphism of
$S^1$ to $S^2$ iff it is locally a $\catname{T}$-$\catname{T}$ morphism
of $S^1$ to $S^2$.
\end{definition}

\begin{lemma}[Local morphisms]
\label{lem:topLocal}
Let $\catname{T}^i$, $i \in [1,3]$, be a full topological category,
$S^i \objin \catname{T}^i$ and
$\catname{T}^i \subcat[full-] \catname{T}^{i+1}$.

If $\funcname{f}^i \maps S^i \to S^{i+1} \arin \catname{T}^{i+1}$ then
$\funcname{f}^i$ is locally a $\catname{T}^i$-$\catname{T}^{i+1}$
morphism of $S^i$ to $S^{i+1}$.

\begin{proof}
Let $u \in S^i$ and $v \defeq \funcname{f}^i(u) \in S^{i+1}$. $S^i$ is
an open for $u$, $S^{i+1}$ is an open neighborhood for $v$ and
$\funcname{f}^i \maps S^i \to S^{i+1} \arin \catname{T}^{i+1}$ by
hypothesis.
\end{proof}

If each $\funcname{f}^i \maps S^i \to S^{i+1}$, is locally a
$\catname{T}^i$-$\catname{T}^{i+1}$ morphism of $S^i$ to
$S^{i+1}$ then
$\funcname{f}^2 \compose \funcname{f}^1 \maps S^1 \to S^3$ is locally a
$\catname{T}^1$-$\catname{T}^3$ morphism of $S^1$ to $S^3$.

\begin{proof}
Since $\catname{T}^1 \subcat[full-] \catname{T}^2$ and
$\catname{T}^2 \subcat[full-] \catname{T}^3$,
$\catname{T}^1 \subcat[full-] \catname{T}^3$.
Let $u \in S^1$, $v \defeq \funcname{f}^1(u)$ and
$w \defeq \funcname{f}^2(v)$. There exist an open neighborhood $U_u$
for $u$, open neighborhoods $V_u$, $V'_v$ for $v$ and an open
neighborhood $W_v$ of $w$ such that
$\funcname{f}^1[U_u] \subseteq V_u$,
$\funcname{f}^1 \maps U_u \to V_u$ is a morphism of $\catname{T}^2$,
$\funcname{f}^2[V'_v] \subseteq W_v$ and
$\funcname{f}^2 \maps V'_v \to W_v$ is a morphism of $\catname{T}^3$.
Then $\hat{V_u} \defeq V_u \cap V'_v \neq \emptyset$, $\hat{V_u}$ is an
open neighborhood of $v$ and
$\hat{U_u} \defeq \funcname{f}^{i-1}_1[\hat{V_u}]$ is an open
neighborhood for $u$.  $\funcname{f}^1 \maps \hat{U_u} \to \hat{V_u}$
and $\funcname{f}^2 \maps \hat{V_u} \to W_v$ are morphisms of
$\catname{T}^3$ by \pagecref{def:topcat} and thus
$\funcname{f}^2 \compose \funcname{f}^1 \maps \hat{U_u} \to W_v$ is a
morphism of $\catname{T}^3$.
\end{proof}
\end{lemma}

\begin{corollary}[Local morphisms]
\label{cor:topLocal}
Let $\catname{T}^i$, $i=1,2$, be a full topological category,
$\catname{T}^i \subcat[full-] \catname{T}^{i+1}$,
$S^i \objin \catname{T}^i$ and $S^1 \subseteq S^2$. Then $\Id_{S^1,S^2}$
is locally a $\catname{T}^1$-$\catname{T}^2$ morphism of $S^1$ to $S^2$
and $\Id_{S^i}$ is locally a $\catname{T}$ morphism
of $S^i$ to $S^i$.

\begin{proof}
$S^1 \objin \catname{T}^2$ because $S^1 \objin \catname{T}^1$ and
$\catname{T}^1 \subcat \catname{T}^2$,
$S^2 \objin \catname{T}^2$ by hypothesis and
$S^1 \subseteq S^2$ by hypothesis, so
$\Id_{S^1,S^2} \arin \catname{T}^2$ by \cref{lem:topInc}.

$\Id_{S^i} \defeq \Id_{S^i,S^i}$.
\end{proof}
\end{corollary}

\begin{definition}[Sequence functions]
Let $\seqname{S} \defeq (s_\alpha, \alpha \prec \Alpha)$ be a sequence
of functions. Then
\begin{equation}
\Domain(\seqname{S}) \defeq \bigl ( \domain(s_\alpha), \alpha \prec \Alpha \bigr )
\end{equation}
\begin{equation}
\Range(\seqname{S}) \defeq \bigl ( \range(s_\alpha), \alpha \prec \Alpha \bigr )
\end{equation}

Let $\seqname{T} \defeq (t_\alpha, \alpha \prec \Alpha)$ be a sequence
of functions with $\Range(\seqname{S}) = \Domain(\seqname{T})$. Then
their composition is the sequence
$
  \seqname{T} \compose[()] \seqname{S} \defeq
  (t_\alpha \compose s_\alpha, \alpha \prec \Alpha)
$,

Let $\seqname{S} \defeq (s_\gamma, \gamma \preceq \Gamma)$, then these
functions extract information about the sequence:
\begin{equation}
\head(\seqname{S},\Omega) \defeq (s_\gamma, \gamma \prec \Omega)
\end{equation}
\begin{equation}
\head(\seqname{S}) \defeq \head(\seqname{S},\Gamma)
\end{equation}
\begin{equation}
\lengtho(\seqname{S}) \defeq \Gamma
\end{equation}
\begin{equation}
\tail(\seqname{S}) \defeq S_\Gamma
\end{equation}

Let $\seqname{S} \defeq (s_\gamma, \gamma \prec \Gamma)$, then
\begin{equation}
\length(\seqname{S}) \defeq \Gamma
\end{equation}

\begin{remark}
If $\lengtho(\seqname{S})$ is defined then
$\length(\seqname{S}) = \lengtho(\seqname{S}) + 1$.
$\lengtho(\seqname{S})$ is the ordinal type of
$\head(\seqname{S})$, not the ordinal type of $\seqname{S}$.
\end{remark}

Let $\catseqname{S} \defeq (\catname{S}_\alpha, \alpha \prec \Alpha)$
and $\catseqname{T} \defeq (\catname{T}_\alpha, \alpha \prec \Alpha)$ be
sequences of categories.  Then $\catseqname{S}$ is a subcategory
sequence of $\catseqname{T}$, abbreviated
$\catseqname{S} \SUBCAT \catseqname{T}$, iff every category in
$\catseqname{S}$ is a subcategory of the corresponding category in
$\catseqname{T}$, i.e.,
$
  \uquant%
    {\alpha \prec \Alpha}
    {\catname{S}_\alpha \subcat \catname{T}_\alpha}
$,
and $\catseqname{S}$ is a full subcategory sequence of $\catseqname{T}$,
abbreviated $\catseqname{S} \SUBCAT[full-] \catseqname{T}$, iff every
category in $\catseqname{S}$ is a full subcategory of the corresponding
category in $\catseqname{T}$, i.e.,
$
  \uquant%
    {\alpha \prec \Alpha}
    {\catname{S}_\alpha \subcat[full-] \catname{T}_\alpha}
$.

The category sequence union of $\catseqname{S}$ and $\catseqname{T}$,
abbreviated $\catseqname{S} \UNIONCAT \catseqname{T}$, is the sequence
of category unions of corresponding categories in $\catseqname{S}$ and
$\catseqname{T}$, i.e.,
$(\catseqname{S}_\alpha \unioncat \catseqname{T}_\alpha)$.

\end{definition}

\begin{lemma}[Sequence functions]
\label{lem:seqfunc}
Let $\funcseqname{f}^i \defeq (\funcname{f}^i_\alpha, \alpha \prec \Alpha)$,
$i \in [1,3]$, be sequences of functions with
$\Domain(\funcseqname{f}^2) = \Range(\funcseqname{f}^1)$ and
$\Domain(\funcseqname{f}^3) = \Range(\funcseqname{f}^2)$. Then
$
(\funcseqname{f}^3 \compose[()] \funcseqname{f}^2) \compose[()] \funcseqname{f}^1 =
\funcseqname{f}^3 \compose[()] (\funcseqname{f}^2 \compose[()] \funcseqname{f}^1)
$.
\begin{proof}
\begin{equation*}
\begin{split}
  (\funcseqname{f}^3 \compose[()] \funcseqname{f}^2) \compose[()] \funcseqname{f}^1
  & =
  \bigl ( (\funcname{f}^3_\alpha \compose \funcname{f}^2_\alpha) \compose \funcname{f}^1_\alpha, \alpha \prec A \bigr )
\\*
  & =
  \bigl ( \funcname{f}^3_\alpha \compose (\funcname{f}^2_\alpha \compose \funcname{f}^1_\alpha), \alpha \prec A \bigr )
\\*
  & =
  \funcseqname{f}^3 \compose[()] (\funcseqname{f}^2 \compose[()] \funcseqname{f}^1)
\end{split}
\end{equation*}
\end{proof}

Let $\funcseqname{f} \defeq (\funcname{f}_\alpha, \alpha \prec \Alpha)$
be a sequence of functions, $\seqname{D} = \Domain(\funcseqname{f})$ and
$\seqname{R} = \Range(\funcseqname{f})$. Then $ID_\seqname{R}$ is a left
$\compose[()]$ identity for $\funcseqname{f}$ and $ID_\seqname{D}$ is a
right $\compose[()]$ identity for $\funcseqname{f}$.

\begin{proof}
\begin{equation*}
\begin{split}
  \ID_\seqname{R} \compose[()] \funcseqname{f}
  & =
  (\Id_{\range(\funcname{f}_\alpha)} \compose \funcname{f}_\alpha, \alpha \prec \Alpha)
\\*
  & =
  (\funcname{f}_\alpha, \alpha \prec \Alpha)
\\*
  & =
  \funcseqname{f}
\end{split}
\end{equation*}
\begin{equation*}
\begin{split}
  \funcseqname{f} \compose[()] \ID_\seqname{D}
  & =
  (\funcname{f}_\alpha \compose \Id_{\domain(\funcname{f}_\alpha)}, \alpha \prec \Alpha)
\\*
  & =
  (\funcname{f}_\alpha, \alpha \prec \Alpha)
\\*
  & =
  \funcseqname{f}
\end{split}
\end{equation*}
\end{proof}
\end{lemma}

\begin{definition}[Tuple functions]
Let $\seqname{S} \defeq (s_n, n \in [1,N])$ be a tuple of functions. Then
\begin{equation}
\Domain(\seqname{S}) \defeq \bigl ( \domain(s_n), n \in [1,N] \bigr )
\end{equation}
\begin{equation}
\Range(\seqname{S}) \defeq \bigl ( \range(s_n), n \in [1,N] \bigr )
\end{equation}

Let $\seqname{T} \defeq (t_n, n \in [1,N])$ be a tuple of functions with
$\Range(\seqname{S})=\Domain(\seqname{T})$,
Then their composition is the tuple
$
  \seqname{T} \compose[()] \seqname{S} \defeq
  (t_n \compose s_n, n \in [1,N])
$

Let $\seqname{S} \defeq (s_m, m \in [1,M])$ and
$\seqname{T} \defeq (t_n, n \in [1,N])$ be tuples.
Then the following are tuple functioms
\begin{equation}
\head(S,I) \defeq (s_m, m \in [1,I])
\end{equation}
\begin{equation}
\head(S) \defeq \head(S,M-1)
\end{equation}
\begin{equation}
\tail(T,I) \defeq (t_n, n \in [I,N])
\end{equation}
\begin{equation}
\tail(T) \defeq t_N
\end{equation}
\begin{equation}
\join(S,T) \defeq (s_1, \dots, s_M, t_1, \dots, t_N)
\end{equation}
\end{definition}

\begin{lemma}[Tuple functions]
\label{lem:tupfunc}
Let $\funcseqname{f}^i \defeq (\funcname{f}^i_n, n \in [1,N])$,
$i \in [1,3]$, be tuples of functions with
$\Domain(\funcseqname{f}^2) = \Range(\funcseqname{f}^1)$ and
$\Domain(\funcseqname{f}^3) = \Range(\funcseqname{f}^2)$. Then
$
(\funcseqname{f}^3 \compose[()] \funcseqname{f}^2) \compose[()] \funcseqname{f}^1 =
\funcseqname{f}^3 \compose[()] (\funcseqname{f}^2 \compose[()] \funcseqname{f}^1)
$.

\begin{proof}
\begin{equation*}
\begin{split}
  (\funcseqname{f}^3 \compose[()] \funcseqname{f}^2) \compose[()] \funcseqname{f}^1
  & =
  \bigl ( (\funcname{f}^3_n \compose \funcname{f}^2_n) \compose \funcname{f}^1_n, n \in [1,N] \bigr )
\\*
  & =
  \bigl ( \funcname{f}^3_n \compose (\funcname{f}^2_n \compose \funcname{f}^1_n), n \in [1,N] \bigr )
\\*
  & =
  \funcseqname{f}^3 \compose[()] (\funcseqname{f}^2 \compose[()] \funcseqname{f}^1)
\end{split}
\end{equation*}
\end{proof}

Let $\funcseqname{f} \defeq (\funcname{f}_\alpha, \alpha \prec \Alpha)$
be a sequence of functions,
$\seqname{D} \defeq \Domain(\funcseqname{f})$ and \\*
$\seqname{R} \defeq \Range(\funcseqname{f})$. Then $\ID_\seqname{R}$ is a
left $\compose[()]$ identity for $\funcseqname{f}$ and $\ID_\seqname{D}$
is a right $\compose[()]$ identity for $\funcseqname{f}$.

\begin{proof}
\begin{equation*}
\begin{split}
  \ID_\seqname{R} \compose[()] \funcseqname{f}
  & =
  (\Id_{\range(\funcname{f}_\alpha)} \compose \funcname{f}_\alpha, \alpha \prec \Alpha)
\\*
  & =
  (\funcname{f}_\alpha, \alpha \prec \Alpha)
\\*
  & =
  \funcseqname{f}
\end{split}
\end{equation*}
\begin{equation*}
\begin{split}
  \funcseqname{f} \compose[()] \ID_\seqname{D}
  & =
  (\funcname{f}_\alpha \compose \Id_{\domain(\funcname{f}_\alpha)}, \alpha \prec \Alpha)
\\*
  & =
  (\funcname{f}_\alpha, \alpha \prec \Alpha)
\\*
  & =
  \funcseqname{f}
\end{split}
\end{equation*}
\end{proof}
\end{lemma}

\begin{definition}[Tuple composition for labeled morphisms]
\label{def:labcomp}
Let $\seqname{M}^i \defeq (\funcseqname{f}^i, o^i_1, o^i_2)$, $i=1,2$,
be tuples such that each $\funcseqname{f}^i$ is a sequence of functions
or each $\funcseqname{f}^i$ is a tuple of functions,
$\Range(\funcseqname{f}^1) = \Domain(\funcseqname{f}^2)$ and
$0^1_2=o^2_1$. Then

\begin{equation}
\seqname{M}^2 \compose[A] \seqname{M}^1 \defeq
\bigl (
  \funcseqname{f}^2 \compose[()] \funcseqname{f}^1,
  o^1_1,
  o^2_2
\bigr )
\end{equation}
\end{definition}

\begin{lemma}[Tuple composition for labeled morphisms]
\label{lem:labcomp}
Let $\seqname{M}^i \defeq (\funcseqname{f}^i, o^i_1, o^i_2)$,
$i \in [1,3]$,
be a tuple such that $\funcseqname{f}^i$ is a sequence or tuple of
functions,
$\Range(\funcseqname{f}^i) = \Domain(\funcseqname{f}^{i+1})$
and $o^i_2 = o^{i+1}_1$, $i=1,2$.
Then
\begin{equation}
\seqname{M}^3 \compose[A] \bigl ( \seqname{M}^2 \compose[A] \seqname{M}^1 \bigr )
=
\bigl ( \seqname{M}^3 \compose[A] \seqname{M}^2 \bigr ) \compose[A] \seqname{M}^1
\end{equation}

\begin{proof}
From \fullcref{def:labcomp}\negmedspace, \\
{
  \showlabelsinline
  \pagecref{lem:seqfunc}
}
and \fullcref{lem:tupfunc}\negmedspace, we have
\begin{equation*}
\begin{split}
  \seqname{M}^3 \compose[A] (\seqname{M}^2 \compose[A] \seqname{M}^1)
  & =
  \seqname{M}^3 \compose[A] (\funcseqname{f}^2 \compose[()] \funcseqname{f}^1, o^1_1, o^2_2)
\\*
  & =
  (\funcseqname{f}^3 \compose[()] \funcseqname{f}^2 \compose[()] \funcseqname{f}^1, o^1_1, o^3_2)
\\*
  & =
  (\funcseqname{f}^3 \compose[()] \funcseqname{f}^2, o^2_1, o^3_2) \compose[A] \seqname{M}^1
\\*
  & =
  (\seqname{M}^3 \compose[A] \seqname{M}^2) \compose[A] \seqname{M}^1
\end{split}
\end{equation*}
\end{proof}

Let $\seqname{D}^i \defeq \Domain(\funcseqname{f}^i)$ and
$\seqname{R}^i \defeq \Range(\funcseqname{f}^i)$. Then
\begin{equation}
(\ID_{\seqname{R}^i}, o^i_2, o^i_2) \compose[A] \seqname{M}^i =
\seqname{M}^i
\end{equation}
\begin{equation}
\seqname{M}^i \compose[A] (\ID_{\seqname{D}^i}, o^i_1, o^i_1) =
\seqname{M}^i
\end{equation}

\begin{proof}
\begin{equation*}
\begin{split}
  (\ID_{\seqname{R}^i}, o^i_2, o^i_2) \compose[A] \seqname{M}^i
  & =
  (\ID_{\seqname{R}^i} \compose[()] \funcseqname{f}^i, o^i_1, o^i_2)
\\*
  & =
  (\funcseqname{f}^i, o^i_1, o^i_2)
\\*
  & =
 \seqname{M}^i
\end{split}
\end{equation*}
\begin{equation*}
\begin{split}
  \seqname{M}^i \compose[A] (\ID_{\seqname{D}^i}, o^i_1, o^i_1)
  & =
  (\funcseqname{f}^i \compose[()] \ID_{\seqname{D}^i}, o^i_1, o^i_2)
\\*
  & =
  (\funcseqname{f}^i, o^i_1, o^i_2)
\\*
  & =
 \seqname{M}^i
\end{split}
\end{equation*}
\end{proof}
\end{lemma}

\begin{definition}[Cartesian product of sequence]
\label{def:Cart}
Let $\seqname{S}^i \defeq (S^i_\alpha, \alpha \prec \Alpha)$, $i=1,2$,
be a sequence and
$\funcseqname{f} \defeq (\funcname{f}_\alpha \maps S^1_\alpha \to
S^2_\alpha, \alpha \prec \Alpha)$
be a sequence of functions, then
$
  \bigtimes \seqname{S}^i \defeq
  \bigtimes_{\alpha \prec \Alpha} S^i_\alpha
$
is the generalized Cartesian product of the sequence $\seqname{S}^i$ and
$
  \bigtimes \funcseqname{f} \maps \seqname{S}^1 \to \seqname{S}^2
  \defeq
  \bigtimes_{\alpha \prec \Alpha}\funcname{f}_\alpha
$
is the generalized Cartesian product of the function sequence
$\funcseqname{f}$.
\end{definition}

\begin{definition}[underline]
Let $\seqname{S}^1 \defeq (S^1_\alpha, \alpha \preceq \Alpha)$,
$\seqname{S}^2 \defeq (S^2_\alpha, \alpha \preceq \Alpha)$ be
sequences and
$
  \funcseqname{f} \defeq
  (
    \funcname{f}_\alpha \maps S^1_\alpha \to S^2_\alpha,
    \alpha \preceq \Alpha
  )
$
be a sequence of functions, then
\begin{equation}
\underline{\funcname{f}} \maps head(S_1) \to head(S_2) \defeq
\bigtimes \head(\funcseqname{f}) =
\bigtimes_{\alpha \prec \Alpha} \funcname{f}_\alpha
\end{equation}
is the function mapping
$(s_\alpha \in S^1_\alpha, \alpha \prec \Alpha)$
into $(\funcname{f}_\alpha(s_\alpha), \alpha \prec \Alpha)$.
\end{definition}

\begin{definition}[Head and tail compositions]
Let \\
$\funcname{f}^1 \maps (S^1_\alpha, \alpha \prec \Alpha) \to S^1_\Alpha$,
$\funcname{f}^2 \maps (S^2_\alpha, \alpha \prec \Alpha) \to S^2_\Alpha$
and
$
  \funcseqname{g} \defeq
  (
    \funcname{g}_\alpha \maps S^1_\alpha \to S^2_\alpha,
    \alpha \preceq \Alpha
  )
$.
Then (see \cref{fig:fg,fig:gf})

\begin{subequations}
\begin{equation}
\funcname{f}^2 \composeh \funcseqname{g} \defeq
\funcname{f}^2 \compose \underline{\funcseqname{g}}
\end{equation}
\begin{equation}
\funcseqname{g} \composet \funcname{f}^1 \defeq
\tail(\funcseqname{g}) \compose \funcname{f}^1
\end{equation}
\end{subequations}
\end{definition}

\begin{figure}
\[ \bfig
\node s1(0,0)[{\head(S^1)}]
\node s2(0,-1000)[{\head(S^2)}]
\node s2a(1000,-1000)[{S^2_\Alpha}]
\arrow |l|[s1`s2;{\underline{\funcseqname{g}}}]
\arrow |r|[s1`s2a;{\funcseqname{f}^2 \composeh \funcseqname{g}}]
\arrow |b|[s2`s2a;{\funcseqname{f^2}}]
\efig \]
\caption{$\funcname{f}^2 \composeh \funcseqname{g}$}
\label{fig:fg}
\end{figure}

\begin{figure}
\[ \bfig
\node s1(0,0)[{\head(S^1)}]
\node s1a(0,-1000)[{S^1_\Alpha}]
\node s2a(1000,-1000)[{S^2_\Alpha}]
\arrow |l|[s1`s1a;{\funcname{f}^1}]
\arrow |r|[s1`s2a;{\funcseqname{g} \composet \funcseqname{f}^1}]
\arrow |b|[s1a`s2a;{\tail(\funcseqname{g}) = \funcseqname{g}_\Alpha}]
\efig \]
\caption{$\funcseqname{g} \composet \funcname{f}^1$}
\label{fig:gf}
\end{figure}

\begin{definition}[Topology functions]
Let $S$ be a topological space and $Y$ a subset. Then \\
\begin{enumerate}
\item $\Topology(S)$ is the topology of $S$.
\item
$\Topology(Y,S) \defeq \set{U \cap Y}[{U \in \Topology(S)}]$
is the relative topology of $Y$.
\item
$\Top(Y,S) \defeq \bigl ( Y, \Topology(Y,S) \bigr )$ is $Y$ with the
relative topology.
\item
$
  \op{S} \defeq
  \set
    {(U, \Topology(U,S))}%
    [{{ U \in \Topology(S) \setminus \{ \emptyset \} }}]
$
is the set of all non-null open subspaces of $S$.
\end{enumerate}

Let $\seqname{S}$ be a set of topological spaces. Then
$\op{\seqname{S}} \defeq \union [{S \in \seqname{S}}] { {\op{S}}}$ is the set
of open subspaces in $\seqname{S}$.

Let $S$ and $T'$ be spaces, $T \subseteq T'$ be a subspace and
$\funcname{f} \maps S \to T$ a function. Then
$\funcname{f} \maps S \to T' \defeq \Id_{T,T'} \compose \funcname{f}$
is $\funcname{f}$ considered as a function from $S$ to $T'$.

Let $S'$ and $T'$ be spaces, $S \subseteq S'$, $T \subseteq T'$ be
subspaces and $\funcname{f}' \maps S' \to T'$ a function such that
$\funcname{f}'[S] \subseteq T$. Then $\funcname{f}' \maps S \to T$, also
written $\funcname{f}' \restrictto_{S,T}$, is
$\funcname{f}' \restrictto_S$ considered as a function from $S$ to
$T$.

Let $\seqname{S}^i \defeq (S^i_\alpha, \alpha \preceq \Alpha)$, $i-1,2$,
be a sequence of spaces, $\seqname{S}^1 \SUBSETEQ \seqname{S}^2$ and \linebreak
$\funcname{f}^2 \maps \head(\seqname{S}^2) \to \tail(\seqname{S}^2)$ a
function.
$
  \funcname{f}^2 \restrictto_{\head(\seqname{S}^1)} \defeq
  \funcname{f}^2 \restrictto_{\bigtimes \head(\seqname{S}^1)}
$.
If \linebreak
$
  \funcname{f}^2 \restrictto_{\head(\seqname{S}^1)}
    [\bigtimes \head(\seqname{S}^1)]
  \subseteq \tail(\seqname{S}^1)
$
then
$ \funcname{f}^2 \maps \head(\seqname{S}^1) \to \tail(\seqname{S}^1)$,
also written
$
  \funcname{f}^2 \restrictto_%
    {\head(\seqname{S}^1),\tail(\seqname{S}^1)}
$,
is $\funcname{f}^2 \restrictto_{\head(\seqname{S}^1)}$ considered as a
function from $\bigtimes \head(\seqname{S}^1)$ to $\tail(\seqname{S}^1)$.
\end{definition}

\begin{definition}[Truth space]
$\false \defeq \emptyset$, $\true \defeq \set{\emptyset}$,
the truth set is \linebreak
$\truthset \defeq \set{\false, \true}$,
$\truthtop \defeq \set {\emptyset,\truthset}$ and the truth space
$\truthspace \defeq (\truthset, \truthtop)$ is $\truthset$
with the indiscrete topology.
\end{definition}

\begin{definition}[Truth category]
The truth category is
$
   \truthcat \defeq \\
   \bigl (
     \truthspace,
     \set{\truthspace \to \truthspace}
   \bigr )
$.
The truth model space is \\*
$\seqname{Truthspace} \defeq (\truthspace, \truthcat)$.
\end{definition}

\begin{definition}[Constraint functions]
A constraint function is a continuous function with range
$\truthspace$ or a model
function with range $\seqname{Truthspace}$.
\end{definition}

\begin{definition}[Sequence inclusion]
\label{def:seqin}
Let $\seqname{S} \defeq (S_\alpha, \alpha \prec \Alpha)$ and
$\seqname{T} \defeq (T_\alpha, \alpha \prec \Alpha)$ be sequences.
$\seqname{S} \seqin \seqname{T}$ iff
$\uquant{\alpha \prec \Alpha} {S_\alpha \in T_\alpha}$ or
$\uquant{\alpha \prec \Alpha} {S_\alpha \objin T_\alpha}$.
\end{definition}

\begin{lemma}[Sequence inclusion]
\label{lem:seqin}
Let $\seqname{S} \defeq (S_\alpha, \alpha \prec \Alpha)$
be a sequence,
$
  \catseqname{T}^i \defeq \\
  (\catname{T}^i_\alpha, \alpha \prec \Alpha)
$,
$i=1,2$, a sequence of
categories, $\catseqname{T}^1 \SUBCAT \catseqname{T}^2$ and
$\seqname{S} \seqin \catseqname{T}^1$ Then
$\seqname{S} \seqin \catseqname{T}^2$.

\begin{proof}
If
$\uquant{\alpha \prec \Alpha} {S_\alpha \objin \catname{T}^1_\alpha}$
then
$\uquant{\alpha \prec \Alpha} {S_\alpha \objin \catname{T}^2_\alpha}$.
\end{proof}
\end{lemma}

\begin{thebibliography}{9}

\bibitem[Ad\'amek, Herrlich, Strecker, 1990] {JoyCat} Ji\v{r}\'i Ad\'amek,
Horst Herrlich,
George E. Strecker.
\textit{Abstract and Concrete Categories The Joy of Cats},
John Wiley and Sons, Inc., 1990.

\bibitem[Kelley, 1955] {GenTop} John L. Kelley,
\textit{General Topology},
D. Van Nostrand Company (first edition), 1955.

\bibitem[Kobayashi, 1996] {FoundDiffGeo1} Shoshichi Kobayashi,
Katsumi Nomizu,
\textit{Foundations of Differential Geometry, Volume I},
ISBN 0-471-15733-3, John Wiley and Sons, Inc., 1996.

%\bibitem[Lee, 2000] {DiffPhys} Jeffrey Marc lee,
%\textit{Differential Geometry},
%Analysis and Physics, 2000.

\bibitem[Mac Lane, 1998] {CftWM} Saunders Mac Lane,
\textit{Categories for the Working Mathemation, 2nd edition},
ISBN 0-387-98403-8, Springer-Verlag, 1998.

\bibitem[Steenrod, 1999] {TopFib} Norman Steenrod,
\textit{The Topology Of Fibre Bundles}, ISBN 0-691-00548-6,
Prineton University Press (seventh printing), 1999.

\end{thebibliography}

\end{document}
