{
  localUrl: '../page/partial_function.html',
  arbitalUrl: 'https://arbital.com/p/partial_function',
  rawJsonUrl: '../raw/5p2.json',
  likeableId: '3351',
  likeableType: 'page',
  myLikeValue: '0',
  likeCount: '2',
  dislikeCount: '0',
  likeScore: '2',
  individualLikes: [
    'EricBruylant',
    'PatrickStaples'
  ],
  pageId: 'partial_function',
  edit: '3',
  editSummary: '',
  prevEdit: '2',
  currentEdit: '3',
  wasPublished: 'true',
  type: 'wiki',
  title: 'Partial function',
  clickbait: 'A partial function is one which "might not be defined everywhere one might expect it to be".',
  textLength: '2226',
  alias: 'partial_function',
  externalUrl: '',
  sortChildrenBy: 'likes',
  hasVote: 'false',
  voteType: '',
  votesAnonymous: 'false',
  editCreatorId: 'PatrickStevens',
  editCreatedAt: '2016-08-06 12:41:39',
  pageCreatorId: 'PatrickStevens',
  pageCreatedAt: '2016-07-30 19:07:58',
  seeDomainId: '0',
  editDomainId: 'AlexeiAndreev',
  submitToDomainId: '0',
  isAutosave: 'false',
  isSnapshot: 'false',
  isLiveEdit: 'true',
  isMinorEdit: 'false',
  indirectTeacher: 'false',
  todoCount: '1',
  isEditorComment: 'false',
  isApprovedComment: 'true',
  isResolved: 'false',
  snapshotText: '',
  anchorContext: '',
  anchorText: '',
  anchorOffset: '0',
  mergedInto: '',
  isDeleted: 'false',
  viewCount: '30',
  text: 'A **partial function** is like a [-3jy] $f: A \\to B$, but where we relax the requirement that $f(a)$ must be defined for all $a \\in A$.\nThat is, it must still be the case that "$a = b$ and $f(a)$ is defined" implies "$f(b)$ is defined and $f(a) = f(b)$", but now we no longer need $f(a)$ to be defined everywhere.\nWe can write $f: A \\rightharpoonup B$ %%note:In LaTeX, this symbol is given by `\\rightharpoonup`.%%to denote that $f$ is a partial function with **domain** $A$ and **codomain** $B$: that is, whenever $f(x)$ is defined then we have $x \\in A$ and $f(x) \\in B$.\n\nThis idea is essentially the "flip side" to the distinction between the [-3lv] dichotomy.\n\n# Implementation in set theory\n\nJust as a function can be implemented as a set $f$ of ordered pairs $(a, b)$ such that: \n\n- every $x \\in A$ appears as the first element of some ordered pair in $f$\n- if $(a, b)$ is an ordered pair in $f$ then $a \\in A$ and $b \\in B$\n- if $(a, b)$ and $(a, c)$ are ordered pairs in $f$, then $b=c$\n\nso we can define a *partial* function as a set $f$ of ordered pairs $(a,b)$ such that:\n\n- if $(a, b)$ is an ordered pair in $f$ then $a \\in A$ and $b \\in B$\n- if $(a, b)$ and $(a, c)$ are ordered pairs in $f$, then $b=c$\n\n(That is, we omit the first listed requirement from the definition of a *bona fide* function.)\n\n# Relationship to Turing machines\n[todo: maybe this should be under Turing machine rather than partial function?]\n\nMorally speaking, every [5pd Turing machine] $\\mathcal{T}$ may be viewed as computing some function $f: \\mathbb{N} \\to \\mathbb{N}$, by defining $f(n)$ to be the state of the tape after $\\mathcal{T}$ has been allowed to execute on the tape which has been initialised with the value $n$.\n\nHowever, if $\\mathcal{T}$ does not terminate on input $n$ (for example, it may be the machine "if $n = 3$ then return $1$; otherwise loop indefinitely"), then this "morally correct" state of affairs is not accurate: how should we define $f(4)$?\nThe answer is that we should instead view $f$ as a *partial* function which is just undefined if $\\mathcal{T}$ fails to halt on the input in question.\nSo with the example $\\mathcal{T}$ above, $f$ is the partial function which is only defined at $3$, and $f(3) = 1$.',
  metaText: '',
  isTextLoaded: 'true',
  isSubscribedToDiscussion: 'false',
  isSubscribedToUser: 'false',
  isSubscribedAsMaintainer: 'false',
  discussionSubscriberCount: '1',
  maintainerCount: '1',
  userSubscriberCount: '0',
  lastVisit: '',
  hasDraft: 'false',
  votes: [],
  voteSummary: 'null',
  muVoteSummary: '0',
  voteScaling: '0',
  currentUserVote: '-2',
  voteCount: '0',
  lockedVoteType: '',
  maxEditEver: '0',
  redLinkCount: '0',
  lockedBy: '',
  lockedUntil: '',
  nextPageId: '',
  prevPageId: '',
  usedAsMastery: 'false',
  proposalEditNum: '0',
  permissions: {
    edit: {
      has: 'false',
      reason: 'You don't have domain permission to edit this page'
    },
    proposeEdit: {
      has: 'true',
      reason: ''
    },
    delete: {
      has: 'false',
      reason: 'You don't have domain permission to delete this page'
    },
    comment: {
      has: 'false',
      reason: 'You can't comment in this domain because you are not a member'
    },
    proposeComment: {
      has: 'true',
      reason: ''
    }
  },
  summaries: {},
  creatorIds: [
    'PatrickStevens'
  ],
  childIds: [],
  parentIds: [
    'function'
  ],
  commentIds: [],
  questionIds: [],
  tagIds: [],
  relatedIds: [],
  markIds: [],
  explanations: [],
  learnMore: [],
  requirements: [],
  subjects: [],
  lenses: [],
  lensParentId: '',
  pathPages: [],
  learnMoreTaughtMap: {},
  learnMoreCoveredMap: {},
  learnMoreRequiredMap: {},
  editHistory: {},
  domainSubmissions: {},
  answers: [],
  answerCount: '0',
  commentCount: '0',
  newCommentCount: '0',
  linkedMarkCount: '0',
  changeLogs: [
    {
      likeableId: '0',
      likeableType: 'changeLog',
      myLikeValue: '0',
      likeCount: '0',
      dislikeCount: '0',
      likeScore: '0',
      individualLikes: [],
      id: '18495',
      pageId: 'partial_function',
      userId: 'PatrickStevens',
      edit: '3',
      type: 'newEdit',
      createdAt: '2016-08-06 12:41:39',
      auxPageId: '',
      oldSettingsValue: '',
      newSettingsValue: ''
    },
    {
      likeableId: '0',
      likeableType: 'changeLog',
      myLikeValue: '0',
      likeCount: '0',
      dislikeCount: '0',
      likeScore: '0',
      individualLikes: [],
      id: '17795',
      pageId: 'partial_function',
      userId: 'PatrickStevens',
      edit: '2',
      type: 'newEdit',
      createdAt: '2016-07-30 19:08:43',
      auxPageId: '',
      oldSettingsValue: '',
      newSettingsValue: ''
    },
    {
      likeableId: '0',
      likeableType: 'changeLog',
      myLikeValue: '0',
      likeCount: '0',
      dislikeCount: '0',
      likeScore: '0',
      individualLikes: [],
      id: '17794',
      pageId: 'partial_function',
      userId: 'PatrickStevens',
      edit: '0',
      type: 'newParent',
      createdAt: '2016-07-30 19:08:00',
      auxPageId: 'function',
      oldSettingsValue: '',
      newSettingsValue: ''
    },
    {
      likeableId: '0',
      likeableType: 'changeLog',
      myLikeValue: '0',
      likeCount: '0',
      dislikeCount: '0',
      likeScore: '0',
      individualLikes: [],
      id: '17792',
      pageId: 'partial_function',
      userId: 'PatrickStevens',
      edit: '1',
      type: 'newEdit',
      createdAt: '2016-07-30 19:07:58',
      auxPageId: '',
      oldSettingsValue: '',
      newSettingsValue: ''
    }
  ],
  feedSubmissions: [],
  searchStrings: {},
  hasChildren: 'false',
  hasParents: 'true',
  redAliases: {},
  improvementTagIds: [],
  nonMetaTagIds: [],
  todos: [],
  slowDownMap: 'null',
  speedUpMap: 'null',
  arcPageIds: 'null',
  contentRequests: {}
}