[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/github/codeql/codeql-cli/v2.26.2/shared/tutorial/tutorial.qll [Back]  [Original]

/**
 * This library is used in the QL detective tutorials.
 *
 * Note: Data is usually stored in a separate database and the QL libraries only contain predicates,
 * but for this tutorial both the data and the predicates are stored in the library.
 */

/**
 * A person known to the QL detective tutorials, represented by a string
 * (their first name).
 */
class Person extends string {
  Person() {
    this =
      [
        "Ronil", "Dina", "Ravi", "Bruce", "Jo", "Aida", "Esme", "Charlie", "Fred", "Meera", "Maya",
        "Chad", "Tiana", "Laura", "George", "Will", "Mary", "Almira", "Susannah", "Rhoda",
        "Cynthia", "Eunice", "Olive", "Virginia", "Angeline", "Helen", "Cornelia", "Harriet",
        "Mahala", "Abby", "Margaret", "Deb", "Minerva", "Severus", "Lavina", "Adeline", "Cath",
        "Elisa", "Lucretia", "Anne", "Eleanor", "Joanna", "Adam", "Agnes", "Rosanna", "Clara",
        "Melissa", "Amy", "Isabel", "Jemima", "Cordelia", "Melinda", "Delila", "Jeremiah", "Elijah",
        "Hester", "Walter", "Oliver", "Hugh", "Aaron", "Reuben", "Eli", "Amos", "Augustus",
        "Theodore", "Ira", "Timothy", "Cyrus", "Horace", "Simon", "Asa", "Frank", "Nelson",
        "Leonard", "Harrison", "Anthony", "Louis", "Milton", "Noah", "Cornelius", "Abdul", "Warren",
        "Harvey", "Dennis", "Wesley", "Sylvester", "Gilbert", "Sullivan", "Edmund", "Wilson",
        "Perry", "Matthew", "Simba", "Nala", "Rafiki", "Shenzi", "Ernest", "Gertrude", "Oscar",
        "Lilian", "Raymond", "Elgar", "Elmer", "Herbert", "Maude", "Mae", "Otto", "Edwin",
        "Ophelia", "Parsley", "Sage", "Rosemary", "Thyme", "Garfunkel", "King Basil", "Stephen"
      ]
  }

  /** Gets the hair color of the person. If the person is bald, there is no result. */
  string getHairColor() {
    this = "Ronil" and result = "black"
    or
    this = "Dina" and result = "black"
    or
    this = "Ravi" and result = "black"
    or
    this = "Bruce" and result = "brown"
    or
    this = "Jo" and result = "red"
    or
    this = "Aida" and result = "blond"
    or
    this = "Esme" and result = "blond"
    or
    this = "Fred" and result = "gray"
    or
    this = "Meera" and result = "brown"
    or
    this = "Maya" and result = "brown"
    or
    this = "Chad" and result = "brown"
    or
    this = "Tiana" and result = "black"
    or
    this = "Laura" and result = "blond"
    or
    this = "George" and result = "blond"
    or
    this = "Will" and result = "blond"
    or
    this = "Mary" and result = "blond"
    or
    this = "Almira" and result = "black"
    or
    this = "Susannah" and result = "blond"
    or
    this = "Rhoda" and result = "blond"
    or
    this = "Cynthia" and result = "gray"
    or
    this = "Eunice" and result = "white"
    or
    this = "Olive" and result = "brown"
    or
    this = "Virginia" and result = "brown"
    or
    this = "Angeline" and result = "red"
    or
    this = "Helen" and result = "white"
    or
    this = "Cornelia" and result = "gray"
    or
    this = "Harriet" and result = "white"
    or
    this = "Mahala" and result = "black"
    or
    this = "Abby" and result = "red"
    or
    this = "Margaret" and result = "brown"
    or
    this = "Deb" and result = "brown"
    or
    this = "Minerva" and result = "brown"
    or
    this = "Severus" and result = "black"
    or
    this = "Lavina" and result = "brown"
    or
    this = "Adeline" and result = "brown"
    or
    this = "Cath" and result = "brown"
    or
    this = "Elisa" and result = "brown"
    or
    this = "Lucretia" and result = "gray"
    or
    this = "Anne" and result = "black"
    or
    this = "Eleanor" and result = "brown"
    or
    this = "Joanna" and result = "brown"
    or
    this = "Adam" and result = "black"
    or
    this = "Agnes" and result = "black"
    or
    this = "Rosanna" and result = "gray"
    or
    this = "Clara" and result = "blond"
    or
    this = "Melissa" and result = "brown"
    or
    this = "Amy" and result = "brown"
    or
    this = "Isabel" and result = "black"
    or
    this = "Jemima" and result = "red"
    or
    this = "Cordelia" and result = "red"
    or
    this = "Melinda" and result = "gray"
    or
    this = "Delila" and result = "white"
    or
    this = "Jeremiah" and result = "gray"
    or
    this = "Hester" and result = "black"
    or
    this = "Walter" and result = "black"
    or
    this = "Aaron" and result = "gray"
    or
    this = "Reuben" and result = "gray"
    or
    this = "Eli" and result = "gray"
    or
    this = "Amos" and result = "white"
    or
    this = "Augustus" and result = "white"
    or
    this = "Theodore" and result = "white"
    or
    this = "Timothy" and result = "brown"
    or
    this = "Cyrus" and result = "brown"
    or
    this = "Horace" and result = "brown"
    or
    this = "Simon" and result = "brown"
    or
    this = "Asa" and result = "brown"
    or
    this = "Frank" and result = "brown"
    or
    this = "Nelson" and result = "black"
    or
    this = "Leonard" and result = "black"
    or
    this = "Harrison" and result = "black"
    or
    this = "Anthony" and result = "black"
    or
    this = "Louis" and result = "black"
    or
    this = "Milton" and result = "blond"
    or
    this = "Noah" and result = "blond"
    or
    this = "Cornelius" and result = "red"
    or
    this = "Abdul" and result = "brown"
    or
    this = "Warren" and result = "red"
    or
    this = "Harvey" and result = "blond"
    or
    this = "Dennis" and result = "blond"
    or
    this = "Wesley" and result = "brown"
    or
    this = "Sylvester" and result = "brown"
    or
    this = "Gilbert" and result = "brown"
    or
    this = "Sullivan" and result = "brown"
    or
    this = "Edmund" and result = "brown"
    or
    this = "Wilson" and result = "blond"
    or
    this = "Perry" and result = "black"
    or
    this = "Simba" and result = "brown"
    or
    this = "Nala" and result = "brown"
    or
    this = "Rafiki" and result = "red"
    or
    this = "Shenzi" and result = "gray"
    or
    this = "Ernest" and result = "blond"
    or
    this = "Gertrude" and result = "brown"
    or
    this = "Oscar" and result = "blond"
    or
    this = "Lilian" and result = "brown"
    or
    this = "Raymond" and result = "brown"
    or
    this = "Elgar" and result = "brown"
    or
    this = "Elmer" and result = "brown"
    or
    this = "Herbert" and result = "brown"
    or
    this = "Maude" and result = "brown"
    or
    this = "Mae" and result = "brown"
    or
    this = "Otto" and result = "black"
    or
    this = "Edwin" and result = "black"
    or
    this = "Ophelia" and result = "brown"
    or
    this = "Parsley" and result = "brown"
    or
    this = "Sage" and result = "brown"
    or
    this = "Rosemary" and result = "brown"
    or
    this = "Thyme" and result = "brown"
    or
    this = "Garfunkel" and result = "brown"
    or
    this = "King Basil" and result = "brown"
    or
    this = "Stephen" and result = "black"
    or
    this = "Stephen" and result = "gray"
  }

  /** Gets the age of the person (in years). If the person is deceased, there is no result. */
  int getAge() {
    this = "Ronil" and result = 21
    or
    this = "Dina" and result = 53
    or
    this = "Ravi" and result = 16
    or
    this = "Bruce" and result = 35
    or
    this = "Jo" and result = 47
    or
    this = "Aida" and result = 26
    or
    this = "Esme" and result = 25
    or
    this = "Charlie" and result = 31
    or
    this = "Fred" and result = 68
    or
    this = "Meera" and result = 62
    or
    this = "Maya" and result = 29
    or
    this = "Chad" and result = 49
    or
    this = "Tiana" and result = 18
    or
    this = "Laura" and result = 2
    or
    this = "George" and result = 3
    or
    this = "Will" and result = 41
    or
    this = "Mary" and result = 51
    or
    this = "Almira" and result = 1
    or
    this = "Susannah" and result = 97
    or
    this = "Rhoda" and result = 39
    or
    this = "Cynthia" and result = 89
    or
    this = "Eunice" and result = 83
    or
    this = "Olive" and result = 25
    or
    this = "Virginia" and result = 52
    or
    this = "Angeline" and result = 22
    or
    this = "Helen" and result = 79
    or
    this = "Cornelia" and result = 59
    or
    this = "Harriet" and result = 57
    or
    this = "Mahala" and result = 61
    or
    this = "Abby" and result = 24
    or
    this = "Margaret" and result = 59
    or
    this = "Deb" and result = 31
    or
    this = "Minerva" and result = 72
    or
    this = "Severus" and result = 61
    or
    this = "Lavina" and result = 33
    or
    this = "Adeline" and result = 17
    or
    this = "Cath" and result = 22
    or
    this = "Elisa" and result = 9
    or
    this = "Lucretia" and result = 56
    or
    this = "Anne" and result = 11
    or
    this = "Eleanor" and result = 80
    or
    this = "Joanna" and result = 43
    or
    this = "Adam" and result = 37
    or
    this = "Agnes" and result = 47
    or
    this = "Rosanna" and result = 61
    or
    this = "Clara" and result = 31
    or
    this = "Melissa" and result = 37
    or
    this = "Amy" and result = 12
    or
    this = "Isabel" and result = 6
    or
    this = "Jemima" and result = 16
    or
    this = "Cordelia" and result = 21
    or
    this = "Melinda" and result = 55
    or
    this = "Delila" and result = 66
    or
    this = "Jeremiah" and result = 54
    or
    this = "Elijah" and result = 42
    or
    this = "Hester" and result = 68
    or
    this = "Walter" and result = 66
    or
    this = "Oliver" and result = 33
    or
    this = "Hugh" and result = 51
    or
    this = "Aaron" and result = 49
    or
    this = "Reuben" and result = 58
    or
    this = "Eli" and result = 70
    or
    this = "Amos" and result = 65
    or
    this = "Augustus" and result = 56
    or
    this = "Theodore" and result = 69
    or
    this = "Ira" and result = 1
    or
    this = "Timothy" and result = 54
    or
    this = "Cyrus" and result = 78
    or
    this = "Horace" and result = 34
    or
    this = "Simon" and result = 23
    or
    this = "Asa" and result = 28
    or
    this = "Frank" and result = 59
    or
    this = "Nelson" and result = 38
    or
    this = "Leonard" and result = 58
    or
    this = "Harrison" and result = 7
    or
    this = "Anthony" and result = 2
    or
    this = "Louis" and result = 34
    or
    this = "Milton" and result = 36
    or
    this = "Noah" and result = 48
    or
    this = "Cornelius" and result = 41
    or
    this = "Abdul" and result = 67
    or
    this = "Warren" and result = 47
    or
    this = "Harvey" and result = 31
    or
    this = "Dennis" and result = 39
    or
    this = "Wesley" and result = 13
    or
    this = "Sylvester" and result = 19
    or
    this = "Gilbert" and result = 16
    or
    this = "Sullivan" and result = 17
    or
    this = "Edmund" and result = 29
    or
    this = "Wilson" and result = 27
    or
    this = "Perry" and result = 31
    or
    this = "Matthew" and result = 55
    or
    this = "Simba" and result = 8
    or
    this = "Nala" and result = 7
    or
    this = "Rafiki" and result = 76
    or
    this = "Shenzi" and result = 67
  }

  /** Gets the height of the person (in cm). If the person is deceased, there is no result. */
  float getHeight() {
    this = "Ronil" and result = 183.0
    or
    this = "Dina" and result = 155.1
    or
    this = "Ravi" and result = 175.2
    or
    this = "Bruce" and result = 191.3
    or
    this = "Jo" and result = 163.4
    or
    this = "Aida" and result = 182.6
    or
    this = "Esme" and result = 176.9
    or
    this = "Charlie" and result = 189.7
    or
    this = "Fred" and result = 179.4
    or
    this = "Meera" and result = 160.1
    or
    this = "Maya" and result = 153.0
    or
    this = "Chad" and result = 168.5
    or
    this = "Tiana" and result = 149.7
    or
    this = "Laura" and result = 87.5
    or
    this = "George" and result = 96.4
    or
    this = "Will" and result = 167.1
    or
    this = "Mary" and result = 159.8
    or
    this = "Almira" and result = 62.1
    or
    this = "Susannah" and result = 145.8
    or
    this = "Rhoda" and result = 180.1
    or
    this = "Cynthia" and result = 161.8
    or
    this = "Eunice" and result = 153.2
    or
    this = "Olive" and result = 179.9
    or
    this = "Virginia" and result = 165.1
    or
    this = "Angeline" and result = 172.3
    or
    this = "Helen" and result = 163.1
    or
    this = "Cornelia" and result = 160.8
    or
    this = "Harriet" and result = 163.2
    or
    this = "Mahala" and result = 157.7
    or
    this = "Abby" and result = 174.5
    or
    this = "Margaret" and result = 165.6
    or
    this = "Deb" and result = 171.6
    or
    this = "Minerva" and result = 168.7
    or
    this = "Severus" and result = 188.8
    or
    this = "Lavina" and result = 155.1
    or
    this = "Adeline" and result = 165.5
    or
    this = "Cath" and result = 147.8
    or
    this = "Elisa" and result = 129.4
    or
    this = "Lucretia" and result = 153.6
    or
    this = "Anne" and result = 140.4
    or
    this = "Eleanor" and result = 151.1
    or
    this = "Joanna" and result = 167.2
    or
    this = "Adam" and result = 155.5
    or
    this = "Agnes" and result = 156.8
    or
    this = "Rosanna" and result = 162.4
    or
    this = "Clara" and result = 158.6
    or
    this = "Melissa" and result = 182.3
    or
    this = "Amy" and result = 147.1
    or
    this = "Isabel" and result = 121.4
    or
    this = "Jemima" and result = 149.8
    or
    this = "Cordelia" and result = 151.7
    or
    this = "Melinda" and result = 154.4
    or
    this = "Delila" and result = 163.4
    or
    this = "Jeremiah" and result = 167.5
    or
    this = "Elijah" and result = 184.5
    or
    this = "Hester" and result = 152.7
    or
    this = "Walter" and result = 159.6
    or
    this = "Oliver" and result = 192.4
    or
    this = "Hugh" and result = 173.1
    or
    this = "Aaron" and result = 176.6
    or
    this = "Reuben" and result = 169.9
    or
    this = "Eli" and result = 180.4
    or
    this = "Amos" and result = 167.4
    or
    this = "Augustus" and result = 156.5
    or
    this = "Theodore" and result = 176.6
    or
    this = "Ira" and result = 54.1
    or
    this = "Timothy" and result = 172.2
    or
    this = "Cyrus" and result = 157.9
    or
    this = "Horace" and result = 169.3
    or
    this = "Simon" and result = 157.1
    or
    this = "Asa" and result = 149.4
    or
    this = "Frank" and result = 167.2
    or
    this = "Nelson" and result = 173.0
    or
    this = "Leonard" and result = 172.0
    or
    this = "Harrison" and result = 126.0
    or
    this = "Anthony" and result = 98.4
    or
    this = "Louis" and result = 186.8
    or
    this = "Milton" and result = 157.8
    or
    this = "Noah" and result = 190.5
    or
    this = "Cornelius" and result = 183.1
    or
    this = "Abdul" and result = 182.0
    or
    this = "Warren" and result = 175.0
    or
    this = "Harvey" and result = 169.3
    or
    this = "Dennis" and result = 160.4
    or
    this = "Wesley" and result = 139.8
    or
    this = "Sylvester" and result = 188.2
    or
    this = "Gilbert" and result = 177.6
    or
    this = "Sullivan" and result = 168.3
    or
    this = "Edmund" and result = 159.2
    or
    this = "Wilson" and result = 167.6
    or
    this = "Perry" and result = 189.1
    or
    this = "Matthew" and result = 167.2
    or
    this = "Simba" and result = 140.1
    or
    this = "Nala" and result = 138.0
    or
    this = "Rafiki" and result = 139.3
    or
    this = "Shenzi" and result = 171.1
  }

  /** Gets the location of the person's home ("north", "south", "east", or "west"). If the person is deceased, there is no result. */
  string getLocation() {
    this = "Ronil" and result = "north"
    or
    this = "Dina" and result = "north"
    or
    this = "Ravi" and result = "north"
    or
    this = "Bruce" and result = "south"
    or
    this = "Jo" and result = "west"
    or
    this = "Aida" and result = "east"
    or
    this = "Esme" and result = "east"
    or
    this = "Charlie" and result = "south"
    or
    this = "Fred" and result = "west"
    or
    this = "Meera" and result = "south"
    or
    this = "Maya" and result = "south"
    or
    this = "Chad" and result = "south"
    or
    this = "Tiana" and result = "west"
    or
    this = "Laura" and result = "south"
    or
    this = "George" and result = "south"
    or
    this = "Will" and result = "south"
    or
    this = "Mary" and result = "south"
    or
    this = "Almira" and result = "south"
    or
    this = "Susannah" and result = "north"
    or
    this = "Rhoda" and result = "north"
    or
    this = "Cynthia" and result = "north"
    or
    this = "Eunice" and result = "north"
    or
    this = "Olive" and result = "west"
    or
    this = "Virginia" and result = "west"
    or
    this = "Angeline" and result = "west"
    or
    this = "Helen" and result = "west"
    or
    this = "Cornelia" and result = "east"
    or
    this = "Harriet" and result = "east"
    or
    this = "Mahala" and result = "east"
    or
    this = "Abby" and result = "east"
    or
    this = "Margaret" and result = "east"
    or
    this = "Deb" and result = "east"
    or
    this = "Minerva" and result = "south"
    or
    this = "Severus" and result = "north"
    or
    this = "Lavina" and result = "east"
    or
    this = "Adeline" and result = "west"
    or
    this = "Cath" and result = "east"
    or
    this = "Elisa" and result = "east"
    or
    this = "Lucretia" and result = "north"
    or
    this = "Anne" and result = "north"
    or
    this = "Eleanor" and result = "south"
    or
    this = "Joanna" and result = "south"
    or
    this = "Adam" and result = "east"
    or
    this = "Agnes" and result = "east"
    or
    this = "Rosanna" and result = "east"
    or
    this = "Clara" and result = "east"
    or
    this = "Melissa" and result = "west"
    or
    this = "Amy" and result = "west"
    or
    this = "Isabel" and result = "west"
    or
    this = "Jemima" and result = "west"
    or
    this = "Cordelia" and result = "west"
    or
    this = "Melinda" and result = "west"
    or
    this = "Delila" and result = "south"
    or
    this = "Jeremiah" and result = "north"
    or
    this = "Elijah" and result = "north"
    or
    this = "Hester" and result = "east"
    or
    this = "Walter" and result = "east"
    or
    this = "Oliver" and result = "east"
    or
    this = "Hugh" and result = "south"
    or
    this = "Aaron" and result = "south"
    or
    this = "Reuben" and result = "west"
    or
    this = "Eli" and result = "west"
    or
    this = "Amos" and result = "east"
    or
    this = "Augustus" and result = "south"
    or
    this = "Theodore" and result = "west"
    or
    this = "Ira" and result = "south"
    or
    this = "Timothy" and result = "north"
    or
    this = "Cyrus" and result = "north"
    or
    this = "Horace" and result = "east"
    or
    this = "Simon" and result = "east"
    or
    this = "Asa" and result = "east"
    or
    this = "Frank" and result = "west"
    or
    this = "Nelson" and result = "west"
    or
    this = "Leonard" and result = "west"
    or
    this = "Harrison" and result = "north"
    or
    this = "Anthony" and result = "north"
    or
    this = "Louis" and result = "north"
    or
    this = "Milton" and result = "south"
    or
    this = "Noah" and result = "south"
    or
    this = "Cornelius" and result = "east"
    or
    this = "Abdul" and result = "east"
    or
    this = "Warren" and result = "west"
    or
    this = "Harvey" and result = "west"
    or
    this = "Dennis" and result = "west"
    or
    this = "Wesley" and result = "west"
    or
    this = "Sylvester" and result = "south"
    or
    this = "Gilbert" and result = "east"
    or
    this = "Sullivan" and result = "east"
    or
    this = "Edmund" and result = "north"
    or
    this = "Wilson" and result = "north"
    or
    this = "Perry" and result = "west"
    or
    this = "Matthew" and result = "east"
    or
    this = "Simba" and result = "south"
    or
    this = "Nala" and result = "south"
    or
    this = "Rafiki" and result = "north"
    or
    this = "Shenzi" and result = "west"
  }

  /** Holds if the person is deceased. */
  predicate isDeceased() {
    this =
      [
        "Ernest", "Gertrude", "Oscar", "Lilian", "Edwin", "Raymond", "Elgar", "Elmer", "Herbert",
        "Maude", "Mae", "Otto", "Ophelia", "Parsley", "Sage", "Rosemary", "Thyme", "Garfunkel",
        "King Basil"
      ]
  }

  /** Gets a parent of the person (alive or deceased). */
  Person getAParent() {
    this = "Stephen" and result = "Edmund"
    or
    this = "Edmund" and result = "Augustus"
    or
    this = "Augustus" and result = "Stephen"
    or
    this = "Abby" and result = "Cornelia"
    or
    this = "Abby" and result = "Amos"
    or
    this = "Abdul" and result = "Susannah"
    or
    this = "Adam" and result = "Amos"
    or
    this = "Adeline" and result = "Melinda"
    or
    this = "Adeline" and result = "Frank"
    or
    this = "Agnes" and result = "Abdul"
    or
    this = "Aida" and result = "Agnes"
    or
    this = "Almira" and result = "Sylvester"
    or
    this = "Amos" and result = "Eunice"
    or
    this = "Amy" and result = "Noah"
    or
    this = "Amy" and result = "Chad"
    or
    this = "Angeline" and result = "Reuben"
    or
    this = "Angeline" and result = "Lucretia"
    or
    this = "Anne" and result = "Rhoda"
    or
    this = "Anne" and result = "Louis"
    or
    this = "Anthony" and result = "Lavina"
    or
    this = "Anthony" and result = "Asa"
    or
    this = "Asa" and result = "Cornelia"
    or
    this = "Cath" and result = "Harriet"
    or
    this = "Charlie" and result = "Matthew"
    or
    this = "Clara" and result = "Ernest"
    or
    this = "Cornelia" and result = "Cynthia"
    or
    this = "Cornelius" and result = "Eli"
    or
    this = "Deb" and result = "Margaret"
    or
    this = "Dennis" and result = "Fred"
    or
    this = "Eli" and result = "Susannah"
    or
    this = "Elijah" and result = "Delila"
    or
    this = "Elisa" and result = "Deb"
    or
    this = "Elisa" and result = "Horace"
    or
    this = "Esme" and result = "Margaret"
    or
    this = "Frank" and result = "Eleanor"
    or
    this = "Frank" and result = "Cyrus"
    or
    this = "George" and result = "Maya"
    or
    this = "George" and result = "Wilson"
    or
    this = "Gilbert" and result = "Cornelius"
    or
    this = "Harriet" and result = "Cynthia"
    or
    this = "Harrison" and result = "Louis"
    or
    this = "Harvey" and result = "Fred"
    or
    this = "Helen" and result = "Susannah"
    or
    this = "Hester" and result = "Edwin"
    or
    this = "Hugh" and result = "Cyrus"
    or
    this = "Hugh" and result = "Helen"
    or
    this = "Ira" and result = "Maya"
    or
    this = "Ira" and result = "Wilson"
    or
    this = "Isabel" and result = "Perry"
    or
    this = "Isabel" and result = "Harvey"
    or
    this = "Jemima" and result = "Melinda"
    or
    this = "Jemima" and result = "Frank"
    or
    this = "Ernest" and result = "Lilian"
    or
    this = "Ernest" and result = "Oscar"
    or
    this = "Gertrude" and result = "Ophelia"
    or
    this = "Gertrude" and result = "Raymond"
    or
    this = "Lilian" and result = "Elgar"
    or
    this = "Lilian" and result = "Mae"
    or
    this = "Raymond" and result = "Elgar"
    or
    this = "Raymond" and result = "Mae"
    or
    this = "Elmer" and result = "Ophelia"
    or
    this = "Elmer" and result = "Raymond"
    or
    this = "Herbert" and result = "Ophelia"
    or
    this = "Herbert" and result = "Raymond"
    or
    this = "Maude" and result = "Ophelia"
    or
    this = "Maude" and result = "Raymond"
    or
    this = "Otto" and result = "Elgar"
    or
    this = "Otto" and result = "Mae"
    or
    this = "Edwin" and result = "Otto"
    or
    this = "Parsley" and result = "Simon"
    or
    this = "Parsley" and result = "Garfunkel"
    or
    this = "Sage" and result = "Simon"
    or
    this = "Sage" and result = "Garfunkel"
    or
    this = "Rosemary" and result = "Simon"
    or
    this = "Rosemary" and result = "Garfunkel"
    or
    this = "Thyme" and result = "Simon"
    or
    this = "Thyme" and result = "Garfunkel"
    or
    this = "King Basil" and result = "Ophelia"
    or
    this = "King Basil" and result = "Raymond"
    or
    this = "Jo" and result = "Theodore"
    or
    this = "Joanna" and result = "Shenzi"
    or
    this = "Laura" and result = "Maya"
    or
    this = "Laura" and result = "Wilson"
    or
    this = "Lavina" and result = "Mahala"
    or
    this = "Lavina" and result = "Walter"
    or
    this = "Leonard" and result = "Cyrus"
    or
    this = "Leonard" and result = "Helen"
    or
    this = "Lucretia" and result = "Eleanor"
    or
    this = "Lucretia" and result = "Cyrus"
    or
    this = "Mahala" and result = "Eunice"
    or
    this = "Margaret" and result = "Cynthia"
    or
    this = "Matthew" and result = "Cyrus"
    or
    this = "Matthew" and result = "Helen"
    or
    this = "Maya" and result = "Meera"
    or
    this = "Melinda" and result = "Rafiki"
    or
    this = "Melissa" and result = "Mahala"
    or
    this = "Melissa" and result = "Walter"
    or
    this = "Nala" and result = "Bruce"
    or
    this = "Nelson" and result = "Mahala"
    or
    this = "Nelson" and result = "Walter"
    or
    this = "Noah" and result = "Eli"
    or
    this = "Olive" and result = "Reuben"
    or
    this = "Olive" and result = "Lucretia"
    or
    this = "Oliver" and result = "Matthew"
    or
    this = "Perry" and result = "Leonard"
    or
    this = "Ravi" and result = "Dina"
    or
    this = "Simba" and result = "Will"
    or
    this = "Simon" and result = "Margaret"
    or
    this = "Sullivan" and result = "Cornelius"
    or
    this = "Sylvester" and result = "Timothy"
    or
    this = "Theodore" and result = "Susannah"
    or
    this = "Tiana" and result = "Jo"
    or
    this = "Virginia" and result = "Helen"
    or
    this = "Warren" and result = "Shenzi"
    or
    this = "Wesley" and result = "Warren"
    or
    this = "Wesley" and result = "Jo"
    or
    this = "Will" and result = "Eli"
  }

  /** Holds if the person is allowed in the region. Initially, all villagers are allowed in every region. */
  predicate isAllowedIn(string region) { region = ["north", "south", "east", "west"] }
}

/** Returns a parent of the person. */
Person parentOf(Person p) { result = p.getAParent() }

Web Proxy Viewer  |  New URL  |  Original Page