{
  localUrl: '../page/join_examples.html',
  arbitalUrl: 'https://arbital.com/p/join_examples',
  rawJsonUrl: '../raw/3v4.json',
  likeableId: '2771',
  likeableType: 'page',
  myLikeValue: '0',
  likeCount: '1',
  dislikeCount: '0',
  likeScore: '1',
  individualLikes: [
    'EricBruylant'
  ],
  pageId: 'join_examples',
  edit: '19',
  editSummary: '',
  prevEdit: '18',
  currentEdit: '19',
  wasPublished: 'true',
  type: 'wiki',
  title: 'Join and meet: Examples',
  clickbait: '',
  textLength: '2833',
  alias: 'join_examples',
  externalUrl: '',
  sortChildrenBy: 'likes',
  hasVote: 'false',
  voteType: '',
  votesAnonymous: 'false',
  editCreatorId: 'KevinClancy',
  editCreatedAt: '2016-06-20 03:57:20',
  pageCreatorId: 'KevinClancy',
  pageCreatedAt: '2016-05-27 02:43:38',
  seeDomainId: '0',
  editDomainId: 'AlexeiAndreev',
  submitToDomainId: '0',
  isAutosave: 'false',
  isSnapshot: 'false',
  isLiveEdit: 'true',
  isMinorEdit: 'false',
  indirectTeacher: 'false',
  todoCount: '0',
  isEditorComment: 'false',
  isApprovedComment: 'true',
  isResolved: 'false',
  snapshotText: '',
  anchorContext: '',
  anchorText: '',
  anchorOffset: '0',
  mergedInto: '',
  isDeleted: 'false',
  viewCount: '71',
  text: 'A union of sets and the least common multiple of a set of natural numbers can both be viewed as joins. In addition, joins can be useful to the designers of statically typed programming languages.\n\n%%%knows-requisite([3v1]):\nThe real numbers\n------------------------------\n\nConsider the [-3rb] $\\langle \\mathbb{R}, \\leq \\rangle$ of all real numbers ordered by the standard comparison relation. For any non-empty $X \\subseteq \\mathbb{R}$, $\\bigvee X$ exists if and only if $X$ has an upper bound; this fact falls directly out of the definition of the set of real numbers.\n%%%\n\n\nSubtyping\n------------------\n\nStatically typed programming languages often define a poset of types ordered by the subtyping relation; Scala is one such language. Consider the following Scala program.\n\n![A scala program with class inheritance](http://i.imgur.com/IUkzT7A.png)\n\nWhen a programmer defines a class hierarchy in an object-oriented language, they are actually defining a poset of types. The above program defines the simple poset shown in the following Hasse diagram.\n\n![Hasse diagram for the nominal subtyping relation defined by the above program](http://i.imgur.com/dk1EHuA.png)\n\n%%%comment:\ndot source:\n\ndigraph G {\n  node [width = 0.1, height = 0.1];\n  edge [arrowhead = "none"];\n  rankdir = BT;\n  Dog -> Animal;\n  Cat -> Animal;\n}\n%%%\n\nNow consider the expression *if (b) dog else cat*. If b is true, then it evaluates to a value of type Dog. If b is false, then it evaluates to a value of type Cat. What type, then, should *if (b) dog else cat* have? Its type should be the join of Dog and Cat, which is Animal.\n\nPower sets\n-------------------\n\nLet $X$ be a [-3jz]. Consider the [-3rb] $\\langle \\mathcal{P}(X), \\subseteq \\rangle$, the power set of $X$ ordered by inclusion. In this poset, joins are unions: for all $A \\subseteq \\mathcal{P}(X)$, $\\bigvee A = \\bigcup A$. This can be shown as follows. Let $A \\subseteq \\mathcal{P}(X)$. Then $\\bigcup A$ is an upper bound of $A$ because a union contains each of its constituent sets. Furthermore, $\\bigcup A$ is the *least* upper bound of $A$. For let $Z$ be an upper bound of $A$. Then $x \\in \\bigcup A$ implies $x \\in Y$ for some $Y \\in A$, and since $Y \\subseteq Z$, we have $x \\in Y \\subseteq Z$. Since $x \\in \\bigcup A$ implies $x \\in Z$, we have $\\bigcup A \\subseteq Z$. Hence, $\\bigvee A = \\bigcup A$.\n\nDivisibility\n------------------\n\nConsider the poset $\\langle \\mathbb Z_+, | \\rangle$ of divisibility on the positive integers. In this poset, the upper bounds of an integer are exactly its multiples. Thus, the join of a set of positive integers in $\\langle \\mathbb Z_+, | \\rangle$ is their [least_common_multiple least common multiple]. Dually, the meet of a set of positive integers in $\\langle \\mathbb Z_+, | \\rangle$ is their [greatest_common_divisor greatest common divisor].\n\n\n\n',
  metaText: '',
  isTextLoaded: 'true',
  isSubscribedToDiscussion: 'false',
  isSubscribedToUser: 'false',
  isSubscribedAsMaintainer: 'false',
  discussionSubscriberCount: '1',
  maintainerCount: '1',
  userSubscriberCount: '0',
  lastVisit: '',
  hasDraft: 'false',
  votes: [],
  voteSummary: [
    '0',
    '0',
    '0',
    '0',
    '0',
    '0',
    '0',
    '0',
    '0',
    '0'
  ],
  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: [
    'KevinClancy',
    'EricRogstad'
  ],
  childIds: [],
  parentIds: [
    'math_join'
  ],
  commentIds: [
    '3v5',
    '4jg'
  ],
  questionIds: [],
  tagIds: [],
  relatedIds: [],
  markIds: [],
  explanations: [],
  learnMore: [],
  requirements: [],
  subjects: [],
  lenses: [],
  lensParentId: 'math_join',
  pathPages: [],
  learnMoreTaughtMap: {},
  learnMoreCoveredMap: {},
  learnMoreRequiredMap: {},
  editHistory: {},
  domainSubmissions: {},
  answers: [],
  answerCount: '0',
  commentCount: '2',
  newCommentCount: '0',
  linkedMarkCount: '0',
  changeLogs: [
    {
      likeableId: '0',
      likeableType: 'changeLog',
      myLikeValue: '0',
      likeCount: '0',
      dislikeCount: '0',
      likeScore: '0',
      individualLikes: [],
      id: '14062',
      pageId: 'join_examples',
      userId: 'KevinClancy',
      edit: '19',
      type: 'newEdit',
      createdAt: '2016-06-20 03:57:20',
      auxPageId: '',
      oldSettingsValue: '',
      newSettingsValue: ''
    },
    {
      likeableId: '0',
      likeableType: 'changeLog',
      myLikeValue: '0',
      likeCount: '0',
      dislikeCount: '0',
      likeScore: '0',
      individualLikes: [],
      id: '14061',
      pageId: 'join_examples',
      userId: 'KevinClancy',
      edit: '18',
      type: 'newEdit',
      createdAt: '2016-06-20 03:56:42',
      auxPageId: '',
      oldSettingsValue: '',
      newSettingsValue: ''
    },
    {
      likeableId: '0',
      likeableType: 'changeLog',
      myLikeValue: '0',
      likeCount: '0',
      dislikeCount: '0',
      likeScore: '0',
      individualLikes: [],
      id: '14057',
      pageId: 'join_examples',
      userId: 'KevinClancy',
      edit: '17',
      type: 'newEdit',
      createdAt: '2016-06-20 03:50:12',
      auxPageId: '',
      oldSettingsValue: '',
      newSettingsValue: ''
    },
    {
      likeableId: '0',
      likeableType: 'changeLog',
      myLikeValue: '0',
      likeCount: '0',
      dislikeCount: '0',
      likeScore: '0',
      individualLikes: [],
      id: '14056',
      pageId: 'join_examples',
      userId: 'KevinClancy',
      edit: '16',
      type: 'newEdit',
      createdAt: '2016-06-20 03:49:23',
      auxPageId: '',
      oldSettingsValue: '',
      newSettingsValue: ''
    },
    {
      likeableId: '0',
      likeableType: 'changeLog',
      myLikeValue: '0',
      likeCount: '0',
      dislikeCount: '0',
      likeScore: '0',
      individualLikes: [],
      id: '14055',
      pageId: 'join_examples',
      userId: 'KevinClancy',
      edit: '15',
      type: 'newEdit',
      createdAt: '2016-06-20 03:48:38',
      auxPageId: '',
      oldSettingsValue: '',
      newSettingsValue: ''
    },
    {
      likeableId: '0',
      likeableType: 'changeLog',
      myLikeValue: '0',
      likeCount: '0',
      dislikeCount: '0',
      likeScore: '0',
      individualLikes: [],
      id: '13746',
      pageId: 'join_examples',
      userId: 'KevinClancy',
      edit: '14',
      type: 'newEdit',
      createdAt: '2016-06-17 23:00:18',
      auxPageId: '',
      oldSettingsValue: '',
      newSettingsValue: ''
    },
    {
      likeableId: '0',
      likeableType: 'changeLog',
      myLikeValue: '0',
      likeCount: '0',
      dislikeCount: '0',
      likeScore: '0',
      individualLikes: [],
      id: '13745',
      pageId: 'join_examples',
      userId: 'KevinClancy',
      edit: '13',
      type: 'newEdit',
      createdAt: '2016-06-17 22:57:28',
      auxPageId: '',
      oldSettingsValue: '',
      newSettingsValue: ''
    },
    {
      likeableId: '0',
      likeableType: 'changeLog',
      myLikeValue: '0',
      likeCount: '0',
      dislikeCount: '0',
      likeScore: '0',
      individualLikes: [],
      id: '12702',
      pageId: 'join_examples',
      userId: 'KevinClancy',
      edit: '12',
      type: 'newEdit',
      createdAt: '2016-06-14 17:41:20',
      auxPageId: '',
      oldSettingsValue: '',
      newSettingsValue: ''
    },
    {
      likeableId: '0',
      likeableType: 'changeLog',
      myLikeValue: '0',
      likeCount: '0',
      dislikeCount: '0',
      likeScore: '0',
      individualLikes: [],
      id: '12701',
      pageId: 'join_examples',
      userId: 'KevinClancy',
      edit: '11',
      type: 'newEdit',
      createdAt: '2016-06-14 17:39:01',
      auxPageId: '',
      oldSettingsValue: '',
      newSettingsValue: ''
    },
    {
      likeableId: '0',
      likeableType: 'changeLog',
      myLikeValue: '0',
      likeCount: '0',
      dislikeCount: '0',
      likeScore: '0',
      individualLikes: [],
      id: '12700',
      pageId: 'join_examples',
      userId: 'KevinClancy',
      edit: '10',
      type: 'newEdit',
      createdAt: '2016-06-14 17:38:07',
      auxPageId: '',
      oldSettingsValue: '',
      newSettingsValue: ''
    },
    {
      likeableId: '0',
      likeableType: 'changeLog',
      myLikeValue: '0',
      likeCount: '0',
      dislikeCount: '0',
      likeScore: '0',
      individualLikes: [],
      id: '12699',
      pageId: 'join_examples',
      userId: 'KevinClancy',
      edit: '9',
      type: 'newEdit',
      createdAt: '2016-06-14 17:33:21',
      auxPageId: '',
      oldSettingsValue: '',
      newSettingsValue: ''
    },
    {
      likeableId: '0',
      likeableType: 'changeLog',
      myLikeValue: '0',
      likeCount: '0',
      dislikeCount: '0',
      likeScore: '0',
      individualLikes: [],
      id: '12698',
      pageId: 'join_examples',
      userId: 'KevinClancy',
      edit: '8',
      type: 'newEdit',
      createdAt: '2016-06-14 17:32:45',
      auxPageId: '',
      oldSettingsValue: '',
      newSettingsValue: ''
    },
    {
      likeableId: '0',
      likeableType: 'changeLog',
      myLikeValue: '0',
      likeCount: '0',
      dislikeCount: '0',
      likeScore: '0',
      individualLikes: [],
      id: '12383',
      pageId: 'join_examples',
      userId: 'EricRogstad',
      edit: '7',
      type: 'newEdit',
      createdAt: '2016-06-11 01:51:08',
      auxPageId: '',
      oldSettingsValue: '',
      newSettingsValue: ''
    },
    {
      likeableId: '0',
      likeableType: 'changeLog',
      myLikeValue: '0',
      likeCount: '0',
      dislikeCount: '0',
      likeScore: '0',
      individualLikes: [],
      id: '12318',
      pageId: 'join_examples',
      userId: 'KevinClancy',
      edit: '6',
      type: 'newEdit',
      createdAt: '2016-06-10 15:11:58',
      auxPageId: '',
      oldSettingsValue: '',
      newSettingsValue: ''
    },
    {
      likeableId: '0',
      likeableType: 'changeLog',
      myLikeValue: '0',
      likeCount: '0',
      dislikeCount: '0',
      likeScore: '0',
      individualLikes: [],
      id: '12317',
      pageId: 'join_examples',
      userId: 'KevinClancy',
      edit: '5',
      type: 'newEdit',
      createdAt: '2016-06-10 15:07:18',
      auxPageId: '',
      oldSettingsValue: '',
      newSettingsValue: ''
    },
    {
      likeableId: '0',
      likeableType: 'changeLog',
      myLikeValue: '0',
      likeCount: '0',
      dislikeCount: '0',
      likeScore: '0',
      individualLikes: [],
      id: '11491',
      pageId: 'join_examples',
      userId: 'KevinClancy',
      edit: '4',
      type: 'newEdit',
      createdAt: '2016-05-30 22:08:09',
      auxPageId: '',
      oldSettingsValue: '',
      newSettingsValue: ''
    },
    {
      likeableId: '0',
      likeableType: 'changeLog',
      myLikeValue: '0',
      likeCount: '0',
      dislikeCount: '0',
      likeScore: '0',
      individualLikes: [],
      id: '11149',
      pageId: 'join_examples',
      userId: 'KevinClancy',
      edit: '3',
      type: 'newEdit',
      createdAt: '2016-05-27 02:50:19',
      auxPageId: '',
      oldSettingsValue: '',
      newSettingsValue: ''
    },
    {
      likeableId: '0',
      likeableType: 'changeLog',
      myLikeValue: '0',
      likeCount: '0',
      dislikeCount: '0',
      likeScore: '0',
      individualLikes: [],
      id: '11146',
      pageId: 'join_examples',
      userId: 'KevinClancy',
      edit: '2',
      type: 'newEdit',
      createdAt: '2016-05-27 02:46:10',
      auxPageId: '',
      oldSettingsValue: '',
      newSettingsValue: ''
    },
    {
      likeableId: '0',
      likeableType: 'changeLog',
      myLikeValue: '0',
      likeCount: '0',
      dislikeCount: '0',
      likeScore: '0',
      individualLikes: [],
      id: '11144',
      pageId: 'join_examples',
      userId: 'KevinClancy',
      edit: '1',
      type: 'newEdit',
      createdAt: '2016-05-27 02:43:38',
      auxPageId: '',
      oldSettingsValue: '',
      newSettingsValue: ''
    },
    {
      likeableId: '0',
      likeableType: 'changeLog',
      myLikeValue: '0',
      likeCount: '0',
      dislikeCount: '0',
      likeScore: '0',
      individualLikes: [],
      id: '11142',
      pageId: 'join_examples',
      userId: 'KevinClancy',
      edit: '1',
      type: 'newParent',
      createdAt: '2016-05-27 02:42:57',
      auxPageId: 'math_join',
      oldSettingsValue: '',
      newSettingsValue: ''
    }
  ],
  feedSubmissions: [],
  searchStrings: {},
  hasChildren: 'false',
  hasParents: 'true',
  redAliases: {},
  improvementTagIds: [],
  nonMetaTagIds: [],
  todos: [],
  slowDownMap: 'null',
  speedUpMap: 'null',
  arcPageIds: 'null',
  contentRequests: {}
}