\documentclass[12pt,titlepage]{article} \usepackage{amsmath} \usepackage{mathrsfs} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{amsthm} \usepackage{mathtools} \usepackage{graphicx} \usepackage{color} \usepackage{ucs} \usepackage[utf8x]{inputenc} \usepackage{xparse} \usepackage{hyperref} %----Macros---------- % % Unresolved issues: % % \righttoleftarrow % \lefttorightarrow % % \color{} with HTML colorspec % \bgcolor % \array with options (without options, it's equivalent to the matrix environment) % Of the standard HTML named colors, white, black, red, green, blue and yellow % are predefined in the color package. Here are the rest. \definecolor{aqua}{rgb}{0, 1.0, 1.0} \definecolor{fuschia}{rgb}{1.0, 0, 1.0} \definecolor{gray}{rgb}{0.502, 0.502, 0.502} \definecolor{lime}{rgb}{0, 1.0, 0} \definecolor{maroon}{rgb}{0.502, 0, 0} \definecolor{navy}{rgb}{0, 0, 0.502} \definecolor{olive}{rgb}{0.502, 0.502, 0} \definecolor{purple}{rgb}{0.502, 0, 0.502} \definecolor{silver}{rgb}{0.753, 0.753, 0.753} \definecolor{teal}{rgb}{0, 0.502, 0.502} % Because of conflicts, \space and \mathop are converted to % \itexspace and \operatorname during preprocessing. % itex: \space{ht}{dp}{wd} % % Height and baseline depth measurements are in units of tenths of an ex while % the width is measured in tenths of an em. \makeatletter \newdimen\itex@wd% \newdimen\itex@dp% \newdimen\itex@thd% \def\itexspace#1#2#3{\itex@wd=#3em% \itex@wd=0.1\itex@wd% \itex@dp=#2ex% \itex@dp=0.1\itex@dp% \itex@thd=#1ex% \itex@thd=0.1\itex@thd% \advance\itex@thd\the\itex@dp% \makebox[\the\itex@wd]{\rule[-\the\itex@dp]{0cm}{\the\itex@thd}}} \makeatother % \tensor and \multiscript \makeatletter \newif\if@sup \newtoks\@sups \def\append@sup#1{\edef\act{\noexpand\@sups={\the\@sups #1}}\act}% \def\reset@sup{\@supfalse\@sups={}}% \def\mk@scripts#1#2{\if #2/ \if@sup ^{\the\@sups}\fi \else% \ifx #1_ \if@sup ^{\the\@sups}\reset@sup \fi {}_{#2}% \else \append@sup#2 \@suptrue \fi% \expandafter\mk@scripts\fi} \def\tensor#1#2{\reset@sup#1\mk@scripts#2_/} \def\multiscripts#1#2#3{\reset@sup{}\mk@scripts#1_/#2% \reset@sup\mk@scripts#3_/} \makeatother % \slash \makeatletter \newbox\slashbox \setbox\slashbox=\hbox{$/$} \def\itex@pslash#1{\setbox\@tempboxa=\hbox{$#1$} \@tempdima=0.5\wd\slashbox \advance\@tempdima 0.5\wd\@tempboxa \copy\slashbox \kern-\@tempdima \box\@tempboxa} \def\slash{\protect\itex@pslash} \makeatother % math-mode versions of \rlap, etc % from Alexander Perlis, "A complement to \smash, \llap, and lap" % http://math.arizona.edu/~aprl/publications/mathclap/ \def\clap#1{\hbox to 0pt{\hss#1\hss}} \def\mathllap{\mathpalette\mathllapinternal} \def\mathrlap{\mathpalette\mathrlapinternal} \def\mathclap{\mathpalette\mathclapinternal} \def\mathllapinternal#1#2{\llap{$\mathsurround=0pt#1{#2}$}} \def\mathrlapinternal#1#2{\rlap{$\mathsurround=0pt#1{#2}$}} \def\mathclapinternal#1#2{\clap{$\mathsurround=0pt#1{#2}$}} % Renames \sqrt as \oldsqrt and redefine root to result in \sqrt[#1]{#2} \let\oldroot\root \def\root#1#2{\oldroot #1 \of{#2}} \renewcommand{\sqrt}[2][]{\oldroot #1 \of{#2}} % Manually declare the txfonts symbolsC font \DeclareSymbolFont{symbolsC}{U}{txsyc}{m}{n} \SetSymbolFont{symbolsC}{bold}{U}{txsyc}{bx}{n} \DeclareFontSubstitution{U}{txsyc}{m}{n} % Manually declare the stmaryrd font \DeclareSymbolFont{stmry}{U}{stmry}{m}{n} \SetSymbolFont{stmry}{bold}{U}{stmry}{b}{n} % Manually declare the MnSymbolE font \DeclareFontFamily{OMX}{MnSymbolE}{} \DeclareSymbolFont{mnomx}{OMX}{MnSymbolE}{m}{n} \SetSymbolFont{mnomx}{bold}{OMX}{MnSymbolE}{b}{n} \DeclareFontShape{OMX}{MnSymbolE}{m}{n}{ <-6> MnSymbolE5 <6-7> MnSymbolE6 <7-8> MnSymbolE7 <8-9> MnSymbolE8 <9-10> MnSymbolE9 <10-12> MnSymbolE10 <12-> MnSymbolE12}{} % Declare specific arrows from txfonts without loading the full package \makeatletter \def\re@DeclareMathSymbol#1#2#3#4{% \let#1=\undefined \DeclareMathSymbol{#1}{#2}{#3}{#4}} \re@DeclareMathSymbol{\neArrow}{\mathrel}{symbolsC}{116} \re@DeclareMathSymbol{\neArr}{\mathrel}{symbolsC}{116} \re@DeclareMathSymbol{\seArrow}{\mathrel}{symbolsC}{117} \re@DeclareMathSymbol{\seArr}{\mathrel}{symbolsC}{117} \re@DeclareMathSymbol{\nwArrow}{\mathrel}{symbolsC}{118} \re@DeclareMathSymbol{\nwArr}{\mathrel}{symbolsC}{118} \re@DeclareMathSymbol{\swArrow}{\mathrel}{symbolsC}{119} \re@DeclareMathSymbol{\swArr}{\mathrel}{symbolsC}{119} \re@DeclareMathSymbol{\nequiv}{\mathrel}{symbolsC}{46} \re@DeclareMathSymbol{\Perp}{\mathrel}{symbolsC}{121} \re@DeclareMathSymbol{\Vbar}{\mathrel}{symbolsC}{121} \re@DeclareMathSymbol{\sslash}{\mathrel}{stmry}{12} \re@DeclareMathSymbol{\bigsqcap}{\mathop}{stmry}{"64} \re@DeclareMathSymbol{\biginterleave}{\mathop}{stmry}{"6} \re@DeclareMathSymbol{\invamp}{\mathrel}{symbolsC}{77} \re@DeclareMathSymbol{\parr}{\mathrel}{symbolsC}{77} \makeatother % \llangle, \rrangle, \lmoustache and \rmoustache from MnSymbolE \makeatletter \def\Decl@Mn@Delim#1#2#3#4{% \if\relax\noexpand#1% \let#1\undefined \fi \DeclareMathDelimiter{#1}{#2}{#3}{#4}{#3}{#4}} \def\Decl@Mn@Open#1#2#3{\Decl@Mn@Delim{#1}{\mathopen}{#2}{#3}} \def\Decl@Mn@Close#1#2#3{\Decl@Mn@Delim{#1}{\mathclose}{#2}{#3}} \Decl@Mn@Open{\llangle}{mnomx}{'164} \Decl@Mn@Close{\rrangle}{mnomx}{'171} \Decl@Mn@Open{\lmoustache}{mnomx}{'245} \Decl@Mn@Close{\rmoustache}{mnomx}{'244} \makeatother % Widecheck \makeatletter \DeclareRobustCommand\widecheck[1]{{\mathpalette\@widecheck{#1}}} \def\@widecheck#1#2{% \setbox\z@\hbox{\m@th$#1#2$}% \setbox\tw@\hbox{\m@th$#1% \widehat{% \vrule\@width\z@\@height\ht\z@ \vrule\@height\z@\@width\wd\z@}$}% \dp\tw@-\ht\z@ \@tempdima\ht\z@ \advance\@tempdima2\ht\tw@ \divide\@tempdima\thr@@ \setbox\tw@\hbox{% \raise\@tempdima\hbox{\scalebox{1}[-1]{\lower\@tempdima\box \tw@}}}% {\ooalign{\box\tw@ \cr \box\z@}}} \makeatother % \mathraisebox{voffset}[height][depth]{something} \makeatletter \NewDocumentCommand\mathraisebox{moom}{% \IfNoValueTF{#2}{\def\@temp##1##2{\raisebox{#1}{$\m@th##1##2$}}}{% \IfNoValueTF{#3}{\def\@temp##1##2{\raisebox{#1}[#2]{$\m@th##1##2$}}% }{\def\@temp##1##2{\raisebox{#1}[#2][#3]{$\m@th##1##2$}}}}% \mathpalette\@temp{#4}} \makeatletter % udots (taken from yhmath) \makeatletter \def\udots{\mathinner{\mkern2mu\raise\p@\hbox{.} \mkern2mu\raise4\p@\hbox{.}\mkern1mu \raise7\p@\vbox{\kern7\p@\hbox{.}}\mkern1mu}} \makeatother %% Fix array \newcommand{\itexarray}[1]{\begin{matrix}#1\end{matrix}} %% \itexnum is a noop \newcommand{\itexnum}[1]{#1} %% Renaming existing commands \newcommand{\underoverset}[3]{\underset{#1}{\overset{#2}{#3}}} \newcommand{\widevec}{\overrightarrow} \newcommand{\darr}{\downarrow} \newcommand{\nearr}{\nearrow} \newcommand{\nwarr}{\nwarrow} \newcommand{\searr}{\searrow} \newcommand{\swarr}{\swarrow} \newcommand{\curvearrowbotright}{\curvearrowright} \newcommand{\uparr}{\uparrow} \newcommand{\downuparrow}{\updownarrow} \newcommand{\duparr}{\updownarrow} \newcommand{\updarr}{\updownarrow} \newcommand{\gt}{>} \newcommand{\lt}{<} \newcommand{\map}{\mapsto} \newcommand{\embedsin}{\hookrightarrow} \newcommand{\Alpha}{A} \newcommand{\Beta}{B} \newcommand{\Zeta}{Z} \newcommand{\Eta}{H} \newcommand{\Iota}{I} \newcommand{\Kappa}{K} \newcommand{\Mu}{M} \newcommand{\Nu}{N} \newcommand{\Rho}{P} \newcommand{\Tau}{T} \newcommand{\Upsi}{\Upsilon} \newcommand{\omicron}{o} \newcommand{\lang}{\langle} \newcommand{\rang}{\rangle} \newcommand{\Union}{\bigcup} \newcommand{\Intersection}{\bigcap} \newcommand{\Oplus}{\bigoplus} \newcommand{\Otimes}{\bigotimes} \newcommand{\Wedge}{\bigwedge} \newcommand{\Vee}{\bigvee} \newcommand{\coproduct}{\coprod} \newcommand{\product}{\prod} \newcommand{\closure}{\overline} \newcommand{\integral}{\int} \newcommand{\doubleintegral}{\iint} \newcommand{\tripleintegral}{\iiint} \newcommand{\quadrupleintegral}{\iiiint} \newcommand{\conint}{\oint} \newcommand{\contourintegral}{\oint} \newcommand{\infinity}{\infty} \newcommand{\bottom}{\bot} \newcommand{\minusb}{\boxminus} \newcommand{\plusb}{\boxplus} \newcommand{\timesb}{\boxtimes} \newcommand{\intersection}{\cap} \newcommand{\union}{\cup} \newcommand{\Del}{\nabla} \newcommand{\odash}{\circleddash} \newcommand{\negspace}{\!} \newcommand{\widebar}{\overline} \newcommand{\textsize}{\normalsize} \renewcommand{\scriptsize}{\scriptstyle} \newcommand{\scriptscriptsize}{\scriptscriptstyle} \newcommand{\mathfr}{\mathfrak} \newcommand{\statusline}[2]{#2} \newcommand{\tooltip}[2]{#2} \newcommand{\toggle}[2]{#2} % Theorem Environments \theoremstyle{plain} \newtheorem{theorem}{Theorem} \newtheorem{lemma}{Lemma} \newtheorem{prop}{Proposition} \newtheorem{cor}{Corollary} \newtheorem*{utheorem}{Theorem} \newtheorem*{ulemma}{Lemma} \newtheorem*{uprop}{Proposition} \newtheorem*{ucor}{Corollary} \theoremstyle{definition} \newtheorem{defn}{Definition} \newtheorem{example}{Example} \newtheorem*{udefn}{Definition} \newtheorem*{uexample}{Example} \theoremstyle{remark} \newtheorem{remark}{Remark} \newtheorem{note}{Note} \newtheorem*{uremark}{Remark} \newtheorem*{unote}{Note} %------------------------------------------------------------------- \begin{document} %------------------------------------------------------------------- \section*{partial function} \hypertarget{partial_functions}{}\section*{{Partial functions}}\label{partial_functions} \noindent\hyperlink{idea}{Idea}\dotfill \pageref*{idea} \linebreak \noindent\hyperlink{definitions}{Definitions}\dotfill \pageref*{definitions} \linebreak \noindent\hyperlink{DefinitionInSets}{In sets}\dotfill \pageref*{DefinitionInSets} \linebreak \noindent\hyperlink{DefinitionGeneralAbstract}{General abstract}\dotfill \pageref*{DefinitionGeneralAbstract} \linebreak \noindent\hyperlink{in_terms_of_spans}{In terms of spans}\dotfill \pageref*{in_terms_of_spans} \linebreak \noindent\hyperlink{in_terms_of_the_maybe_monad}{In terms of the maybe monad}\dotfill \pageref*{in_terms_of_the_maybe_monad} \linebreak \noindent\hyperlink{examples}{Examples}\dotfill \pageref*{examples} \linebreak \noindent\hyperlink{the_category_of_sets_and_partial_functions}{The category of sets and partial functions}\dotfill \pageref*{the_category_of_sets_and_partial_functions} \linebreak \noindent\hyperlink{algebras_of_partial_functions}{Algebras of partial functions}\dotfill \pageref*{algebras_of_partial_functions} \linebreak \noindent\hyperlink{related_concepts}{Related concepts}\dotfill \pageref*{related_concepts} \linebreak \noindent\hyperlink{References}{References}\dotfill \pageref*{References} \linebreak \hypertarget{idea}{}\subsection*{{Idea}}\label{idea} A \emph{partial function} $f: A \to B$ is like a [[function]] from $A$ to $B$ except that $f(x)$ may not be defined for every element $x$ of $A$. (Compare a [[multi-valued function]], where $f(x)$ may have several possible values.) In some fields (including secondary-school mathematics even today), functions are often considered to be partial by default, requiring one to specify a \emph{total} function otherwise. As category-theoretic and type-theoretic formalisation spreads, this is difficult to treat as the basic concept, and the most modern idea is that a function must be total. If you want partial functions, then you can get them in terms of total functions as below. \hypertarget{definitions}{}\subsection*{{Definitions}}\label{definitions} \hypertarget{DefinitionInSets}{}\subsubsection*{{In sets}}\label{DefinitionInSets} Given [[set]]s $A$ and $B$, a \textbf{partial function} $f$ from $A$ to $B$ consists a [[subset]] $D$ of $A$ and a (total) function from $D$ to $B$. In more detail, this is a [[span]] \begin{displaymath} \array { & & D \\ & \swarrow_\iota & & \searrow^f \\ A & & & & B \\ } \end{displaymath} of total functions, where $\iota: D \to A$ is an [[injection]]. (This condition can be dropped to define a partial [[multi-valued function]], which is simply a span.) $A$ and $B$ are called the \emph{[[source]]} and \emph{[[target]]} of $f$ as usual; then $D$ is the \textbf{domain} of $f$ and $\iota: D \to A$ is the \textbf{inclusion} of the domain into the source. By abuse of notation, the partial function $f$ is conflated with the (total) function $f: D \to B$. Notice that the induced function $D \to A \times B$ is an [[injection]], so a partial function is the same as a [[functional relation]] seen from a different point of view. We consider two partial functions (with the same given source and target) to be \textbf{equal} if there is a [[bijection]] between their domains that makes the obvious diagrams commute. You can get this automatically in a traditional set theory by requiring $D$ to be literally a [[subset]] of $A$ (with $\iota$ the inclusion map). \hypertarget{DefinitionGeneralAbstract}{}\subsubsection*{{General abstract}}\label{DefinitionGeneralAbstract} \hypertarget{in_terms_of_spans}{}\paragraph*{{In terms of spans}}\label{in_terms_of_spans} If $C$ is a [[category]] with [[pullbacks]], then a \textbf{partial map} from $a$ to $b$ may be defined to be a [[span]] \begin{displaymath} \itexarray{ & & D & & \\ & ^\mathllap{i} \swarrow & & \searrow^\mathrlap{f} & \\ A & & & & B } \end{displaymath} where $i$ is [[monomorphism|monic]]. Such spans are closed under span composition, and as a [[locally full sub-2-category]] of $Span(C)$, the bicategory of partial maps in $C$ is locally preordered. In more down-to-earth terms, if $(i, f)$ and $(i', f')$ are partial maps from $a$ to $b$, we have $(i, f) \leq (i', f')$ if there exists (necessarily monic) $j$ such that $i = i' \circ j$ and $f = f' \circ j$. Abstract bicategories of partial maps, parallel to [[bicategory of relations|bicategories of relations]], were introduced by (\hyperlink{Carb87}{Carboni 87}). \hypertarget{in_terms_of_the_maybe_monad}{}\paragraph*{{In terms of the maybe monad}}\label{in_terms_of_the_maybe_monad} Notice that a partial function $f$ from $A$ to $B$ as \hyperlink{DefinitionInSets}{above} is (in [[classical mathematics]]) equivalently a genuine function from $A$ to the [[disjoint union]] ([[coproduct]]) of $B$ with the point (the singleton) \begin{displaymath} \phi \;\colon\; A \longrightarrow B \coprod \ast \,. \end{displaymath} The [[subset]] $D \hookrightarrow A$ in the \hyperlink{DefinitionInSets}{above} is the [[preimage]] $\phi^*(B)$; for $x$ in this preimage, $f(x) = \phi(x)$. Conversely, an element $x \in A$ is sent to $\ast$ by $\phi$ if and only if $f$ is undefined at $x$. This in turn is equivalently a morphism in the [[Kleisli category]] of the [[maybe monad]]. Phrased this way, the concept of partial function makes sense in any [[category]] with [[coproducts]] and with a [[terminal object]]. It comes out as intended when the category is an [[extensive category]] (partial functions with complemented domain). \hypertarget{examples}{}\subsection*{{Examples}}\label{examples} In secondary-school mathematics, one often makes functions partial by fiat, just to see if students can calculate the domains of composite functions and the like. This is not (only) busywork, as in applications one often has a function given by a formula that is really valid only on a certain domain. However, in more sophisticated analyses (such as those that Lawvere and his followers propose for physics and synthetic geometry), these domains and the total functions on them become the primary objects of study, with the partial functions being secondary (as $\iota$ is seen as merely a way to place \emph{coordinates} on $D$). In analysis, one often considers partial functions whose domains are required to be intervals in the real line, regions of the complex plane, or dense subsets of a [[Banach space]]. [[Ronnie Brown|Ronnie]] There is an interesting debate possible here! On the basis of my teaching of first year analysis and calculus since 1959, I found the most convenient idea is that of a function $f: R \to R$ being a \emph{partial function} with a domain which can be calculated from a formula for the function, and may be empty. Then one finds that the inverse of an injective function $R \to R$ is also a function $R \to R$. A first order differential equation has a solution which is a partial function. What seems to be lacking is the functional analysis of such solutions. For example $dy/dx=1/ (\lambda +x)$ has a solution whose domain varies with $\lambda$ and ought to (and can be made to) vary continuously, including its open domain! The work of Charles Ehresmann is full of partial functions, derived from his strong interest in analysis and differential geometry, and local-to-global problems. So he developed for example the theory of pseudogroups, and contributed to inverse semigroups. A possible reason for the difficulties some have of accepting groupoids rather than groups is that groupoids have a partial composition, which is of course very intuitive when one thinks of composing journeys. In higher dimensional algebra one is dealing with algebraic structures whose domains are defined by geometric conditions. Of course category theory initially derived from algebra and algebraic topology, where partial functions are unusual. However they are necessary in dealing with fibred exponential laws, i.e. exponential laws in a slice category of $Top$, and their applications. See papers of Peter Booth. \emph{Toby}: For first-year calculus, I agree with you, except that you ought to be able to restrict the definition to an interval (or a union of intervals) by fiat. (Actually, you can get this from formulas by adding appropriate terms of the form $\sqrt {x-a} - \sqrt{x-a}$, $\log(a-x) - \log(a-x)$, etc, but that's silly.) So calculus is about (certain) functions to $\mathbf{R}$ from unions of intervals on $\mathbf{R}$. Of course, this doesn't include \emph{all} partial functions on $\mathbf{R}$, but then it doesn't even include all such \emph{total} functions, so maybe the restriction on allowed domains doesn't matter. But if you disagree that `in more sophisticated analyses \ldots{}, these domains and the total functions on them become the primary objects of study', then feel free to change the text (say to `in other analyses \ldots{}'; I don't intend to defend the claim that this is really the right way to do things. In a [[field]], the multiplicative [[inverse]] is a partial function whose domain is the set of non-zero elements of the field. \hypertarget{the_category_of_sets_and_partial_functions}{}\subsection*{{The category of sets and partial functions}}\label{the_category_of_sets_and_partial_functions} The [[category]] $Set_part$ of sets and partial functions between them is important for understanding computation. However, one often replaces this with an [[equivalence of categories|equivalent]] category of sets and total functions. Specifically, replace each set $S$ with the set $S_\bot$ of all [[subset]]s of $S$ with at most one element, otherwise known as the [[partial map classifier]] of [[Set]]. In this context, we identify an element $x$ of $S$ with the subset $\{x\}$ and write the [[empty set|empty]] subset as $\bot$. Then a partial function $S \to T$ becomes a total function $S_\bot \to T_\bot$ such that [[inhabited set|inhabited]] subsets of $T$ are assigned only to inhabited subsets of $S$. Then $Set_part$ is equivalent to the category $Set_\bot$ of such sets and functions. In [[classical mathematics]] $S_\bot \cong S \amalg \{\bot\}$, although this is not true [[constructive mathematics|constructively]]. In this case, $S\mapsto S \amalg \{\bot\}$ is the [[maybe monad]] and $Set_\bot$ is its [[Kleisli category]]. Moreover, since every algebra for this monad is [[free algebra|free]] this category is also equivalent to its [[Eilenberg-Moore category]], which is the category $Set_*$ of [[pointed set]]s and total point-preserving functions. Traditionally, one uses the notation of $Set_\bot$ but (unless one is a constructivist) thinks of this as simply different notation for $Set_*$. It is still true constructively that $S\mapsto S_\bot$ is a monad (the [[partial map classifier]]) and $Set_\bot$ is its Kleisli category, but it is (probably) no longer true that every algebra is free. [[Emily Riehl]] I don't understand how I am supposed to think about $Set_\bot$. In particular, $Set_\bot$ is isomorphic to get category of based sets and basepoint preserving functions, which seems both easier to describe and easier to think about. Also what is non-constructive about the bijection $S_\bot \cong S \amalg \{\bot\}$? Toby writes: We have the map $S \amalg \{\bot\} \to S_\bot$; map $x$ to $\{x\}$ and $\bot$ to $\emptyset$. Suppose that this map is surjective. That's fine for some $S$, but suppose that $S$ is inhabited, with an element $a$. Let $P$ be any proposition, and form the subset $\{x | P\}$ of $S$, defined so that $a \in \{x | P\}$ iff $a = x$ and $P$ is true. This subset has at most one element, so it is (by hypothesis) in the image of the map $S \amalg \{\bot\} \to S_\bot$. If its preimage is in $S$, then $P$ is true; if its preimage is in $\{\bot\}$, then $P$ is false. Since $P$ could be any proposition, [[excluded middle]] follows; this is nonconstructive. This is all yet different from the category of pointed sets. For a more sophisticated analysis of computation, $Set_\bot$ can be replaced with a suitable category of domains, such as [[direction|directed]] [[complete lattice|complete]] [[partial order|partially ordered]] sets (DCPOs). The requirement that $\bot$ be preserved can then be removed to model lazy computation, but now we are hardly talking about partial functions anymore. \hypertarget{algebras_of_partial_functions}{}\subsection*{{Algebras of partial functions}}\label{algebras_of_partial_functions} The functions of high-school mathematics, consisting of real (or complex)-valued functions of one (or two or three) real (or complex) variables, are by default partial functions. As they take values in a [[field]], one may consider adding or multiplying them. The usual rule is that $\dom(f + g) = \dom f \cap \dom g$, etc, but this leads to an unusual algebra: a commutative [[semiring]] in which addition has an identity element (the always-defined constant [[zero function]]) and multiplication has an absorbing element (the never-defined [[empty function]]), but it fails to be a [[rig]] because these two elements are not the same. It has many other interesting properties, such as simultaneous additive and multiplicative [[idempotent element|idempotents]] (the zero functions with arbitrary domains). An axiomatic treatment of such semirings may be found at the end of \hyperlink{Richman2010}{Richman 2010}. \hypertarget{related_concepts}{}\subsection*{{Related concepts}}\label{related_concepts} \begin{itemize}% \item [[total function]] \item [[restriction category]] \end{itemize} \hypertarget{References}{}\subsection*{{References}}\label{References} \begin{itemize}% \item [[Aurelio Carboni]], Bicategories of partial maps, Cahiers de Topologie et G\'e{}om\'e{}trie Diff\'e{}rentielle Cat\'e{}goriques, 28 no. 2 (1987), p. 111-126 (\href{http://www.numdam.org/item?id=CTGDC_1987__28_2_111_0}{web}) \item [[Robin Cockett]], [[Steve Lack]], \emph{Restriction categories I: categories of partial maps} (\href{http://pages.cpsc.ucalgary.ca/~robin/FMCS/FMCS_06/RestrictionsI.pdf}{pdf}) \item [[Robin Cockett]], [[Steve Lack]], \emph{Restriction categories II: partial map classification} (\href{http://maths.mq.edu.au/~slack/papers/restii.html}{web}) \item [[Robin Cockett]], [[Steve Lack]], \emph{Restriction categories III: colimits, partial limits, and extensivity} (\href{http://arxiv.org/abs/math/0610500}{arXiv:math/0610500}) \item [[Fred Richman]] (2010). \emph{Algebraic functions, calculus style}. \href{http://math.fau.edu/richman/html/docs.htm}{Fred Richman's documents}. \end{itemize} [[!redirects partial function]] [[!redirects partial functions]] [[!redirects partially defined function]] [[!redirects partially defined functions]] [[!redirects partially-defined function]] [[!redirects partially-defined functions]] [[!redirects partial map]] [[!redirects partial maps]] [[!redirects partial morphism]] [[!redirects partial morphisms]] \end{document}