{"_id": "gyNaKran6TEDdjLqL", "cmd_i": 3, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | (u.profile + u.visible).source in (u + Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User, w : u.profile | lone u->w & u.visible \n}", "derivationOf": "EYdy4GDrC4u2WEgT9", "msg": "& can be used only between 2 expressions of the same arity.\nLeft type = {this/User->this/Work}\nRight type = {this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-14 10:39:01"} {"_id": "58B2oFWSZXJsaB8c9", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all w:Work | w.visible in source.w\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "h8Y44WbPs6vCeAZG4", "msg": "The join operation here always yields an empty set.\nLeft type = {this/Work}\nRight type = {this/User->this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:04:38"} {"_id": "uoqNKArgucbifLLvM", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\nall w1, w2 : Work | all u : User | w1 != w2 and (w1 + w2) in u.profile and (w1.source = w2.source) implies no w1.ids & w2.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\nall w1, w2 : Work | all u : User | w1.source = w2.source and (w1 + w2) in u.visible and (w1 + w2) in u.profile implies no (w1.ids & w2.ids)\n}", "derivationOf": "xtnDK23vMZPukJgDb", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-5-7 13:17:05"} {"_id": "NRFr5bNmusG6tyqnS", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w:Work | w in u.visible implies lone w.ids\n}", "derivationOf": "9C8Pqm27tmhAcc4ii", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-9 01:04:34"} {"_id": "2kveCiH6NBsQ52yAt", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w: Work | visible.w in profile.w\n}\n \n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u: User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\tall w: Work | some s: Source | profile.w and w.s implies one w.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "X53tBdr5iTkfdK4L9", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/User}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 21:59:51"} {"_id": "t8SkvsHTGiz3zAjg3", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User, w:Work | w in u.profile implies (u in w.source or (some Intitution in w.source))\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\tall u:User, w:Work | w in u.profile implies lone (u.visible & w)\n}", "derivationOf": "DDYSSpN5vYzHrReMi", "msg": "The name \"Intitution\" cannot be found.", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-1-8 22:30:26"} {"_id": "iJC3XyWuHcZz4ayB6", "cmd_i": 3, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\nall w1, w2 : Work | all u : User | w1 != w2 and (w1 + w2) in u.profile and (w1.source = w2.source) implies no w1.ids & w2.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\nall w1, w2 : Work | all u : User | (w1.ids & w2.ids) and (w1 + w2) in u.visible and (w1 + w2) in u.profile )implies w1.source = w2.source \n}", "derivationOf": "5eDRupoHg5kb5Lffz", "msg": "There are 38 possible tokens that can appear here:\n! # ( * @ Int NAME NUMBER STRING String Time ^ after all always before disj eventually fun historically iden int let lone no none once one pred seq set some sum this univ { } ~", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-5-7 13:12:50"} {"_id": "YFQKkgnxHzQyMDnuW", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | some (User<:visible).w implies some w.(User<:profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "jBtcA7RWJ784RjNRc", "msg": "The join operation here always yields an empty set.\nLeft type = {this/Work}\nRight type = {this/User->this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-18 19:49:21"} {"_id": "zWDoBayKtwjBgRgRj", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tvisible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User | (u.profile).source in (u+Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s:Source,u:User | lone (u.profile).s\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "J2bGDz4TbiKokqYr2", "msg": "This cannot be a legal relational join where\nleft hand side is u . (this/User <: profile) (type = {this/Work})\nright hand side is s (type = {this/Source})", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:06:47"} {"_id": "KpPCSjdwQrNSEr97X", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tvisible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User , w : u.profile | w.source = u || w.source in Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "pv6GdYWkodJMubKD7", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-12 11:13:34"} {"_id": "SfRGvbCx7Wz3pnsiA", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | (u.profile) = (source.u + source.Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "nGGorXzkopkXnTcGe", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-12 11:03:04"} {"_id": "RGtxktTiRbxsA6eom", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | (User<:visible).w in (User<:profile).w \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall x, y : Work | no x.ids = y.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "rnu6eyJPQs4N9EMEX", "msg": "= can be used only between 2 expressions of the same arity, or between 2 integer expressions.\nLeft type = {PrimitiveBoolean}\nRight type = {this/Id}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2019-10-18 20:15:18"} {"_id": "96AqeGtWQMFwYgum7", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w: Work | visible.w in profile.w\n}\n \n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u: User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\tall w: Work | some s: Source | profile.w in w.Source implies one w.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "tfhTC26EDPdNPcSbx", "msg": "This cannot be a legal relational join where\nleft hand side is w (type = {this/Work})\nright hand side is this/Source (type = {this/Source})", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 21:58:15"} {"_id": "2R3SRMahRi9xxDJw6", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w1,w2:Work | ((w1=w2) and (w1 in u.visible)) implies w2 not in u.visible\n}", "derivationOf": "34fqKAY7bBQ35wDJX", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-9 01:19:23"} {"_id": "7Mq9n9EZaSzkSZzvn", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\t\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | some w : Work | u->w in profile implies (w.source in Institution or w.source in User)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "crAFaEARSNMZ8YMgS", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-23 08:34:15"} {"_id": "hX537j6paibPQhFmb", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tWork.source in (User+Instituition)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "xnfD6uxbYJLdjSTkx", "msg": "The name \"Instituition\" cannot be found.", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-1-9 03:43:01"} {"_id": "ePB4odBt2sPq2vtgw", "cmd_i": 3, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { \n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n\tall u:User | all w:(u.profile) | (w.source) in (u + Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \tall u:User | all w:(u.visible) | lone w.ids in (u.visible).ids\n}", "derivationOf": "uLyxBRYiMK62iJAvK", "msg": "This must be a set or relation.\nInstead, it has the following possible type(s):\n{PrimitiveBoolean}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-1-9 04:13:32"} {"_id": "frXBc8bYhNS54vf5s", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w: Work | visible.w in profile.w\n}\n \n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u: User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\tall w: Work | some s: Source | profile.w in w.s\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "hHwFETopLtMZteNKy", "msg": "This cannot be a legal relational join where\nleft hand side is w (type = {this/Work})\nright hand side is s (type = {this/Source})", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 21:56:54"} {"_id": "t8dJRs3YKYj7MjCMk", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall w1, w2 : Work, u : User | w1 != w2 and (w1 + w2) in u.profile and (w1.source = w2.source) implies no w1.ids & w2.ids\n}\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\tall u : User, w1, w2 : Work | w1 != w2 and (w1 + w2) in u.visible implies (w1.source != w2.source and w1.ids != w2.ids)\n}", "derivationOf": "LCYCcPNXMQg6Pntas", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-11-3 20:49:13"} {"_id": "9C8Pqm27tmhAcc4ii", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w:Work | w in u.profile implies lone w.ids\n}", "derivationOf": "BNhDrXexA8Bd5exdY", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-9 01:03:21"} {"_id": "s5696t8p2d4P8Tbmb", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all w:Work | w.visible = source.w\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "viZtqXQFP9TqpsyTo", "msg": "The join operation here always yields an empty set.\nLeft type = {this/Work}\nRight type = {this/User->this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:06:10"} {"_id": "6LC4twSy2Lc3u8RKk", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tvisible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User | (u.profile).source in (u+Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n visible in User -> lone Work\n}", "derivationOf": "KK8pKeWndTERaxQoC", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 15:12:00"} {"_id": "3rNdxZkr692S5WZzW", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tvisible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User | (u.profile).source in (u+Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n ids.visible in Id -> lone User\n}", "derivationOf": "gRkfbWov5Bbb8Zi6Y", "msg": "The join operation here always yields an empty set.\nLeft type = {this/Work->this/Id}\nRight type = {this/User->this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 14:40:52"} {"_id": "oPQaiqj3YZyZTQJvY", "cmd_i": 0, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all w:Work | w.source.visible.w\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "odMq47qmfb3AEkkhw", "msg": "This cannot be a legal relational join where\nleft hand side is w . (this/Work <: source) . (this/User <: visible) (type = {this/Work})\nright hand side is w (type = {this/Work})", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:08:23"} {"_id": "hGKxDGLiF9b2vRssF", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall u:User,s:Source,i:Id | lone (u.profile & source.s & ids.i)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, i:Id, w:Work | lone (u.visible & ids.i)\n}", "derivationOf": "QzjmGhC6rtCZxNMzP", "msg": "This variable is unused.", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-13 19:17:52"} {"_id": "nd3zNPf5m8XwRERDB", "cmd_i": 3, "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all x : User | x.profile.source in Institution + x\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s: Source, u: User| ((source.s & u.profile)<:ids).~((source.s & u.profile)<:ids) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n lone (User->Work) in visible\n}", "derivationOf": "P8aSRf8BqqykXTQQq", "msg": "This must be a set or relation.\nInstead, it has the following possible type(s):\n{PrimitiveBoolean}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-18 22:46:36"} {"_id": "ctuviwF8XnATXbsrX", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User, w : Work | u->w in profile implies (u.source in User or u.source in Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "msg": "The join operation here always yields an empty set.\nLeft type = {this/User}\nRight type = {this/Work->this/Source}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-22 07:42:13"} {"_id": "DqWFoHNxpdiZFsT3e", "cmd_i": 3, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tvisible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User | (u.profile).source in (u+Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s:Source,u:User | ((u.profile) & (source.s)).ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n profile.ids in User -> lone Id\n}", "derivationOf": "LfrL22TmwAsFmDu2q", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/Id}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 14:31:42"} {"_id": "YMkjB5Kd5DgFTdjT8", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w1, w2 : Work | w1->w2 in visible and w1->w2 in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "AC9Fp46YgcQ6memWw", "msg": "Subset operator is redundant, because the left and right subexpressions are always disjoint.\nLeft type = {this/Work->this/Work}\nRight type = {this/User->this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-11-2 23:28:26"} {"_id": "uC2R59oWorQxkKWXy", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall w1, w2 : Work, u : User | w1 != w2 and (w1 + w2) in u.profile and (w1.source = w2.source) implies no w1.ids & w2.ids\n}\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n}", "derivationOf": "oNCxxSSrcFkpz6jaD", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2019-11-3 20:37:12"} {"_id": "xEdBjjymT25spBNhW", "cmd_i": 0, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tWork in User<:profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "cWW9r4zp6LMR7zeEC", "msg": "in can be used only between 2 expressions of the same arity.\nLeft type = {this/Work}\nRight type = {this/User->this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2019-10-18 19:44:24"} {"_id": "Nf2S6zpPpbKiHzj46", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible = (visible & profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | (u.profile).source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all w1, w2 : Work, u : User {\n (w1 != w2 and ((w1 + w2) in u.profile) and w1.source = w2.source) implies no (w1.ids & w2.ids)\n }\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "mAHwPBSzBkn4gNEFd", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-23 04:53:35"} {"_id": "K3GDWgFCN5un6Cfvm", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\t\tall u: User| profile.source in u or profile.source in Institution\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u: User | all w: Work | w.source in u or w.source in Institution \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "9FSd2PPSkDfGZDHnt", "msg": "There are 38 possible tokens that can appear here:\n! # ( * @ Int NAME NUMBER STRING String Time ^ after all always before disj eventually fun historically iden int let lone no none once one pred seq set some sum this univ { } ~", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:12:36"} {"_id": "sDLJQh4DCzvXancwh", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "KnNktxckiAf6FbqFY", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2019-10-21 14:40:29"} {"_id": "CYK4jWa6mxLzZ47Nv", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible = (visible & profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | ((u->profile).source in u) or ((u->profile).source in Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User, w : Work | one (u.profile.w.id)\n}", "derivationOf": "6ZPmqzJjtbfknQ9wF", "msg": "in can be used only between 2 expressions of the same arity.\nLeft type = {this/User->this/User->this/Source}\nRight type = {this/User}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:45:00"} {"_id": "tFbq74EfDvnNFKdnX", "cmd_i": 3, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w1,w2:Work, i:Id | (w1 in u.visible and w2 in u.visible) implies (w1.i != w2.i)\n}", "derivationOf": "9B3iXAfK2vtTxKXs4", "msg": "This cannot be a legal relational join where\nleft hand side is w1 (type = {this/Work})\nright hand side is i (type = {this/Id})", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-1-9 01:31:47"} {"_id": "AuzxczeXW4zALZSX8", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | (User<:visible).w in (User<:profile).w \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | some (u<:profile).Work implies some u.(Work<:source) & Institution.(Work<:source) \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "aJJq7WfnJRaSQBKHH", "msg": "The join operation here always yields an empty set.\nLeft type = {this/User}\nRight type = {this/Work->this/Source}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-18 20:03:21"} {"_id": "LKkoGYrufgWaBxs5s", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | (u.profile + u.visible).source in (u + Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t(profile.ids).~(profile.ids) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "rR7dXGHRFEjGBYfvS", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-14 10:28:35"} {"_id": "cYkZaAK3DBnBjXMnp", "cmd_i": 0, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall w:Work,u:User | w in u.profile implies (w.source:>u or w.source:>Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "vPCB9AKdSj83Rxgsk", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/User}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-18 14:51:13"} {"_id": "mBGPdqQQweqKG6dgb", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n \tall w:Work, u:User | w in u.visible implies w in u.profile \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\t\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall w:Work, w1:Work | (w in User.profile && w1 in User.profile) implies no (w.ids & w1.ids)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "ZGzpJM83xfhtQ8cvS", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-21 18:54:09"} {"_id": "35Marw55Mi8JX6voX", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall u : User, s : Source | one u.profile & source.s \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "apzN6fSqDbeekRCn2", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:13:11"} {"_id": "ikM7eGQYvr36DmuLM", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | (User<:visible).w in (User<:profile).w \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | some (Work<:source).u or (Work<:source).Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "ZMFxQb43Lg77oXpTH", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2019-10-18 19:56:45"} {"_id": "oSXzrvt2akjnL3u7P", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\n\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u: User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u: User | u.profile.source in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "DcPcsTj8zNc4uPyaL", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-1-2 18:29:13"} {"_id": "CzkxM6526pxjZEKnP", "cmd_i": 0, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\n\n\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tprofile.source and source.visible\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\nids-profile\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\n}", "derivationOf": "XTKupHCLAdZe3eDgr", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/User->this/Source}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:15:08"} {"_id": "r8pPgTYFT8vqBxh8z", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | (u.profile + u.visible).source in (u + Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n ~ids.ids in iden\n}", "derivationOf": "G3xjBCJBKoY6vPcJG", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-14 10:51:20"} {"_id": "opGP7Su78s3tbxouv", "cmd_i": 3, "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all x : User | x.profile.source in Institution + x\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s: Source, u: User| ((source.s & u.profile)<:ids).~((source.s & u.profile)<:ids) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u: User| ((source.s & u.profile)<:ids).~((source.s & u.profile)<:ids) in iden\n}", "derivationOf": "inRkRJoyqYyNCSW2k", "msg": "The name \"s\" cannot be found.", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-18 22:57:20"} {"_id": "MQiXGHDRwfj3Evvm8", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\t\tUser.visible = User.profile\n}\n \n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u: User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "oKsHW3sgfzdtwf9tC", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 21:45:20"} {"_id": "w7tvHH7rRvCzpQSNk", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User , w:Work, i:Intitution | w in u.profile && w.source = u || w.source = i\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "PKaoomahMBfbCWPh9", "msg": "The name \"Intitution\" cannot be found.", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2019-10-21 14:49:17"} {"_id": "NbTqzjoWMGub7eyf2", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \n all w:Work, w1:Work | (w in User.profile && w1 in User.profile) implies no (w.ids & w1.ids)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "yv9rvb2YAphXMHenm", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-23 04:37:58"} {"_id": "myrHBXNK8dFSZXgHY", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\t\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\tall u:User, w:Work | w in u.profile implies lone (u.visible & w)\n}", "derivationOf": "wLnYwvA8yvtjsQcmp", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-8 22:28:50"} {"_id": "8byEvHuXbfb8s8Krn", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-17 10:51:40"} {"_id": "SG6CCnX9odrCeKHXX", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w1,w2:Work | (w1 in u.visible and w2 in u.visible) implies no (w1.ids & w2.ids) and (w1.source = w2.source or w1.source != w2.source)\n}", "derivationOf": "i92e2vXrnkJvmP7zD", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-9 01:27:09"} {"_id": "seWSxevA39sFnimuE", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all x : User | x.profile.source in Institution + x\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n ~ids.ids in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "uDjCPpR7nJpxc8z6K", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 22:15:52"} {"_id": "EDMkLJtBkkHpHA2AC", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all x : User | x.profile.source in Institution + x\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s: Source, u:User| ((source.s & u.profile)<:ids).~((source.s & u.profile)<:ids) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "6yCpnMKM6tr4y3rhP", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-18 22:24:22"} {"_id": "dnPZZESojinhBP5hw", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\t\tsome w: Work | all u: User| w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "aph6PpWZsepH4xaAt", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:02:48"} {"_id": "RML5Jyzc5HE32syfa", "cmd_i": 0, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\n\n\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tWork.visible in source.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "QFa5qWTcFSABqw3fJ", "msg": "in can be used only between 2 expressions of the same arity.\nLeft type = {none}\nRight type = {this/Work->this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 10:58:02"} {"_id": "9RbNNYpfsytZuik5o", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\nall w1, w2 : Work | all u : User | w1 != w2 and (w1 + w2) in u.profile and (w1.source = w2.source) implies no w1.ids & w2.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\nall w1, w2 : Work | all u : User | w1.ids = w2.ids and (w1 + w2) in u.profile implies (w1 in u.visible iff not w2 in u.visible)\n}", "derivationOf": "umaJZbpgnGGHafJkz", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-5-7 12:57:59"} {"_id": "mHbQp3AWDr9s9dTX9", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall w1, w2 : Work | some u : User, s : Source | w1 != w2 and (w1 + w2) in u.profile and (w1.source = w2.source) implies no w1.ids & w2.ids\n}\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n}", "derivationOf": "vnnSr5GqfBMTT7No9", "msg": "This variable is unused.", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-11-3 20:36:00"} {"_id": "KfgDdrgRZ8fxhYLTC", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\nall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "Qazwsm8ofdFcotqNm", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-1-8 22:24:25"} {"_id": "AtDsPGZstnCRqPMGL", "cmd_i": 0, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all u : User | profile.(u.visible)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/User}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 10:47:54"} {"_id": "8G6ZH7QiYzSsiSd5r", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\nall w1, w2 : Work | all u : User | w1 != w2 and (w1 + w2) in u.profile and (w1.source = w2.source) implies no w1.ids & w2.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\nall w1, w2 : Work | all u : User | (w1 + w2) in u.visible and (w1 + w2) in u.profile implies w1.ids = w2.ids \n}", "derivationOf": "WeWKKNkRtAR8Y6unw", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-5-7 13:01:05"} {"_id": "DpCmuEQXt9nQN63tC", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\t\tsome w: Work | all u: User| w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u: User | all w: Work | w.source in u or w.source in Institution \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "KhzbTEi3ST7fAoWwB", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:10:39"} {"_id": "64KJLyJLnY56qpTux", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w1,w2:Work | (w1 in u.profile and w2 in u.profile) implies (w1 in u.visible or w2 in u.visible)\n}", "derivationOf": "8sveZNLtb5vzbXtp9", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-9 01:39:21"} {"_id": "ek9zdhcuJwu5EwG4X", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User ,i:Institution | u.profile.source = u\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "3QyiqNP9kfBSfLDAu", "msg": "This variable is unused.", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-21 14:52:48"} {"_id": "k2CxoEfDbEgL8ncyG", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\t\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \tall u:User, w1, w2:Work | w1 in u.profile and w2 in u.profile implies w1.ids not in w2.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\n}", "derivationOf": "eQHAbSxB3R7L2TtMK", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-8 22:26:52"} {"_id": "LGxDFeYaPv9NKJmx5", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible = (visible & profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | (u->profile)->source in (u + Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "oB7ENfy9EWKFM3c2q", "msg": "in can be used only between 2 expressions of the same arity.\nLeft type = {this/User->this/User->this/Work->this/Work->this/Source}\nRight type = {this/Source}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:10:58"} {"_id": "ezW2ngnh58SQxzdYE", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\nall w1, w2 : Work | all u : User | w1 != w2 and (w1 + w2) in u.profile and (w1.source = w2.source) implies no w1.ids & w2.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\nall w1, w2 : Work | all u : User | (w1 + w2) in u.visible and (w1 + w2) in u.profile implies no (w1.ids & w2.ids)\n}", "derivationOf": "7REKe4833aLPFhA2b", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-5-7 13:19:02"} {"_id": "DuZsLXyzw82JpirkE", "cmd_i": 3, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n \tall w:Work, u:User | w in u.visible implies w in u.profile \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\t\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w1,w2:Work | w1.visible and w2.visible implies w1!=w2\n}", "derivationOf": "mBGPdqQQweqKG6dgb", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{none}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-1-21 18:55:36"} {"_id": "YSbZW4YJpsFPxhkQw", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | (User<:visible).w in (User<:profile).w \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | (u<:profile).Work in (Work<:source).u + (Work<:source).Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tno Work.id = Work.id\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "GSbRMNKfXfiLie4ij", "msg": "The name \"id\" cannot be found.", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2019-10-18 20:10:35"} {"_id": "KXaxN2NSxoSKcDPK9", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | (User<:visible).w in (User<:profile).w \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall x, y : Work | no x.ids = y.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "acmazusFzNYZmfQNx", "msg": "= can be used only between 2 expressions of the same arity, or between 2 integer expressions.\nLeft type = {PrimitiveBoolean}\nRight type = {this/Id}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2019-10-18 20:15:29"} {"_id": "Ep8NWF5r49ZbbMFWN", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all w:Work,u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "6wWJMkypQoqRtkSzS", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-19 09:14:11"} {"_id": "N4Z8Lp3Cg3tGsWy6b", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible = (visible & profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | ((u->profile).source) in (Institution & u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User, w : Work | one (u.profile.w.id)\n}", "derivationOf": "5tnbW2oCdjy5oNiQZ", "msg": "in can be used only between 2 expressions of the same arity.\nLeft type = {this/User->this/User->this/Source}\nRight type = {none}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:48:45"} {"_id": "wdAfX52WBHuEdL4xA", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | visible.w in profile.w\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in Institution + u\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tlet s = {u : User, w : Work, s : source | u -> w -> -> s in profile . source} | \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "XyvmhMKTKZxjM8tMc", "msg": "There are 22 possible tokens that can appear here:\n( * @ Int NAME NUMBER STRING String Time ^ disj fun iden int none pred seq sum this univ { ~", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-18 16:50:03"} {"_id": "Rvdx2DGSJC5bymc83", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all x : User | x.profile.source in Institution + x\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s: Source, u: User | ((source.s & u.profile)<:ids).~((source.s & u.profile)<:ids) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u: User| ((u.profile)<:ids).~(u.profile<:ids) in iden\n}", "derivationOf": "iDvXbfgWjtMbXhK2e", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-19 08:34:30"} {"_id": "m9rLGJzkauHqa4eNj", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w1,w2:Work | ((w1=w2) implies not ((w1 in u.visible)) and (w2 in u.visible))\n}", "derivationOf": "aLM89xY4PAMQPtkYt", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-5-7 12:40:23"} {"_id": "6hTffXB5hReGEkznX", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n Id in User.(profile.ids)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "eZzQB2NQk6yTPPq48", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:14:46"} {"_id": "4ZE2dNLo22E7sweZM", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s: Source, u: User| ((source.s & u.profile)<:ids).~((source.s & u.profile)<:ids) in iden\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\t(visible.ids).~(visible.ids) in iden\n}", "derivationOf": "SfRWdz8fahkCp2chd", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-18 22:28:01"} {"_id": "nx7dsrpjCDeWqifuK", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s: Source, u: User| ((source.s & u.profile)<:ids).~((source.s & u.profile)<:ids) in iden\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\t~((visible:>(User.profile)).ids).((visible:>(User.profile)).ids) in iden\n}", "derivationOf": "2JDFDhi737t8LAcFQ", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 22:33:17"} {"_id": "NrcCScHd2zQwB3Lof", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible = (visible & profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | (u.profile).source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all w1, w2 : Work, u : User {\n (w1 != w2 and ((w1 + w2) in u.profile) and w1.source = w2.source) implies no (w1.ids & w2.ids)\n }\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "8a8oLa4neJM7Frf7F", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-23 04:53:39"} {"_id": "uLyxBRYiMK62iJAvK", "cmd_i": 3, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { \n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n\tall u:User | all w:(u.profile) | (w.source) in (u + Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \tall u:User | all w:(u.visible) | lone w.ids in (u.visible)\n}", "derivationOf": "mjZTxTxjn9TioB8ia", "msg": "This must be a set or relation.\nInstead, it has the following possible type(s):\n{PrimitiveBoolean}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-1-9 04:12:54"} {"_id": "WB2hD4eJKccRpBhRM", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all w:Work | w in User.visible:>Work implies w in User.profile:>Work\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "u5eJnLRRPCQg94qz2", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-19 09:13:26"} {"_id": "jjmbrChp3rgfnisEG", "cmd_i": 3, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tvisible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User | (u.profile).source in (u+Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s:Source,u:User | lone ((u.profile)&(source.s))\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User | (u.visible.ids)\n}", "derivationOf": "6AqenXqnHjAw2ZmyB", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/Id}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 13:58:45"} {"_id": "J2bGDz4TbiKokqYr2", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tvisible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User | (u.profile).source in (u+Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s:Source,u:User | lone ((u.profile).s).id\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "2QtTcM5oSPdnP7JAr", "msg": "This cannot be a legal relational join where\nleft hand side is u . (this/User <: profile) (type = {this/Work})\nright hand side is s (type = {this/Source})", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:05:43"} {"_id": "xGZZ9iNQ8KAiQF6P8", "cmd_i": 0, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tsome User.visible.Work\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "bKycSL7xqEEqei4mJ", "msg": "This cannot be a legal relational join where\nleft hand side is this/User . (this/User <: visible) (type = {this/Work})\nright hand side is this/Work (type = {this/Work})", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-1-8 12:12:45"} {"_id": "XiS3aYwWvEZZRaNoH", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u in u.profile.source\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "vgkugnTSrgjHCTsXy", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:11:54"} {"_id": "dPwdAQfpdbpKJxWKy", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible = (visible & profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | (u.profile).source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all w1, w2 : Work, u : User {\n (w1 != w2 and ((w1 + w2) in u.profile) and w1.source = w2.source) implies no (w1.ids & w2.ids)\n }\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "oSE6uWg2eNy7Nvpp6", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-23 04:41:44"} {"_id": "thSvihsEtYp25kjRj", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | (User<:visible).w in (User<:profile).w \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | Work.(u<:profile) in (Work<:source).u + (Work<:source).Institution \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "xGTcmGER3MR8L4AHE", "msg": "The join operation here always yields an empty set.\nLeft type = {this/Work}\nRight type = {this/User->this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-18 20:07:45"} {"_id": "JYbFYeSNxe4KsXH8r", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tvisible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User | (u.profile).source in (u+Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s:Source,u:User | lone ((u.profile) & (source.s)).ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n ~(visible.ids) in Id -> lone User\n}", "derivationOf": "3rNdxZkr692S5WZzW", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 14:42:16"} {"_id": "Te65MZ7aGK7G6Fba3", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.ids in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "EqcXY9JnHQgKBxkvy", "msg": "Subset operator is redundant, because the left and right subexpressions are always disjoint.\nLeft type = {this/Id}\nRight type = {this/Source}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-11-3 20:14:44"} {"_id": "MFTFYqXoprJnmg2GM", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible = (visible & profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | (u.profile).source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all w1, w2 : Work, u : User {\n (w1 != w2 and ((w1 + w2) in u.profile) and w1.source = w2.source) implies no (w1.ids & w2.ids)\n }\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User, w : Work {\n (w in u.profile) implies one (w.ids.(~ids) & u.profile)\n }\n}", "derivationOf": "pN6Y5KBztYb53XnxL", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-23 04:45:49"} {"_id": "H8SEdcTypdDyMytS5", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n \n}\n \n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u: User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "bxRbJE9PPLdkwCqCg", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-12 21:38:51"} {"_id": "EaiJufyxBgRTtceRs", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User, w : Work | u->w in profile implies (w<:source in User or w<:source in Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "ZXxM3J2uPwS7FmRMJ", "msg": "in can be used only between 2 expressions of the same arity.\nLeft type = {this/Work->this/Source}\nRight type = {this/User}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2019-10-22 07:42:38"} {"_id": "7AepnJjWbk96e5N5t", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { \n \tall u:User , w:Work | (w in u.profile) implies (w.source = u || w.source = Institution) \n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all w:Work, w1:Work | no (w.ids & w1.ids)\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w:Work | w in u.profile implies lone (u.visible & w)\n}", "derivationOf": "z4mqZe3FbSWffLppk", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-22 10:55:19"} {"_id": "ndKZ8eLRuhvYNGaSB", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s1,s2 : Source | s1.profile.ids in s2.profile.ids implies s1 = s2\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "nwiZMi9NWsfdNxLwS", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:14:19"} {"_id": "vgkugnTSrgjHCTsXy", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in u\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "WPG6kmhrwR3uLaTxz", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:11:32"} {"_id": "BSd63Wr9F8zMSjsAQ", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all x : User | x.profile.source in Institution + x\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s: Source, u: User | ((source.s & u.profile)<:ids).~((source.s & u.profile)<:ids) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u: User| ((u.profile)<:ids).~(u.profile<:ids) in iden\n}", "derivationOf": "9cECfjMPeTeuYDWDE", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-19 08:38:32"} {"_id": "d7REjFGQwqjhapxYt", "cmd_i": 0, "code": "* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible = (visible & profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | (u.profile).source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "msg": "There are 5 possible tokens that can appear here:\nenum fun let open pred", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-16 04:06:58"} {"_id": "9WM3HP4qQ6KNxJxbo", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w: Work | visible.w in profile.w\n}\n \n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u: User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s1, s2: Source| all u: User | s1 = s2 and u.profile.source = s1 or u.profile.source = s2 implies one u.profile.ids \n \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "idXTxpbdM8HmEeRsv", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 16:28:21"} {"_id": "k9xjX3vknmg6nCEvq", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible = (visible & profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | (u.profile).source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n}", "derivationOf": "kzbv2fgCQGxCLE8iQ", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-16 04:07:14"} {"_id": "h58zhyT5AqTXGLkFv", "cmd_i": 0, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tno Work in User.profile & User.visible\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "PnED5HjGpRuRjAcx8", "msg": "This must be a set or relation.\nInstead, it has the following possible type(s):\n{PrimitiveBoolean}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2019-10-18 19:45:41"} {"_id": "fnZTdWQ4i4EsbzYgc", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\nUser.visible in User.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | (u.profile) in (source.u + source.Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "tEBNePhZGKZcAddfq", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:14:39"} {"_id": "vk387maHdx9oQnqM6", "cmd_i": 3, "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s: Source, u: User| ((source.s & u.profile)<:ids).~((source.s & u.profile)<:ids) in iden\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\t\n \tall w : Work | some (visible.w in User and ~ids.ids in iden and ids.~ids in iden)\n}", "derivationOf": "u7w8thBwvz3jmbkjM", "msg": "This expression failed to be typechecked line 43, column 19, filename=/tmp/alloy_heredoc9343412621835427917.als", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-18 23:02:20"} {"_id": "3ooophTQnxLgWXaWe", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible = (visible & profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User, w : Work | u->profile.w.source in (u + Insitution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "iCX8NkDngsPaXTb9e", "msg": "The name \"Insitution\" cannot be found.", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:08:42"} {"_id": "mFue8e9EJ9RgxnaH5", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "KNTjuEEjusNrhsW3p", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-12 11:06:25"} {"_id": "raBxejj35B6xqpAff", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tvisible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User | (u.profile).source in (u+Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s:Source,u:User | lone ((u.profile)&(source.s)).ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "zWDoBayKtwjBgRgRj", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:13:44"} {"_id": "Mh2M5b97AS3EJRrpw", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | (User<:visible).w in (User<:profile).w \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\tall u : User | all w : Work | some (u<:visible).w implies lone w\n}", "derivationOf": "Z2DLMhk6NWEtmWTjP", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-18 20:23:29"} {"_id": "3xTKD3nijYQ26F52Q", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u: User | u.visible in u.profile \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u: User, w: u.profile | w.source = u or w.source in Institution\n \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall u: User | all w1, w2: u.profile | not w1.ids = w2.ids\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "2mc7yFj4wyfNhiPKR", "msg": "There are 38 possible tokens that can appear here:\n! # ( * @ Int NAME NUMBER STRING String Time ^ after all always before disj eventually fun historically iden int let lone no none once one pred seq set some sum this univ { } ~", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-1-8 22:09:23"} {"_id": "LAZDxnKYvKXQWYZjW", "cmd_i": 0, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\n\n\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tprofile.source & visible.Work implies User.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\nids-profile\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\n}", "derivationOf": "w7NB5qKjw2Da9jfp9", "msg": "& can be used only between 2 expressions of the same arity.\nLeft type = {this/User->this/Source}\nRight type = {this/User}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:12:07"} {"_id": "fjvcqx8oRyd4GGvar", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | visible.w in profile.w\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\t\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "yiTDH3pnRahKbAJKH", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-12 14:41:18"} {"_id": "q7Df5hhdSgcQ6bfg4", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | (User<:visible).w in (User<:profile).w \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | some (u<:profile).Work implies some (Work<:source).u + (Work<:source).Institution \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "TS8s9tyaTk7iZyyMP", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-18 20:00:52"} {"_id": "aLM89xY4PAMQPtkYt", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w1,w2:Work | ((w1.ids=w2.ids) implies not ((w1 in u.visible)) and (w2 in u.visible))\n}", "derivationOf": "tfddXJA9Mmf3ww4Ri", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-5-7 12:39:16"} {"_id": "hp95oTi57WvwFSkdy", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall u:User,s:Source,i:Id | lone (u.profile & source.s & ids.i)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, i:Id | lone (u.visible & ids.i)\n}", "derivationOf": "CN5eQqpnYN2tepXWb", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-13 19:15:43"} {"_id": "jBtcA7RWJ784RjNRc", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | some w.(User<:visible) implies some w.(User<:profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "u5ZxNNY7JGvdyuxtD", "msg": "The join operation here always yields an empty set.\nLeft type = {this/Work}\nRight type = {this/User->this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-18 19:49:07"} {"_id": "dTRynZWc965KEj7Ns", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | (u.profile + u.visible).source in (u + Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User, disj id1, id2 : u.visible.ids | lone ids.id1 \n}", "derivationOf": "exvGvCL5vbFHexqYD", "msg": "This variable is unused.", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-14 10:45:26"} {"_id": "6bJ4j3DKRJwBEc4xE", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | (User<:visible).w in (User<:profile).w \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | (u<:profile).Work in (Work<:source).u & (Work<:source).Institution \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "NRbowT588NYuNRs5m", "msg": "Subset operator is redundant, because the left and right subexpressions are always disjoint.\nLeft type = {this/User}\nRight type = {this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-18 19:59:48"} {"_id": "QRGjos7D2ao7fWRyN", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-5-4 21:16:56"} {"_id": "tvGB3iWnkEFFcmbDW", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n ~(profile.ids).(profile.ids) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "6zv6D8Jhhq8K4FyCE", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:16:58"} {"_id": "HC6BSCBF69nxcoLHr", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all w:Work,u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all w:Work,u:User | w in u.profile implies (u in w.source or w.source in Institution) \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \n all id1:Id, w1,w2:Work | (w1 in Source.profile and w2 in Source.profile and id in w1.ids) implies id1 not in w2.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "n6Mek9WMuzB8a3DZJ", "msg": "The name \"id\" cannot be found.", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-19 09:26:00"} {"_id": "MvdCfoMfLAiRP8gA5", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\t\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \tall w:Work, w1:Work | (w in User.profile && w1 in User.profile) implies no (w.ids & w1.ids)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\n}", "derivationOf": "w8puRMszM65YhY8az", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-8 22:22:19"} {"_id": "CwzmRfX7w8F9zxXAz", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible = (visible & profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | ((u->profile)->source) in (Institution & u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User, w : Work | one (u.profile.w.id)\n}", "derivationOf": "N4Z8Lp3Cg3tGsWy6b", "msg": "in can be used only between 2 expressions of the same arity.\nLeft type = {this/User->this/User->this/Work->this/Work->this/Source}\nRight type = {none}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:48:58"} {"_id": "qJPH9GDkPAzRP8zn4", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n some pub: User.visible | pub in User.profile\n}\n \n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u: User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "EC4Mk7dM3Nm5JKtti", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 21:40:48"} {"_id": "DDopZbnPDNMd9Ez4y", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s: Source, u: User| ((source.s & u.profile)<:ids).~((source.s & u.profile)<:ids) in iden\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\t\n \tsome u : User | u.visible in Work and ~ids.ids in iden\n}", "derivationOf": "5xxmpQ6JzYx4DjTJ8", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 23:07:52"} {"_id": "7327drRZPpEfES9M8", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | (u.profile + u.visible).source in (u + Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall u : User | ~(u.profile.ids).(u.profile.ids) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "TEbSttKpkp46Xvu37", "msg": "~ can be used only with a binary relation.\nInstead, its possible type(s) are:\n{this/Id}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-14 10:26:32"} {"_id": "P7dKaxCs4rLxJt29B", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\n\n\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | (u.profile) in (source.u + source.Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\n}", "derivationOf": "c5bEc8e4Y4fuSJmdp", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-19 09:12:29"} {"_id": "JGYztJfxsdXSiPTZA", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile \n}\n\n\npred Inv2 { \n\tall u:User ,i:Institution | u.profile.source = u || u.profile.source = i\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall u:User, w:Work, w1:Work | w,w1 in u.profile implies w.ids != w1.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "W5Qhwov8JmSnHhjvN", "msg": "There are 38 possible tokens that can appear here:\n! # ( * @ Int NAME NUMBER STRING String Time ^ after all always before disj eventually fun historically iden int let lone no none once one pred seq set some sum this univ { } ~", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2019-10-21 14:56:45"} {"_id": "iAtFeatpWL5wPRxKr", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | (User<:visible).w in (User<:profile).w \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\tall u : User | some w1, w2 : Work | (some (u<:visible).w1 and some (u<:visible).w1) implies w1 = w2\n}", "derivationOf": "ua272Wr2gQCGmNoPv", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-18 20:22:05"} {"_id": "7hJaAMXSzqRYPb7DJ", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User, w : Work | u->w in visible and u->w in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall w : Work | w.source in Source\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "e8DKPxxGhpjrbfnqD", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-11-2 23:36:03"} {"_id": "ah9nABa32yfHtJEoh", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\t\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "ANnoamq59hTJBPQr3", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-17 17:38:20"} {"_id": "gtNbjgiMxLp3ZLmY5", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User, w:Work | w in u.profile implies (u in w.source) or (some Institution in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\tall u:User, w:Work | w in u.profile implies lone (u.visible & w)\n}", "derivationOf": "moTyeHEnfpeN4rkQT", "msg": "This must be a set or relation.\nInstead, it has the following possible type(s):\n{PrimitiveBoolean}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-1-8 22:32:05"} {"_id": "3wxNCTSFsWRnHd9Ac", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | (u.profile + u.visible).source in (u + Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User | ~(u.visible <: ids).(u.visible <: ids) in iden\n}", "derivationOf": "YuyTCfiCtwjY9PZPH", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-14 10:53:48"} {"_id": "t98aegXqgrKGXqzeh", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n ~(profile.ids).(profile.ids) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "gbsyynQjaArBxHZ3u", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:11:37"} {"_id": "hEzrhvMzF3GtzvZJ5", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all u : User | u.visible = u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | (u.profile) = (source.u + source.Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "RHW8W9QTa8rsrLEAs", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 10:56:15"} {"_id": "itGKYJeZMETMe4jhT", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u: User | u.visible in u.profile \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u: User, w: u.profile | w.source = u or w.source in Institution\n \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall u: User | all w1, w2: u.profile | not w1.ids = w2.ids\n\n}\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "3xTKD3nijYQ26F52Q", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-8 22:09:29"} {"_id": "bKycSL7xqEEqei4mJ", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tsome User.visible\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-8 12:12:31"} {"_id": "cZetDfJyXiSP6KoiG", "cmd_i": 0, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all u:User | u.visible implies u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "dQw58JzZgiMsaqj5h", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-18 21:50:11"} {"_id": "CN5eQqpnYN2tepXWb", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall u:User,s:Source,i:Id | lone (u.profile & source.s & ids.i)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w:Work| lone (u.visible.ids & w.ids)\n}", "derivationOf": "9G9b6oW3rZFi8Ggbz", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-13 19:13:45"} {"_id": "kfzbBTGmMhogSXjZN", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-17 09:20:53"} {"_id": "zii2vKpzkyvFDaaWW", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u :User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User | u.profile.source in (Institution+u)\n}\t\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall u:User | all disj w1,w2: u.profile | no (w1.ids & w2.ids)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "QN2X6enQ29Cyt6xoo", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:19:53"} {"_id": "KnNktxckiAf6FbqFY", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tUser.visible in User.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-21 14:39:39"} {"_id": "pqdnewkEF7gqtGH5d", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n (profile.ids).~(profile.ids) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\t~(visible).(visible) in iden\n}", "derivationOf": "Htp4mnqv8JFFjECkX", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 22:14:27"} {"_id": "HtFZEHunffMQecJqd", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\t\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | some w : Work | u->w in profile implies some ((w.source).Institution or (w.source).User)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "mC9XySB57i8Eym3h2", "msg": "This cannot be a legal relational join where\nleft hand side is w . (this/Work <: source) (type = {this/Source})\nright hand side is this/Institution (type = {this/Institution})", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2019-10-23 08:35:10"} {"_id": "eNRqhSgZDp7EKMrrt", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all x : User | x.profile.source in Institution + x\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n one profile\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "qkQXjqoN5YmuzaAjk", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-12 11:06:03"} {"_id": "gxKMuX8o5bRNXMuPR", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | (User<:visible).w in (User<:profile).w \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | (u<:profile).Work in (Work<:source).u + (Work<:source).Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "vyFuq3n6wAH6PXTFE", "msg": "Subset operator is redundant, because the left and right subexpressions are always disjoint.\nLeft type = {this/User}\nRight type = {this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-18 20:08:48"} {"_id": "m8qhjs2di7DwhJ5gM", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \tall w1, w2:Work, u:User | ((w1 in u.profile and w2 in u.profile) and (w1.ids & w2.ids) and (w1.source = w2.source)) implies (w1=w2)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "NfgvuzRRyqvzseyTN", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/Id}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-1-9 00:45:44"} {"_id": "yvS6Aoy7shtoKQ7Du", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "YptZYt5kLvKgRq7B4", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-18 23:37:15"} {"_id": "Dy7LxL5m7pvAvafCj", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | (u.profile + u.visible).source in (u + Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall u : User | ~(u.profile.ids).(u.profile.ids) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "7327drRZPpEfES9M8", "msg": "~ can be used only with a binary relation.\nInstead, its possible type(s) are:\n{this/Id}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-14 10:26:58"} {"_id": "mn2k25f868MFxWLZ3", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s : Source | (profile.ids).~(profile.ids) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\t~(visible.ids).(visible.ids) in iden\n}", "derivationOf": "rTrojFudA6F2YvwJw", "msg": "This variable is unused.", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 22:19:02"} {"_id": "pFhSsmXqufZcAPDbg", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all x : User | x.profile.source in Institution + x\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n one profile.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "eNRqhSgZDp7EKMrrt", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:11:41"} {"_id": "inRkRJoyqYyNCSW2k", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all x : User | x.profile.source in Institution + x\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s: Source, u: User| ((source.s & u.profile)<:ids).~((source.s & u.profile)<:ids) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n lone (User->Work) & visible\n}", "derivationOf": "nd3zNPf5m8XwRERDB", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 22:46:44"} {"_id": "tz9e953GMTHyd7Zim", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\nall w1, w2 : Work | all u : User | w1 != w2 and (w1 + w2) in u.profile and (w1.source = w2.source) implies no w1.ids & w2.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\nall w1, w2 : Work | all u : User | w1.source = w2.source and (w1 + w2) in u.visible and (w1 + w2) in u.profile implies w1.ids = w2.ids \n}", "derivationOf": "8G6ZH7QiYzSsiSd5r", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-5-7 13:03:14"} {"_id": "X7QdS4iyvdnPkXzAc", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \tall w1, w2:Work, u:User | ((w1 in u.profile and w2 in u.profile) and (w1.ids = w2.ids) and (w1.source = w2.source)) implies no (w1.ids & w2.ids)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "R34oGL8HxSJ5ZYJKw", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-9 00:42:07"} {"_id": "H8XK8R4itCdXGJFr3", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n\tall u:User, w:(user.profile + user.visible) | w in (u+Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "ooPtHBpcXdNFmt8Qa", "msg": "The name \"user\" cannot be found.", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-1-9 03:49:37"} {"_id": "4a79XMCruX4CfPvjE", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w1,w2:Work | ((w1=w2) and (w1 in u.visible)) implies w2 not in u.visible\n}", "derivationOf": "sAdKrh3pznR5eirLY", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-9 01:17:46"} {"_id": "xGTcmGER3MR8L4AHE", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | (User<:visible).w in (User<:profile).w \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | Work.(u<:profile) in (Work<:source).u + (Work<:source).Institution \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "mCmNHxzsWTq3LmnRj", "msg": "The join operation here always yields an empty set.\nLeft type = {this/Work}\nRight type = {this/User->this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-18 20:07:30"} {"_id": "38L2Tw2dfxopJA3JT", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall u : User | some id1, id2 : Id | some u.profile.Work.id1 and u.profile.Work.id2 implies id1 != id2\n}\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "3hhRRA3K4RrN5x494", "msg": "This cannot be a legal relational join where\nleft hand side is u . (this/User <: profile) (type = {this/Work})\nright hand side is this/Work (type = {this/Work})", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2019-11-3 20:22:52"} {"_id": "376iCeRXh3ZFGZqhB", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | (User<:visible).w in (User<:profile).w \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | (u<:profile).Work in (Work<:source).u + (Work<:source).Institution \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "9qQfctCo9GfLJhd9Q", "msg": "Subset operator is redundant, because the left and right subexpressions are always disjoint.\nLeft type = {this/User}\nRight type = {this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-18 20:05:30"} {"_id": "hppS9wBwuFjehBcHE", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible = (visible & profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | (u.profile).source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all w1, w2 : Work, u : User {\n (w1 != w2 and ((w1 + w2) in u.profile) and w1.source = w2.source) implies no (w1.ids & w2.ids)\n }\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User, w : Work {\n (w in u.profile) implies one (w.ids.(~ids) & u.profile)\n }\n}", "derivationOf": "wc7uBBgTpwRi92nAn", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-23 04:47:03"} {"_id": "DusGALJ2uDLcgh42D", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User, w:Worker| \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "j26aQRu5GnPSpfnaJ", "original": "JC8Tij8o8GZb99gEJ", "theme": {"currentFramePosition": {}, "currentlyProjectedSigs": [], "generalSettings": {"currentLayout": "breadthfirst", "metaPrimSigs": [{"parent": null, "type": "univ"}, {"parent": "univ", "type": "Id"}, {"parent": "Source", "type": "Institution"}, {"parent": "univ", "type": "Int"}, {"parent": "univ", "type": "RejectedBy"}, {"parent": "RejectedBy", "type": "ShouldBeAccepted"}, {"parent": "RejectedBy", "type": "ShouldBeRejected"}, {"parent": "univ", "type": "Source"}, {"parent": "univ", "type": "String"}, {"parent": "null", "type": "univ"}, {"parent": "Source", "type": "User"}, {"parent": "univ", "type": "Work"}, {"parent": "Int", "type": "seq/Int"}, {"parent": "univ", "type": "Id"}, {"parent": "Source", "type": "Institution"}, {"parent": "univ", "type": "Int"}, {"parent": "univ", "type": "RejectedBy"}, {"parent": "RejectedBy", "type": "ShouldBeAccepted"}, {"parent": "RejectedBy", "type": "ShouldBeRejected"}, {"parent": "univ", "type": "Source"}, {"parent": "univ", "type": "String"}, {"parent": "null", "type": "univ"}, {"parent": "Source", "type": "User"}, {"parent": "univ", "type": "Work"}, {"parent": "Int", "type": "seq/Int"}], "metaSubsetSigs": []}, "nodePositions": {"Institution": {"x": 672.2857230050223, "y": 199.1999969482422}, "ShouldBeAccepted": {"x": 134.45714460100442, "y": 199.1999969482422}, "User": {"x": 806.7428676060268, "y": 199.1999969482422}, "Work0": {"x": 268.91428920200894, "y": 199.1999969482422}, "Work1": {"x": 403.37143380301336, "y": 199.1999969482422}, "Work2": {"x": 537.8285784040179, "y": 199.1999969482422}}, "relationSettings": {"edgeColors": [{"color": "#0074D9", "relation": "ids"}, {"color": "#0074D9", "relation": "profile"}, {"color": "#0074D9", "relation": "source"}, {"color": "#0074D9", "relation": "visible"}, {"color": "#0074D9", "relation": "ShouldBeAccepted"}], "edgeStyles": [{"edgeStyle": "solid", "relation": "ids"}, {"edgeStyle": "solid", "relation": "profile"}, {"edgeStyle": "solid", "relation": "source"}, {"edgeStyle": "solid", "relation": "visible"}], "showAsArcs": [{"relation": "general", "showAsArcs": true}, {"relation": "ids", "showAsArcs": false}, {"relation": "profile", "showAsArcs": true}, {"relation": "source", "showAsArcs": true}, {"relation": "visible", "showAsArcs": true}, {"relation": "ShouldBeRejected", "showAsArcs": true}, {"relation": "ShouldBeAccepted", "showAsArcs": true}, {"relation": "Id", "showAsArcs": true}, {"relation": "Work", "showAsArcs": true}, {"relation": "Institution", "showAsArcs": true}], "showAsAttributes": [{"relation": "visible", "showAsAttributes": false}, {"relation": "profile", "showAsAttributes": false}, {"relation": "ids", "showAsAttributes": true}, {"relation": "source", "showAsAttributes": false}]}, "sigSettings": {"nodeBorders": [{"border": "solid", "type": "univ"}, {"border": "inherit", "type": "Id"}, {"border": "inherit", "type": "Int"}, {"border": "inherit", "type": "User"}, {"border": "inherit", "type": "Source"}, {"border": "inherit", "type": "Work"}, {"border": "inherit", "type": "ShouldBeRejected"}, {"border": "inherit", "type": "RejectedBy"}, {"border": "inherit", "type": "seq/Int"}, {"border": "inherit", "type": "general"}, {"border": "inherit", "type": "Institution"}, {"border": "inherit", "type": "ShouldBeAccepted"}, {"border": "inherit", "type": "ids"}], "nodeColors": [{"color": "#2ECC40", "type": "univ"}, {"color": "inherit", "type": "Id"}, {"color": "inherit", "type": "Int"}, {"color": "inherit", "type": "User"}, {"color": "inherit", "type": "Source"}, {"color": "#39CCCC", "type": "Work"}, {"color": "#FF4136", "type": "ShouldBeRejected"}, {"color": "inherit", "type": "RejectedBy"}, {"color": "inherit", "type": "seq/Int"}, {"color": "inherit", "type": "general"}, {"color": "#FFDC00", "type": "Institution"}, {"color": "#FF4136", "type": "ShouldBeAccepted"}, {"color": "inherit", "type": "ids"}], "nodeShapes": [{"shape": "ellipse", "type": "univ"}, {"shape": "inherit", "type": "Id"}, {"shape": "inherit", "type": "Int"}, {"shape": "inherit", "type": "User"}, {"shape": "inherit", "type": "Source"}, {"shape": "roundrectangle", "type": "Work"}, {"shape": "octagon", "type": "ShouldBeRejected"}, {"shape": "inherit", "type": "RejectedBy"}, {"shape": "inherit", "type": "seq/Int"}, {"shape": "inherit", "type": "general"}, {"shape": "inherit", "type": "Institution"}, {"shape": "octagon", "type": "ShouldBeAccepted"}, {"shape": "inherit", "type": "ids"}], "nodeVisibility": [{"type": "univ", "visibility": false}, {"type": "Int", "visibility": true}, {"type": "general", "visibility": false}, {"type": "Id", "visibility": true}, {"type": "User", "visibility": false}, {"type": "Work", "visibility": false}, {"type": "ShouldBeRejected", "visibility": false}, {"type": "Institution", "visibility": false}, {"type": "ShouldBeAccepted", "visibility": false}, {"type": "ids", "visibility": false}]}}, "time": "2020-11-12 11:48:18"} {"_id": "vEWsTahZLSaDg6Lnq", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User, w:Work | some i:Institution | w in u.profile implies (u in w.source or i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\n}", "derivationOf": "jFRiM8jWxbEMNGjW7", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-8 22:09:49"} {"_id": "mKqsR7hnXeNxrXCiX", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tvisible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User | (u.profile).source in (u+Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s:Source,u:User | lone ((u.profile) & (source.s)).ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n ~(visible.ids) in Id -> lone User\n}", "derivationOf": "WjKMxnjd586Hmogsu", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 15:00:52"} {"_id": "9fPTqnQknpfjNPQ3D", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\n\n\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | (u.profile) in (source.u + source.Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\n}", "derivationOf": "woYNBC3C2SnWDNFep", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-12 11:20:38"} {"_id": "oYohGnuPphPeTdFrs", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w:Work | w in u.profile implies lone (u.visible & w)\n}", "derivationOf": "LdZ68dizTdozk66Fd", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-9 01:00:12"} {"_id": "ZNQ9QEiJNnP4HgW3f", "cmd_i": 3, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | (User<:visible).w in (User<:profile).w \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\tall u : User | some w1, w2 : Work | some (u<:visible).w1 and (u<:visible).w1 implies w1 = w2\n}", "derivationOf": "nfS5CP6brQkS8Wgsg", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/User}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2019-10-18 20:21:42"} {"_id": "KaMgoBpWX3DwPezxD", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all x : User | x.profile.source in Institution + x\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s: Source | (source.s<:ids).~(source.s<:ids) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "7SnveMrwuSnN2umse", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 22:20:25"} {"_id": "p6N7ywKkYRX4Zn3i2", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User, w : Work | u->w in profile implies (w.source in User or w.source in Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "EaiJufyxBgRTtceRs", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-22 07:42:47"} {"_id": "3iXXdnZHSpi23SsFD", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \tall w1, w2:Work, u:User | ((w1 in u.profile and w2 in u.profile) and (w1.source = w2.source)) implies (w1.ids != w2.ids)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "QkzvueRjTjQZKamfd", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-9 00:33:53"} {"_id": "qnzCYEWFyEf5A7ZYL", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all w:Work,u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all w:Work,u:User | w in u.profile implies u in w.source \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "E4cz5hGgXduKmRnNE", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-19 09:16:02"} {"_id": "eRZ3XmXuBAL36mWia", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | (User<:visible).w in (User<:profile).w \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | (u<:profile).Work in some (Work<:source).u or some (Work<:source).Institution \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "aEYrcQ2N7sXEwpAGN", "msg": "There are 29 possible tokens that can appear here:\n# ( * @ Int NAME NUMBER STRING String Time ^ all disj fun iden int let lone no none one pred seq some sum this univ { ~", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2019-10-18 19:59:18"} {"_id": "f5dg3Nr66oKF3rbK7", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s: Source, u: User| ((source.s & u.profile)<:ids).~((source.s & u.profile)<:ids) in iden\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\tall w : Work | ~(((profile.w)<:visible).ids).(((profile.w)<:visible).ids) in iden\n}", "derivationOf": "woh3dSZXsqu6iELfD", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 22:45:12"} {"_id": "GuZgeg3nidvrZ3jQB", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | (u.profile + u.visible).source in (u + Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User, w : u.profile | lone w & u.visible \n}", "derivationOf": "mbLvcDLXjsZ9FfYfw", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-14 10:56:43"} {"_id": "bGd3waEtyan5oidWE", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall u:User,s:Source,i:Id | lone (u.profile & source.s & ids.i)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, i:Id, w:Work | lone (u.visible & ids.i) and lone (visible.(ids.i))\n}", "derivationOf": "hGKxDGLiF9b2vRssF", "msg": "This variable is unused.", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-13 19:18:52"} {"_id": "ncqSib5jnGdcynXMK", "cmd_i": 0, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n \tall w:Work | visible.w in profile.w\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "Ydb5ccn8Dja6xc7se", "msg": "There are 37 possible tokens that can appear here:\n! # ( * @ Int NAME NUMBER STRING String Time ^ after all always before disj eventually fun historically iden int let lone no none once one pred seq set some sum this univ { ~", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:10:57"} {"_id": "zarEW3Ltc3ZBeJG3a", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all x : User | x.profile.source in Institution + x\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s: Source, u: User | ((source.s & u.profile)<:ids).~((source.s & u.profile)<:ids) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u: User | ^((u.visible<:ids).~(u.visible<:ids)) in iden\n}", "derivationOf": "8bHGkC4x7aZxExzmD", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-19 09:15:40"} {"_id": "dWoDtKp5iwAgWB8Gk", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n User.visible in User.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "Dqptdj2DqQbpcAYoK", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 10:58:11"} {"_id": "nYHNF28o7XwJaoXXf", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w: Work | visible.w in profile.w\n}\n \n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u: User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s1, s2: Source | s1= s2 implies s1.profile.Id not in s2.profile.Id\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "gM3ZMqbHoNRByaoEv", "msg": "This cannot be a legal relational join where\nleft hand side is s1 . (this/User <: profile) (type = {this/Work})\nright hand side is this/Id (type = {this/Id})", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-18 16:19:05"} {"_id": "CFuuqpMufLNLn95fp", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile \n}\n\n\npred Inv2 { \n\tall u:User ,i:Institution | u.profile.source = u || u.profile.source = i\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall u:User, w:Work, w1:Work | w.source = w1.source && w1 in u.profile && w in u.profile implies w.ids != w1.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "AGu9bkpvAz77W26pZ", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-21 14:58:23"} {"_id": "u7w8thBwvz3jmbkjM", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s: Source, u: User| ((source.s & u.profile)<:ids).~((source.s & u.profile)<:ids) in iden\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\t\n \tall w : Work | visible.w in User and ~ids.ids in iden and ids.~ids in iden\n}", "derivationOf": "nTwBfd2T6vxP9jEYt", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 23:01:35"} {"_id": "aarCBAWZYbYSbmu7g", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tvisible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User | (u.profile).source in (u+Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s:Source,u:User | lone ((u.profile) & (source.s)).ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n ~(visible.ids) in Id -> lone User\n}", "derivationOf": "JYbFYeSNxe4KsXH8r", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 14:45:11"} {"_id": "X53tBdr5iTkfdK4L9", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w: Work | visible.w in profile.w\n}\n \n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u: User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\tall w: Work | some s: Source | profile.w and w.s implies one w.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "vCqtPsKf77MD7vGzo", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/User}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 21:59:32"} {"_id": "KhzbTEi3ST7fAoWwB", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\t\tsome w: Work | all u: User| w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u: User | all w: Work | u.profile implies w.source in u or w.source in Institution \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "rsbKhboFjCgEgemiN", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:09:36"} {"_id": "4ck32jqWK7BmoCk3m", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \tall w1, w2:Work, u:User | ((w1 in u.profile and w2 in u.profile) and (w1.source = w2.source)) implies no (w.ids & w1.ids)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "upyt7xf3ErpRgLZXo", "msg": "The name \"w\" cannot be found.", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-1-8 23:16:57"} {"_id": "2PKFqXbZ6NSS3KQSJ", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \tall w1, w2:Work, u:User | ((w1 in u.profile and w2 in u.profile) and no (w1.ids & w2.ids) and (w1.source = w2.source)) implies (w1=w2)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "m8qhjs2di7DwhJ5gM", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-9 00:46:00"} {"_id": "EYdy4GDrC4u2WEgT9", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | (u.profile + u.visible).source in (u + Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall w : source.Source, disj w1,w2 : w.ids | w1 not = w2\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "NeNiMAKXbHAtYcz2n", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-14 10:35:40"} {"_id": "5ortdgo9izgnt3H7Q", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s: Source, u: User| ((source.s & u.profile)<:ids).~((source.s & u.profile)<:ids) in iden\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\t\n \tall w : Work | visible.w in User and ~ids.ids in iden\n}", "derivationOf": "MrRbNG9a4pgc8E4ih", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 22:57:26"} {"_id": "WFwwpScnibchj44ix", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all u:User | all w:Work | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "cZetDfJyXiSP6KoiG", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-18 21:50:33"} {"_id": "9aSMqrpTuChDsqYHR", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tUser.visible in User.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:09:56"} {"_id": "EqcXY9JnHQgKBxkvy", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2019-11-3 20:13:52"} {"_id": "cmgcya5Fd3ghFfX3r", "cmd_i": 3, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile \n}\n\n\npred Inv2 { \n\tall u:User ,i:Institution | u.profile.source = u || u.profile.source = i\n}\n\n\npred Inv3 { \n\tall u:User, w:Work, w1:Work | w.source = w1.source && w1 in u.profile && w in u.profile implies w.ids != w1.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User , i:Id, i1:Id | i in u.visible.ids & i1 in u.visible.ids implies i != i1\n}", "derivationOf": "sqom9sdyteShym3M4", "msg": "This must be a set or relation.\nInstead, it has the following possible type(s):\n{PrimitiveBoolean}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2019-10-21 15:10:26"} {"_id": "Zk3ertzxvmc79CQ2b", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile \n}\n\n\npred Inv2 { \n\tall u:User ,i:Institution | u.profile.source = u || u.profile.source = i\n}\n\n\npred Inv3 { \n\tall u:User, w:Work, w1:Work | w.source = w1.source && w1 in u.profile && w in u.profile implies w.ids != w1.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n User.visible.ids != User.visible.ids\n}", "derivationOf": "StoEogAMPREcBPGjz", "msg": "== is redundant, because the left and right expressions always have the same value.\nLeft type = {this/Id}\nRight type = {this/Id}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-21 15:03:02"} {"_id": "rvahrYM6WiDJ77HDT", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall w1, w2 : Work, u : User | w1 != w2 and (w1 + w2) in u.profile and (w1.source = w2.source) implies no w1.ids & w2.ids\n}\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\tall u : User, w1, w2 : Work | w1 != w2 and (w1 + w2) in u.visible implies (w1.source != w2.source and w1.ids != w2.ids)\n}", "derivationOf": "zGJRfpYrESR7A5qxT", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-11-3 20:46:22"} {"_id": "deRDRvLBJQ4g2SkrM", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all x : User | x.profile.source in Institution + x\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s: Source, u: User| ((source.s & u.profile)<:ids).~((source.s & u.profile)<:ids) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u: User| (u.profile<:ids).~(u.profile<:ids) in iden\n}", "derivationOf": "opGP7Su78s3tbxouv", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 22:57:36"} {"_id": "MPPT2gG54DJXqRKvN", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall w:Work | (w in User.profile) implies (User = w.source) \n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "FxiRHR2AGcCz2v7TD", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-22 10:49:14"} {"_id": "ENzK3HA9mw3DjdAHc", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall u : User | u.profile\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-18 21:46:27"} {"_id": "iW9Jp8RL68XqjHLNe", "cmd_i": 3, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User, w:Work | w in u.profile implies (u in w.source) or (some Institution in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\tall u:User, w:Work | w in u.profile implies lone (u.visible & w)\n}", "derivationOf": "gtNbjgiMxLp3ZLmY5", "msg": "This must be a set or relation.\nInstead, it has the following possible type(s):\n{PrimitiveBoolean}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-1-8 22:35:17"} {"_id": "yv9rvb2YAphXMHenm", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all w1, w2 : Work, u : User | w1 != w2 and (w1 + w2) in u.profile and (w1.source = w2.source) implies no w1.ids & w2.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-23 04:37:22"} {"_id": "2DrjjuuMvQfYr5fXx", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all w:Work,u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all w:Work,u:User | w in u.profile implies u in w.source or w.source in Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "vLx5ZwxPXEDQkHwXG", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-19 09:17:06"} {"_id": "cWW9r4zp6LMR7zeEC", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tWork in User.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-18 19:44:06"} {"_id": "xfpoALZp9SSRLbfQo", "cmd_i": 0, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tsome user.profile in user.visible\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "xGZZ9iNQ8KAiQF6P8", "msg": "The name \"user\" cannot be found.", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-1-8 12:14:35"} {"_id": "9zSHKZGQBakPR3em9", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s:Source, u:User, i : Id | lone (u.profile & source.s & ids.i)\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "AuRk7yoHMTYrgf64s", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-12 16:00:08"} {"_id": "iRZGQvv2s5gh9Et5o", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all u : User | some profile.(u.visible)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "AtDsPGZstnCRqPMGL", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 10:48:47"} {"_id": "xAbEbJTZ3uupKrE26", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User | (u.profile).source in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "yvS6Aoy7shtoKQ7Du", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-18 23:39:37"} {"_id": "cJ2xRgswTX3MD6rog", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible = (visible & profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | (u.profile).source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all w1, w2 : Work, u : User {\n (w1 != w2 and ((w1 + w2) in u.profile) and w1.source = w2.source) implies no (w1.ids & w2.ids)\n }\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User | all w1, w2 : Work | (w1 != w2 and (w1 + w2) in u.visible) implies (no w1.ids & w2.ids and w1.source != w2.source)\n}", "derivationOf": "xjQdmkTq8kA8gckpu", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-23 04:52:54"} {"_id": "aKehpmqo2AmomqWat", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | visible.w in profile.w\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-12 14:33:28"} {"_id": "7hz7WxjhLF54Hq7vX", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | some (User<:visible).w\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "sja7aSLAaDvLFLuQi", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-18 19:47:57"} {"_id": "oB7ENfy9EWKFM3c2q", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible = (visible & profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User, w : Work | (u->profile).w.source in (u + Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "GCt4MMTn8373TshN2", "msg": "in can be used only between 2 expressions of the same arity.\nLeft type = {none->none}\nRight type = {this/Source}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:09:05"} {"_id": "k2Pq5H685bikiBKxs", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n (profile.ids).~(profile.ids) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\t~visible.visible in iden\n}", "derivationOf": "WPWdTbm9Rn5Nk65hN", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 21:57:05"} {"_id": "DjRbXqMLHRCRXsGEC", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \n all w1, w2:Work, u:User | (w1 in u.profile and w2 in u.profile) implies w1.ids != w2.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "NbTqzjoWMGub7eyf2", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-23 04:38:26"} {"_id": "QCD3BhKciTQsHjhhM", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\t\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "F8kkXqthxGdTGjPoY", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-1-8 22:59:09"} {"_id": "5HqNmAhqsEkFGAzu6", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\t\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | some w : Work | u->w in profile implies some (w<:source).Institution or some (w<:source).User\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tlone Work<:(User.profile)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "PZM2z5ZZd64TW6tbQ", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-23 08:37:40"} {"_id": "mbLvcDLXjsZ9FfYfw", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | (u.profile + u.visible).source in (u + Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User | iden in ~(u.visible <: ids).(u.visible <: ids)\n}", "derivationOf": "NFc5wzvbu7EqQm794", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-14 10:54:26"} {"_id": "bA8ntuFnAicgZc8pP", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2019-11-10 21:18:46"} {"_id": "t2y65BA77FYBNA9zX", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n\tall u:User, w:(u.profile + u.visible) | w in (u+Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "zLSTGgWsAJLC7wHEq", "msg": "Subset operator is redundant, because the left and right subexpressions are always disjoint.\nLeft type = {this/Work}\nRight type = {this/Source}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-9 03:50:06"} {"_id": "6ZPmqzJjtbfknQ9wF", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible = (visible & profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | ((u->profile).source = u) or ((u->profile).source in Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User, w : Work | one (u.profile.w.id)\n}", "derivationOf": "TTgZvLrZ5n2C3DiXM", "msg": "= can be used only between 2 expressions of the same arity, or between 2 integer expressions.\nLeft type = {this/User->this/User->this/Source}\nRight type = {this/User}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:44:49"} {"_id": "Mz4ekpLKxgWfj9gfT", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | (u.profile + u.visible).source in (u + Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall w : source.Source, w1,w2 : w.ids | w1 = w2\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "5od5LftYGTq6JjWJo", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-14 10:34:53"} {"_id": "5At64gkJhospgbgTL", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\t\tall u: User| profile.source in u or profile.source in Institution\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u: User | all w: Work |profile.source in u or profile.source in Institution \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "K3GDWgFCN5un6Cfvm", "msg": "There are 38 possible tokens that can appear here:\n! # ( * @ Int NAME NUMBER STRING String Time ^ after all always before disj eventually fun historically iden int let lone no none once one pred seq set some sum this univ { } ~", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:13:14"} {"_id": "yEW4xRSx2e2Wf5nZP", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s: Source | ((s.profile)<:ids).~((s.profile)<:ids) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "gej6GvwE87n8iWMf3", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 22:22:19"} {"_id": "tt5r2uihH9WbzDgjk", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible = (visible & profile)\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \n \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "FabeoD5LpAAsSC9j9", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:14:40"} {"_id": "ZbT5Mpez3SSiiQGAc", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible = (visible & profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | ((u->profile).source) in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User, w : Work | one (u.profile.w.id)\n}", "derivationOf": "wt9gy3cQBPz2SSN3P", "msg": "in can be used only between 2 expressions of the same arity.\nLeft type = {this/User->this/User->this/Source}\nRight type = {this/Source}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:49:11"} {"_id": "eQHAbSxB3R7L2TtMK", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\t\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \tall u:User, w1, w2:Work in u.profile | w1.ids!=w2.ids \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\n}", "derivationOf": "ioRTq7TpMnQEPn8ut", "msg": "This must be a set or relation.\nInstead, it has the following possible type(s):\n{PrimitiveBoolean}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-1-8 22:25:16"} {"_id": "zGJRfpYrESR7A5qxT", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall w1, w2 : Work, u : User | w1 != w2 and (w1 + w2) in u.profile and (w1.source = w2.source) implies no w1.ids & w2.ids\n}\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\tall u : User, w1, w2 : Work | w1 != w2 and (w1 + w2) in u.visible implies (w1.source != w2.source or w1.ids != w2.ids)\n}", "derivationOf": "kj7qwhinpdW2z7avk", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-11-3 20:46:02"} {"_id": "eCm59NCMpHvzDAEkN", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\t\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w1,w2:Work | u->w1 in visible and u->w2 in visible implies w1.ids!=w2.ids\n}", "derivationOf": "89QyKQwr6y7G5PWaE", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-11-10 21:27:08"} {"_id": "c5bEc8e4Y4fuSJmdp", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\n\n\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | (u.profile) in (source.u + source.Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-19 09:12:27"} {"_id": "8iCgdcJg8oEzJiZXT", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | (u.profile).source in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "RjrdiAa9ipMWCK4Dz", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-12 11:01:22"} {"_id": "caZTMFi48kA5ZcN9h", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all x : User | x.profile.source in Institution + x\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all w1 : Work, w2 : Work | some (w1.ids and w2.ids) implies w1 = w2\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "SpwzP9DRQHQPEfZxT", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/Id}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:15:39"} {"_id": "upMhrGDzjgfBYhxJC", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | some (User<:visible).w implies some (User<:profile).w\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "7hz7WxjhLF54Hq7vX", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-18 19:48:18"} {"_id": "gMjnmfnoKzgmL9eBp", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s: Source, u: User| ((source.s & u.profile)<:ids).~((source.s & u.profile)<:ids) in iden\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\t\n \tsome u : User | u.visible in Work and ~ids.ids in iden and ids.~ids in iden\n}", "derivationOf": "DDopZbnPDNMd9Ez4y", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 23:08:03"} {"_id": "rnu6eyJPQs4N9EMEX", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | (User<:visible).w in (User<:profile).w \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall x, y : Work | no x<:ids = y<:ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "maTLDedxxZvhkBdce", "msg": "= can be used only between 2 expressions of the same arity, or between 2 integer expressions.\nLeft type = {PrimitiveBoolean}\nRight type = {this/Work->this/Id}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2019-10-18 20:15:10"} {"_id": "pMN3646uJrbk8Fsyh", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall w1, w2 : Work, u : User | w1 != w2 and (w1 + w2) in u.profile and (w1.source = w2.source) implies no w1.ids & w2.ids\n}\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\tall u : User, w1, w2 : Work | w1 != w2 and (w1 + w2) in u.visible implies (w1.source != w2.source or w1.ids != w2.ids)\n}", "derivationOf": "rvahrYM6WiDJ77HDT", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-11-3 20:46:49"} {"_id": "Q2kZDGmsvxRuTYP2z", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w1, w2 : Work | w1->w2 in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "q8wHMYnmC3CeSD2LR", "msg": "Subset operator is redundant, because the left and right subexpressions are always disjoint.\nLeft type = {this/Work->this/Work}\nRight type = {this/User->this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-11-2 23:27:21"} {"_id": "FpCoEkYY33X3TGZRK", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-1-8 19:13:30"} {"_id": "cYAGYiLpK4rhirxPd", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w: Work | visible.w in profile.w\n}\n \n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u: User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s1, s2: Source | s1 = s2 implies s1.profile.Id != s2.profile.Id\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "tYLHguazu9GxYQ2HB", "msg": "This cannot be a legal relational join where\nleft hand side is s1 . (this/User <: profile) (type = {this/Work})\nright hand side is this/Id (type = {this/Id})", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-18 16:20:22"} {"_id": "brywFahb5ZWibvjGW", "cmd_i": 0, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\n\n\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\t(User.visible).profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\nids-profile\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\n}", "derivationOf": "c3ifkoGgat8ypvqmZ", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{none}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:19:08"} {"_id": "7GiesXJkWAsAfiGqN", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \tall w1, w2:Work, u:User | ((w1 in u.profile and w2 in u.profile) and (w1.ids = w2.*ids) and (w1.source = w2.source)) implies w1=w2\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "7Wm5BceyftgX3KTdd", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-9 00:39:14"} {"_id": "XWghcNFpH92nxDhvb", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User, w:Work | w in u.profile implies (u in w.source or some Institution in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\n}", "derivationOf": "62mb2Y387bw2HKz8d", "msg": "This must be a set or relation.\nInstead, it has the following possible type(s):\n{PrimitiveBoolean}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-1-8 22:03:24"} {"_id": "wLnYwvA8yvtjsQcmp", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\t\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \tall u:User, w1, w2:Work | w1 in u.profile and w2 in u.profile implies w1.ids not in w2.ids and w2.ids not in w1.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\n}", "derivationOf": "k2CxoEfDbEgL8ncyG", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-8 22:27:11"} {"_id": "g8KtGZyoGqtixobpM", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n (profile.ids.source).~(profile.ids.source) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\n}", "derivationOf": "cobHeTwrtC694pJW5", "msg": "The join operation here always yields an empty set.\nLeft type = {this/User->this/Id}\nRight type = {this/Work->this/Source}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 21:49:47"} {"_id": "SWnc7GC4CAw58LmvR", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\nall u:User, w:Work | some i:Institution | w in u.profile implies (u in w.source or i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "ZPWr4ocuqS5DJs8Pw", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-8 22:24:04"} {"_id": "7ycawySxfXFWoY4HF", "cmd_i": 0, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | some (User<:visible).w in (User<:profile).w \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "7CvsQcg9ToQpHFpEa", "msg": "This must be a set or relation.\nInstead, it has the following possible type(s):\n{PrimitiveBoolean}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2019-10-18 19:52:44"} {"_id": "8qXo6onHjLCGzvHcJ", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u :User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User | u.profile.source in (Institution+u)\n}\t\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall disj w1,w2:Work, u:User | (w1+w2) in u.profile implies no (w1.ids & w2.ids)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "Kbsqjr4dCA8i5tHJh", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:13:20"} {"_id": "viZtqXQFP9TqpsyTo", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all w:Work | w.visible in source.w\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "nPpYKgP7AzeC6sLsc", "msg": "The join operation here always yields an empty set.\nLeft type = {this/Work}\nRight type = {this/User->this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:06:04"} {"_id": "XHdW9ogf2uoEfNJGR", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\t\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \tall u:User, w1, w2:Work | (w1 in u.visible and w2 in u.visible) implies w1!=w2\n}", "derivationOf": "A3qXSY2jBWNmfoses", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-8 19:25:58"} {"_id": "NjRfqc9DqzYiagEey", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall u:User,s:Source,i:Id | lone (u.profile & source.s & ids.i)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, i:Id| lone (u.visible & ids.i)\n}", "derivationOf": "bGd3waEtyan5oidWE", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-13 19:22:28"} {"_id": "mCmNHxzsWTq3LmnRj", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | (User<:visible).w in (User<:profile).w \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | Work.(u<:profile) in (Work<:source).u + (Work<:source).Institution \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "ABEAJXgnncMEyexq5", "msg": "The join operation here always yields an empty set.\nLeft type = {this/Work}\nRight type = {this/User->this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-18 20:07:25"} {"_id": "aBvqD82r5ieoCrQ6o", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w1,w2:Work, p:u.profile | (w1.ids=w2.ids) and (w1 in p and w2 in p) implies (w1 not in u.visible or w2 not in u.visible) \n}", "derivationOf": "QcgSBQZ3GLCS7pLT4", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-9 01:45:32"} {"_id": "KY47FPixT4pYhhjih", "cmd_i": 3, "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s: Source, u: User| ((source.s & u.profile)<:ids).~((source.s & u.profile)<:ids) in iden\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\t\n \tall w : Work, u : User | ~(visible.((u.profile)<:ids).(visible.((u.profile)<:ids)) in iden\n}", "derivationOf": "RJLR2Lu2JZyF7qTHJ", "msg": "There are 1 possible tokens that can appear here:\n)", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-18 22:52:02"} {"_id": "DjKrTrakKH9hmMCQ7", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\t\tsome w: Work | w in User.visible implies w in User.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "4KenfPQvaGueF7yD5", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:00:31"} {"_id": "b7B8zm95jvJPhcmnW", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible = (visible & profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | ((u->profile)->source = u) or ((u->profile)->source in Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User, w : Work | one (u.profile.w.id)\n}", "derivationOf": "u9wtjcCyQqKyp5X3x", "msg": "= can be used only between 2 expressions of the same arity, or between 2 integer expressions.\nLeft type = {this/User->this/User->this/Work->this/Work->this/Source}\nRight type = {this/User}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:45:43"} {"_id": "y3JvRGA2ZvxYk8Yte", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | visible.w in profile.w\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in Institution + u\n}\n\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tlet aux = {u, User, w : Work, s : Source | u -> w in profile and w -> s in source} | all s : Source | \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "STiZyLRFFHQAhdrQs", "msg": "There are 37 possible tokens that can appear here:\n! # ( * @ Int NAME NUMBER STRING String Time ^ after all always before disj eventually fun historically iden int let lone no none once one pred seq set some sum this univ { ~", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-18 16:58:00"} {"_id": "MpkxDWJoepRnbFZt2", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tWork in User.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "xEdBjjymT25spBNhW", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-18 19:44:29"} {"_id": "idXTxpbdM8HmEeRsv", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w: Work | visible.w in profile.w\n}\n \n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u: User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s1, s2: Source| all u: User | s1 = s2 and u.profile.source = s1 or u.profile.source = s2 implies one u.profile.ids \n \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "4JEtJSCrybYQa8zcB", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 16:27:17"} {"_id": "ency8nDxeKJcg86PJ", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \tall w1, w2:Work, u:User | ((w1 in u.profile and w2 in u.profile) and (w1.^ids = w2.ids)) implies w1=w2\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "TZx5xKgdzaE59DYNL", "msg": "^ (this/Work <: ids) is redundant since its domain and range are disjoint: {this/Work->this/Id}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-9 00:36:39"} {"_id": "4miBPHtGeXTLpcu7t", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w: Work | visible.w in profile.w\n}\n \n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u: User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s1, s2: Source| all u: User | s1 = s2 and u.profile.source = s1 or u.profile.source = s2 implies one u.profile.ids \n \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n User.visible.ids = User.profile.ids implies one User.visible.ids\n}", "derivationOf": "HDAENFk5sYytNa4pE", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 16:34:26"} {"_id": "yiTDH3pnRahKbAJKH", "cmd_i": 0, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | visible.w in profile.w\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\t\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall w : Work | \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "KYXqsiL8bqBy9nexy", "msg": "There are 37 possible tokens that can appear here:\n! # ( * @ Int NAME NUMBER STRING String Time ^ after all always before disj eventually fun historically iden int let lone no none once one pred seq set some sum this univ { ~", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 14:41:10"} {"_id": "7PCWcdxw3kmYwFydA", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall u:User,s:Source,i:Id | lone (u.profile & source.s & ids.i)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, i:Id | lone (u.visible & ids.i)\n}", "derivationOf": "cynjxmwYC3DMNoomS", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-13 19:10:26"} {"_id": "igcsyKGXAr2LTqqr4", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.Source in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "wT3222749GAp4iQmf", "msg": "This cannot be a legal relational join where\nleft hand side is u . (this/User <: profile) (type = {this/Work})\nright hand side is this/Source (type = {this/Source})", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 10:59:44"} {"_id": "d2MJbgtP5hRo2Lodr", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u: User | u.visible in u.profile \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u: User, w: u.profile | w.source = u or w.source in Institution\n \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall u: User, w1, w2: u.profile | w1.ids != w2.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "Ph9AjfMm9nPEWJAe7", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-8 21:58:11"} {"_id": "7kLM8PBqgN9Mqk4aA", "cmd_i": 3, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User | (u.profile).source in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w1,w2:Work | (w1 and w2 in u.visible) implies w1.ids != w2.ids\n}", "derivationOf": "xAbEbJTZ3uupKrE26", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-18 23:48:21"} {"_id": "CwqR9eFyzAcxHyH7g", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | all w : u.profile | w.source in u or w.source in Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall u : User | no none\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JpjK4yA7ex3T8ivtK", "msg": "This variable is unused.", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:15:10"} {"_id": "BNhDrXexA8Bd5exdY", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w:Work | w in u.profile implies lone (u.visible.ids & w.ids)\n}", "derivationOf": "oYohGnuPphPeTdFrs", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-9 01:01:01"} {"_id": "MW49nxpKGugTNnEWi", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all x : User | x.profile.source in Institution + x\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all i : Id | lone ids.Id\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "c4NRiD6KMSoGF5gAR", "msg": "This variable is unused.", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:18:42"} {"_id": "XyvmhMKTKZxjM8tMc", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | visible.w in profile.w\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in Institution + u\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tlet s = {u : User, w : Work, s : source | u -> w -> -> s in profile . source} | \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "vTqkadcqTM64KBrBt", "msg": "There are 22 possible tokens that can appear here:\n( * @ Int NAME NUMBER STRING String Time ^ disj fun iden int none pred seq sum this univ { ~", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-18 16:50:00"} {"_id": "iPmnLAij6gzQQG3ke", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tvisible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User | (u.profile).source in (u+Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s:Source,u:User,id:Id | lone (((u.profile) & (source.s)).ids & id)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "NhmFJeqMMX3YwCehS", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 15:25:00"} {"_id": "3cHcKWxE5ou2rzEfF", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | visible.w in profile.w\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in Institution + u\n}\n\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tlet aux = {u, User, w : Work, s : Source | u -> w in profile and w -> s in source} | all s : Source \n \t\t| all disj (u1, w1), (u2, w2) : aux.s | no w1.ids & w2.ids \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "omCtn762Mgi3kpcYF", "msg": "There are 1 possible tokens that can appear here:\n[", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-18 17:17:14"} {"_id": "upvANfve242Keeewn", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible = (visible & profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | (u.profile).source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all w1, w2 : Work, u : User {\n (w1 != w2 and ((w1 + w2) in u.profile) and w1.source = w2.source) implies no (w1.ids & w2.ids)\n }\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w:Work | w in u.profile implies lone (u.visible & w)\n}", "derivationOf": "CXfXfq6S292tRfAZw", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-23 04:43:10"} {"_id": "JLfk5q5j2DaZG8SXu", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w: Work | visible.w in profile.w\n}\n \n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u: User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "QFesqT7CzqgisxYKo", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-12 21:47:09"} {"_id": "3mN72zKkc4JhHAjjZ", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | visible.w in profile.w\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall w : User + Institution | some profile.w\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "5dt3iBJXBRcm5tDpc", "msg": "The join operation here always yields an empty set.\nLeft type = {this/User->this/Work}\nRight type = {this/Source}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 14:50:44"} {"_id": "kzbv2fgCQGxCLE8iQ", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible = (visible & profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | (u.profile).source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n}", "derivationOf": "d7REjFGQwqjhapxYt", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-16 04:07:10"} {"_id": "hBHfcDa8bKYbkiQkP", "cmd_i": 0, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all w:Work | visible.w implies w in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "PsR8zHWAWe5hq8ZXb", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/User}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:08:55"} {"_id": "4jxaihAj79JCqqobc", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w1,w2:Work | (w1.ids=w2.ids) implies (w1 not in u.visible or w2 not in u.visible) \n}", "derivationOf": "ouApXyDcBPtZwEtvK", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-9 01:42:50"} {"_id": "ZXFKfFWN3kEWswSKq", "cmd_i": 0, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all w:Work | some visible.w in w.source\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "C9fhCnFtvCHeayS3L", "msg": "This must be a set or relation.\nInstead, it has the following possible type(s):\n{PrimitiveBoolean}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:07:13"} {"_id": "6MQRiypDXJYQBFm7e", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "hneFsxLdF99YFeQKX", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-19 10:56:20"} {"_id": "dv7cSzLRbRQm7qziC", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \tall w1, w2:Work, u:User, i:Id | ((w1 in u.profile and w2 in u.profile) and (w1.source = w2.source)) implies (w1.ids != w2.ids)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "Be9tfods3wXdGBwBY", "msg": "This variable is unused.", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-8 23:45:45"} {"_id": "xnfD6uxbYJLdjSTkx", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User| all w:(user.profile + user.visible) | w.source in Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "LApxC2YW3yYHdfuWF", "msg": "The name \"user\" cannot be found.", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-1-9 03:41:59"} {"_id": "xtnDK23vMZPukJgDb", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\nall w1, w2 : Work | all u : User | w1 != w2 and (w1 + w2) in u.profile and (w1.source = w2.source) implies no w1.ids & w2.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\nall w1, w2 : Work | all u : User | some (w1.ids & w2.ids) and (w1 + w2) in u.visible and (w1 + w2) in u.profile implies w1.source = w2.source\n}", "derivationOf": "Z2JFLESZ8xsx8GunQ", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-5-7 13:13:59"} {"_id": "6ep8kY7EXsi82L536", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User, w:Work, i:Institution | w in u.profile implies (u in w.source | i in w.source) \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "sYSZh38LNWkegT3Ct", "msg": "There are 1 possible tokens that can appear here:\n)", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-1-8 19:18:38"} {"_id": "w8puRMszM65YhY8az", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\t\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \tall w:Work, w1:Work | (w in User.profile && w1 in User.profile) implies no (w.ids & w1.ids)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\n}", "derivationOf": "vEWsTahZLSaDg6Lnq", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-8 22:22:13"} {"_id": "m5WPkboZJ4k5ZWZSm", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all w : Work | visible.w in w.source\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 10:58:29"} {"_id": "FKAvZdrANiuJ7NZfd", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w1,w2:Work | (((w1.ids=w2.ids) and (w1 in u.profile) and (w2 in u.profile)) implies not ((w1 in u.visible)) and (w2 in u.visible))\n}", "derivationOf": "v3LkC3Xrs7PHP7jhd", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-5-7 12:47:06"} {"_id": "BMBBzuqSJHjjLmhxc", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tvisible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User | (u.profile).source in (u+Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s:Source,u:User | lone ((u.profile)&(source.s))\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n profile.ids in User -> lone Id\n}", "derivationOf": "JvXm6bSpPtNAFLK7k", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 14:09:17"} {"_id": "LQDjkHQAyx8LLqTyy", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-5-4 21:18:14"} {"_id": "STiZyLRFFHQAhdrQs", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | visible.w in profile.w\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in Institution + u\n}\n\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tlet aux = {u, User, w : Work, s : Source | u -> w in profile and w -> s in source}\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "EjfJxGZbqnNPQu6hf", "msg": "There are 3 possible tokens that can appear here:\n, { |", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-18 16:57:34"} {"_id": "ahWsxNyxH6nn9eqdL", "cmd_i": 0, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\n\n\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tUser.visible implies User.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\nids-profile\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\n}", "derivationOf": "qL93QuppNjJLqmfPM", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:16:00"} {"_id": "xaPbNNR62oKpNiSzh", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\t\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | some w : Work | u->w in profile implies some (w<:source).Institution or some (w<:source).User\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tlone Id.Work<:(User.profile)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "RAXH3WtvTbexkk8zK", "msg": "This cannot be a legal relational join where\nleft hand side is this/Id (type = {this/Id})\nright hand side is this/Work (type = {this/Work})", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2019-10-23 08:38:07"} {"_id": "rTrojFudA6F2YvwJw", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s : Source | (profile.ids).~(profile.ids) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\t~(visible.ids).(visible.ids) in iden\n}", "derivationOf": "atZC3LsZATMZYJjk8", "msg": "This variable is unused.", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 22:18:58"} {"_id": "nwiZMi9NWsfdNxLwS", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s1,s2 : Source | s1.profile.ids not in s2.profile.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "XiS3aYwWvEZZRaNoH", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:13:32"} {"_id": "q8wHMYnmC3CeSD2LR", "cmd_i": 0, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tin profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "msg": "There are 38 possible tokens that can appear here:\n! # ( * @ Int NAME NUMBER STRING String Time ^ after all always before disj eventually fun historically iden int let lone no none once one pred seq set some sum this univ { } ~", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2019-11-2 23:26:35"} {"_id": "fTXHEKnrHWLEehyGo", "cmd_i": 3, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w1:Work | w1 in u.visible implies no (u.visible.ids & w.ids)\n}", "derivationOf": "NRFr5bNmusG6tyqnS", "msg": "The name \"w\" cannot be found.", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-1-9 01:06:24"} {"_id": "EekiPDAqckBmcdq6y", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tvisible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "bAfERtvpCf8GampXw", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-12 10:56:45"} {"_id": "6yCpnMKM6tr4y3rhP", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all x : User | x.profile.source in Institution + x\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s: Source | ((source.s & User.profile)<:ids).~((source.s & User.profile)<:ids) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "KaMgoBpWX3DwPezxD", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 22:22:32"} {"_id": "ig8xM4zsc3JJYYLdC", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible = (visible & profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | (u.profile).source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all w1, w2 : Work, u : User {\n (w1 != w2 and ((w1 + w2) in u.profile) and w1.source = w2.source) implies no (w1.ids & w2.ids)\n }\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "XYETJvpvtdjwzebWS", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-23 04:41:41"} {"_id": "C7JoeYZ4cSPmRo4Hh", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n ~ids.ids in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "fzjXpAGBuw267DAF5", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:08:21"} {"_id": "jxXXR3wnf7uohMsBW", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { \n \tall u:User , w:Work | (w in u.profile) implies (w.source = u || w.source = Institution) \n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User | lone (u.profile & u.visible)\n}", "derivationOf": "NMdvRiFXkBTmM7RkY", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-22 10:51:25"} {"_id": "4NH3uLySiYXqotRiR", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\t all u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "zcdZ8SjzGLxmJRzQX", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-1-8 23:00:11"} {"_id": "GWCoicMiL5R4ySNLp", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all x : User | x.profile.source in Institution + x\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s: Source, u: User | ((source.s & u.profile)<:ids).~((source.s & u.profile)<:ids) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u: User | (u.visible<:ids).~(u.visible<:ids) in iden\n}", "derivationOf": "XnMGrNZTn3jaJ4Rx9", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-19 09:01:39"} {"_id": "9uKpQZLm2iqCcex2G", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s: Source, u: User| ((source.s & u.profile)<:ids).~((source.s & u.profile)<:ids) in iden\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\t\n \tall w : Work | visible.w in User and ~ids.ids in iden\n}", "derivationOf": "8MzAaqGXZoktGRXH9", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 22:58:20"} {"_id": "PKaoomahMBfbCWPh9", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User , w:Work, i:Intitution | w in u.profile && w.source == u || w.source == i\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "LJrX2LupejcFSKcmn", "msg": "There are 23 possible tokens that can appear here:\n# ( * @ Int NAME NUMBER STRING String Time ^ disj fun iden int none pred seq sum this univ { ~", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2019-10-21 14:49:10"} {"_id": "6jRrrHifvE9uM2pQM", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w1,w2:Work | w1.ids in w2.ids implies (w1 in u.visible or w2 in u.visible)\n}", "derivationOf": "mMygFyLk7C7cunFyB", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-9 01:36:01"} {"_id": "fJwe3nJ4HWsTFTRv5", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible = (visible & profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | (u.profile).source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all w1, w2 : Work, u : User {\n (w1 != w2 and ((w1 + w2) in u.profile) and w1.source = w2.source) implies no (w1.ids & w2.ids)\n }\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User, w : Work {\n (w in u.profile) implies ((one (w.ids.~ids & u.profile)))\n }\n}", "derivationOf": "hNkwAnxEzpg6YvfXi", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-23 04:50:50"} {"_id": "f2Nybvf7kc6EAjrA2", "cmd_i": 3, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\t\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w:Work | w in u.profile implies lone (w in u.visible)\n}", "derivationOf": "cizXDhJkwf6uk3Row", "msg": "This expression failed to be typechecked line 42, column 49, filename=/tmp/alloy_heredoc4622109296182757646.als", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-1-8 22:58:36"} {"_id": "3Z9FaY2XKu7CxjbXs", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | (User<:visible).w in (User<:profile).w \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\tall u : User | some w : Work | some (u<:visible).w implies lone w\n}", "derivationOf": "AKnhAzSRvNMeorp6Q", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-18 20:20:31"} {"_id": "ejmauvuoAkHygTvSL", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w1,w2:Work | (w1 in u.visible and w2 in u.visible) implies w1!=w2\n}", "derivationOf": "DeANMHnEK5xXqx7Mj", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-9 01:21:48"} {"_id": "F8kkXqthxGdTGjPoY", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\t\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w:Work | w in u.profile implies lone (u.visible & w)\n}", "derivationOf": "f2Nybvf7kc6EAjrA2", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-8 22:58:46"} {"_id": "u5eJnLRRPCQg94qz2", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all w:Work,u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "SizPpdAbpr8dZK3BD", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-19 09:12:53"} {"_id": "P8aSRf8BqqykXTQQq", "cmd_i": 3, "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all x : User | x.profile.source in Institution + x\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s: Source, u: User| ((source.s & u.profile)<:ids).~((source.s & u.profile)<:ids) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all p: Profile | (p.~visible).(~(p.~visible)) in iden\n}", "derivationOf": "NwK9jNDcmn6Zi9pk8", "msg": "The name \"Profile\" cannot be found.", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-18 22:37:13"} {"_id": "mjZTxTxjn9TioB8ia", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { \n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n\tall u:User | all w:(u.profile) | (w.source) in (u + Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall w:Work | lone w.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "8vo2Hsdifx9K3Mvug", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-9 04:05:29"} {"_id": "TS8s9tyaTk7iZyyMP", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | (User<:visible).w in (User<:profile).w \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | some (u<:profile).Work implies some (Work<:source).u or some (Work<:source).Institution \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "AqeA7zD9636gfFyYf", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-18 20:00:38"} {"_id": "6TX92oSKh6sxQqCYm", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall u : User, s : Source | no u.profile & source.s \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "yxuJhNfqwirRbyeYs", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:16:05"} {"_id": "acmazusFzNYZmfQNx", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | (User<:visible).w in (User<:profile).w \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall x, y : Work | no x.ids == y.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "RGtxktTiRbxsA6eom", "msg": "There are 29 possible tokens that can appear here:\n# ( * @ Int NAME NUMBER STRING String Time ^ all disj fun iden int let lone no none one pred seq some sum this univ { ~", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2019-10-18 20:15:24"} {"_id": "3kHzgAq3Y7XEBSLKW", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w: Work | visible.w in profile.w\n}\n \n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u: User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s1, s2: Source| all u: User | s1 = s2 and u.profile.source = s1 or u.profile.source = s2 implies one u.profile.ids \n \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n User.visible.ids in User.profile.ids implies one User.visible.ids\n}", "derivationOf": "4miBPHtGeXTLpcu7t", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 16:34:37"} {"_id": "B3JzJjptmf2ZW62ZM", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User , w:Work, i:Institution | w in u.profile && w.source = u || w.source = i\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "w7tvHH7rRvCzpQSNk", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-21 14:49:24"} {"_id": "iZgLA2fk7rumQyy2A", "cmd_i": 3, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | (u.profile + u.visible).source in (u + Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User, id : u.profile.ids, w1, w2 : Work | w1->id + w2->id in u.visible => w1 = w2\n}", "derivationOf": "uQ5Pt5eDcREGesknW", "msg": "in can be used only between 2 expressions of the same arity.\nLeft type = {this/Work->this/Id}\nRight type = {this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-14 11:02:00"} {"_id": "YM7QwF8rgXE7sfngu", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | (u.profile + u.visible).source in (u + Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall w : source.Source | w->ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "aocBZ2Yhxu8WaTAMF", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/Work->this/Work->this/Id}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-14 10:33:13"} {"_id": "RnSY9GzRzXEX8pSoi", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | (User<:visible).w in (User<:profile).w \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | (u<:profile).Work in (Work<:source).u + (Work<:source).Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tno Work.ids = Work.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "YSbZW4YJpsFPxhkQw", "msg": "= can be used only between 2 expressions of the same arity, or between 2 integer expressions.\nLeft type = {PrimitiveBoolean}\nRight type = {this/Id}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2019-10-18 20:10:42"} {"_id": "7CvsQcg9ToQpHFpEa", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tsome (User<:visible).Work implies some (User<:profile).Work \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "RmngSePZmuf4G6TRi", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-18 19:51:07"} {"_id": "A4tK3zNqfZtsJufPT", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall w:Work,u:User | some u.profile:>w implies (w.source:>u or w.source:>Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "5DC8t6P8QQmBKvLws", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/User}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:18:25"} {"_id": "QBYpyGM9Gv4CPhzbb", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User | u.profile.source in u+Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "HP5v6BzzbXkwThwqG", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-19 08:50:13"} {"_id": "Lo9MpfgCYMwYJf8A5", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | all w : u.profile | w.source in u or w.source in Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall u : User | all w : u.profile | w.ids not in (u.profile - w).ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "eJNkqfn5LMhDevZK7", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:18:38"} {"_id": "eGGoCmswDnawyWSnw", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all x : User | x.profile.source & x.visible.source in Institution + x\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "PEJxqFdgYjgL9NtKY", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:01:32"} {"_id": "xm7AybRKgiKuE2wJd", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all u : User | (u.visible) = u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "RTLuMGfMmN9FY3TJF", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 10:52:31"} {"_id": "9B3iXAfK2vtTxKXs4", "cmd_i": 3, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w1,w2:Work, i:Id | (w1 in u.visible and w2 in u.visible) implies (w1.i != w2.i)\n}", "derivationOf": "ThZdHB9ToAwFrxKk3", "msg": "This cannot be a legal relational join where\nleft hand side is w1 (type = {this/Work})\nright hand side is i (type = {this/Id})", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-1-9 01:31:18"} {"_id": "SpwzP9DRQHQPEfZxT", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all x : User | x.profile.source in Institution + x\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all w1 : Work, w2 : Work | some (w1.ids & w2.ids) implies w1 = w2\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "QCskR6qMXDLmQuJC7", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:15:22"} {"_id": "woYNBC3C2SnWDNFep", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\n\n\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tids-profile\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\n}", "derivationOf": "ZvNrBZTFzK3cd4cv4", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/Work->this/Id}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:19:40"} {"_id": "qAY58WgDuXqKrg8FR", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w: Work | visible.w in profile.w\n}\n \n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u: User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s1, s2: Source| all u: User | s1 = s2 and u.profile.source = s1 or u.profile.source = s2 implies one u.profile.ids \n \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n User.profile.ids = User.visible.ids\n}", "derivationOf": "Lpm9pSjpX86PD4DB4", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 16:32:37"} {"_id": "9kd39BFW2Eod2vDdr", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n \tall u:User | u.visible in u.profile\n \tall w:Work | visible.w in profile.w\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\t \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "LbPK9c8uQEdBqTE8E", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-12 11:13:32"} {"_id": "Qazwsm8ofdFcotqNm", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\nall u:User, w:Work | w in u.profile implies (some i:Institution | u in w.source or i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "SWnc7GC4CAw58LmvR", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-8 22:24:15"} {"_id": "JpjK4yA7ex3T8ivtK", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | all w : u.profile | w.source in u or w.source in Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall u : User | none\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "GooAv5DhMo7L2SmpQ", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{none}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:15:04"} {"_id": "J7temY4hpoPGMzZA5", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { \n \tall u:User , w:Work | (w in u.profile) implies (w.source = u || w.source = Institution) \n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all w:Work, w1:Work | w in User.profile && w1 in User.profile -> no (w.ids & w1.ids)\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w:Work | w in u.profile implies lone (u.visible & w)\n}", "derivationOf": "7AepnJjWbk96e5N5t", "msg": "There are 22 possible tokens that can appear here:\n( * @ Int NAME NUMBER STRING String Time ^ disj fun iden int none pred seq sum this univ { ~", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2019-10-22 10:56:31"} {"_id": "x5qRrpJkSm924p82e", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all w:Work | visible.w = w.source\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "tpWpZCh65cdDbMYik", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:06:41"} {"_id": "aq4So6X3DXrSTL8vi", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all w1, w2 : Work, u : User | ((w1 != w2) and ((w1 + w2) in u.profile) and (w1.source = w2.source)) implies no w1.ids & w2.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "mCdDGZBJD2fEcpk9u", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-23 04:39:37"} {"_id": "h8Y44WbPs6vCeAZG4", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all w:Work | w.visible in w.source \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "RNBmWwMcGDpp7KK7F", "msg": "The join operation here always yields an empty set.\nLeft type = {this/Work}\nRight type = {this/User->this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:04:20"} {"_id": "rR7dXGHRFEjGBYfvS", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | (u.profile + u.visible).source in (u + Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t~(profile.ids).(profile.ids) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "Dy7LxL5m7pvAvafCj", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-14 10:27:16"} {"_id": "yTbZbdtCE8ytPspy2", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \tall w1, w2:Work, u:User | ((w1 in u.profile and w2 in u.profile) and (w1.ids = w2.ids) and (w1.source = w2.source)) implies (w1.ids & w2.ids)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "X7QdS4iyvdnPkXzAc", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/Id}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-1-9 00:44:37"} {"_id": "ejFXkHfhJh3hwRZH6", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\t\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w1,w2:Work | u->w1 in visible \n}", "derivationOf": "y7NHMATrF9Q9AMLQg", "original": "JC8Tij8o8GZb99gEJ", "theme": {"currentFramePosition": {}, "currentlyProjectedSigs": [], "generalSettings": {"currentLayout": "breadthfirst", "metaPrimSigs": [{"parent": null, "type": "univ"}, {"parent": "univ", "type": "Id"}, {"parent": "Source", "type": "Institution"}, {"parent": "univ", "type": "Int"}, {"parent": "univ", "type": "RejectedBy"}, {"parent": "RejectedBy", "type": "ShouldBeAccepted"}, {"parent": "RejectedBy", "type": "ShouldBeRejected"}, {"parent": "univ", "type": "Source"}, {"parent": "univ", "type": "String"}, {"parent": "null", "type": "univ"}, {"parent": "Source", "type": "User"}, {"parent": "univ", "type": "Work"}, {"parent": "Int", "type": "seq/Int"}, {"parent": "univ", "type": "Id"}, {"parent": "Source", "type": "Institution"}, {"parent": "univ", "type": "Int"}, {"parent": "univ", "type": "RejectedBy"}, {"parent": "RejectedBy", "type": "ShouldBeAccepted"}, {"parent": "RejectedBy", "type": "ShouldBeRejected"}, {"parent": "univ", "type": "Source"}, {"parent": "univ", "type": "String"}, {"parent": "null", "type": "univ"}, {"parent": "Source", "type": "User"}, {"parent": "univ", "type": "Work"}, {"parent": "Int", "type": "seq/Int"}], "metaSubsetSigs": []}, "nodePositions": {"Institution": {"x": 761.1428571428571, "y": 199}, "ShouldBeRejected": {"x": 126.85714285714283, "y": 199}, "User": {"x": 634.2857142857142, "y": 199}, "Work0": {"x": 380.57142857142856, "y": 199}, "Work1": {"x": 507.42857142857144, "y": 199}, "Work2": {"x": 253.71428571428572, "y": 199}}, "relationSettings": {"edgeColors": [{"color": "#0074D9", "relation": "ids"}, {"color": "#0074D9", "relation": "profile"}, {"color": "#0074D9", "relation": "source"}, {"color": "#0074D9", "relation": "visible"}, {"color": "#0074D9", "relation": "ShouldBeAccepted"}], "edgeStyles": [{"edgeStyle": "solid", "relation": "ids"}, {"edgeStyle": "solid", "relation": "profile"}, {"edgeStyle": "solid", "relation": "source"}, {"edgeStyle": "solid", "relation": "visible"}], "showAsArcs": [{"relation": "general", "showAsArcs": true}, {"relation": "ids", "showAsArcs": false}, {"relation": "profile", "showAsArcs": true}, {"relation": "source", "showAsArcs": true}, {"relation": "visible", "showAsArcs": true}, {"relation": "ShouldBeRejected", "showAsArcs": true}, {"relation": "ShouldBeAccepted", "showAsArcs": true}, {"relation": "Id", "showAsArcs": true}, {"relation": "Work", "showAsArcs": true}, {"relation": "Institution", "showAsArcs": true}], "showAsAttributes": [{"relation": "visible", "showAsAttributes": false}, {"relation": "profile", "showAsAttributes": false}, {"relation": "ids", "showAsAttributes": true}, {"relation": "source", "showAsAttributes": false}]}, "sigSettings": {"nodeBorders": [{"border": "solid", "type": "univ"}, {"border": "inherit", "type": "Id"}, {"border": "inherit", "type": "Int"}, {"border": "inherit", "type": "User"}, {"border": "inherit", "type": "Source"}, {"border": "inherit", "type": "Work"}, {"border": "inherit", "type": "ShouldBeRejected"}, {"border": "inherit", "type": "RejectedBy"}, {"border": "inherit", "type": "seq/Int"}, {"border": "inherit", "type": "general"}, {"border": "inherit", "type": "Institution"}, {"border": "inherit", "type": "ShouldBeAccepted"}, {"border": "inherit", "type": "ids"}], "nodeColors": [{"color": "#2ECC40", "type": "univ"}, {"color": "inherit", "type": "Id"}, {"color": "inherit", "type": "Int"}, {"color": "inherit", "type": "User"}, {"color": "inherit", "type": "Source"}, {"color": "#39CCCC", "type": "Work"}, {"color": "#FF4136", "type": "ShouldBeRejected"}, {"color": "inherit", "type": "RejectedBy"}, {"color": "inherit", "type": "seq/Int"}, {"color": "inherit", "type": "general"}, {"color": "#FFDC00", "type": "Institution"}, {"color": "#FF4136", "type": "ShouldBeAccepted"}, {"color": "inherit", "type": "ids"}], "nodeShapes": [{"shape": "ellipse", "type": "univ"}, {"shape": "inherit", "type": "Id"}, {"shape": "inherit", "type": "Int"}, {"shape": "inherit", "type": "User"}, {"shape": "inherit", "type": "Source"}, {"shape": "roundrectangle", "type": "Work"}, {"shape": "octagon", "type": "ShouldBeRejected"}, {"shape": "inherit", "type": "RejectedBy"}, {"shape": "inherit", "type": "seq/Int"}, {"shape": "inherit", "type": "general"}, {"shape": "inherit", "type": "Institution"}, {"shape": "octagon", "type": "ShouldBeAccepted"}, {"shape": "inherit", "type": "ids"}], "nodeVisibility": [{"type": "univ", "visibility": false}, {"type": "Int", "visibility": true}, {"type": "general", "visibility": false}, {"type": "Id", "visibility": true}, {"type": "User", "visibility": false}, {"type": "Work", "visibility": false}, {"type": "ShouldBeRejected", "visibility": false}, {"type": "Institution", "visibility": false}, {"type": "ShouldBeAccepted", "visibility": false}, {"type": "ids", "visibility": false}]}}, "time": "2019-11-10 22:16:32"} {"_id": "yzsu8o3doZ8P9osiw", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible = (visible & profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u->(profile->source) in (u + Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "LGxDFeYaPv9NKJmx5", "msg": "in can be used only between 2 expressions of the same arity.\nLeft type = {this/User->this/User->this/Work->this/Work->this/Source}\nRight type = {this/Source}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:11:15"} {"_id": "imAxrTKfW8D47XiAt", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w: Work | visible.w in profile.w\n}\n \n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u: User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\tall w: Work | all disj i1,i2: Id | all disj s1, s2: Source | profile.w and s1 in w.source and i1 in w.ids implies no w.s2 and no w.i2\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "kDqkxY4yXCHefGCXR", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/User}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 21:55:34"} {"_id": "5Tzy5cLujTKsjsSs7", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | (User<:visible).w in (User<:profile).w \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | Work.(u<:profile) in (Work<:source).u + (Work<:source).Institution \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "376iCeRXh3ZFGZqhB", "msg": "The join operation here always yields an empty set.\nLeft type = {this/Work}\nRight type = {this/User->this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-18 20:06:08"} {"_id": "A3qXSY2jBWNmfoses", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\t\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall w1, w2:Work, u:User | (w1 in u.profile and w2 in u.profile) implies w1.ids != w2.ids \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "Cfka7imX5vWfNmgLH", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-8 19:24:10"} {"_id": "kDE99N5gDMznn99bh", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible = (visible & profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | (u.profile).source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n}", "derivationOf": "Hq6vps6czLXJ6gqfN", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-12 11:52:09"} {"_id": "oYN8CudxeQNBFNbCP", "cmd_i": 0, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\n\n\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tUser.visible implies profile.User\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\nids-profile\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\n}", "derivationOf": "ahWsxNyxH6nn9eqdL", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:16:08"} {"_id": "cynjxmwYC3DMNoomS", "cmd_i": 3, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall u:User,s:Source,i:Id | lone (u.profile & source.s & ids.i)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u.User, i:Id | lone (u.visible & ids.i)\n}", "derivationOf": "Dpd6NzwZ3DpXSDehu", "msg": "The \"all x\" construct is no longer supported. If you know the range of possible values of x, consider rewriting it as \"x == set_of_all_possible_values\".", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-13 19:10:15"} {"_id": "K5uokKf2hMZ4aQAnG", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all w : Work | visible.w = w.source\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "m5WPkboZJ4k5ZWZSm", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:00:48"} {"_id": "kHpdn85yXmRiy2PrX", "cmd_i": 3, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\nall w1, w2 : Work | all u : User | w1 != w2 and (w1 + w2) in u.profile and (w1.source = w2.source) implies no w1.ids & w2.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\nall w1, w2 : Work | all u : User | w1.ids == w2.ids and (w1 + w2) in u.visible and (w1 + w2) in u.profile implies w1.source = w2.source \n}", "derivationOf": "vf7jbfF7ws8drN4vw", "msg": "There are 29 possible tokens that can appear here:\n# ( * @ Int NAME NUMBER STRING String Time ^ all disj fun iden int let lone no none one pred seq some sum this univ { ~", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-5-7 13:09:05"} {"_id": "24Fpc5LRmo2Ja6WpF", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all x : User | x.profile.source in Institution + x\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n one ids.(~source.ids)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "pfgLuNzMAbRkgyRLk", "msg": "The join operation here always yields an empty set.\nLeft type = {this/Work->this/Id}\nRight type = {this/Source->this/Id}", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-18 22:00:36"} {"_id": "9G9b6oW3rZFi8Ggbz", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall u:User,s:Source,i:Id | lone (u.profile & source.s & ids.i)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User| lone (u.visible.ids)\n}", "derivationOf": "Jkrx7gppcqcuKf6G9", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-13 19:12:48"} {"_id": "fYSP7DDTr4AhbsPfA", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | (User<:visible).w in (User<:profile).w \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "7ycawySxfXFWoY4HF", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2019-10-18 19:52:52"} {"_id": "j26aQRu5GnPSpfnaJ", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "8MLXbBNa6j6gS589n", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-12 11:16:44"} {"_id": "TTgZvLrZ5n2C3DiXM", "cmd_i": 3, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible = (visible & profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User, w : Work | one (u.profile.w.id)\n}", "derivationOf": "EkoPDh5jWBz7H8mhK", "msg": "This cannot be a legal relational join where\nleft hand side is u . (this/User <: profile) (type = {this/Work})\nright hand side is w (type = {this/Work})", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:20:06"} {"_id": "xwapHuF8hLsmnhGwZ", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n (profile.ids).~(profile.ids) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\t~(visible.ids).(visible.ids) in (User -> Id)\n}", "derivationOf": "vNczhEtfY8gLwrSGr", "msg": "Subset operator is redundant, because the left and right subexpressions are always disjoint.\nLeft type = {this/Id->this/Id}\nRight type = {this/User->this/Id}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 22:01:30"} {"_id": "4K7dNwtaBWtgYjwoX", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n iden in (profile.ids).~(profile.ids)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "tvGB3iWnkEFFcmbDW", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:17:38"} {"_id": "bKcAtAFTFAXTbfz8W", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u: User | (visible:>u.profile).~(visible:>u.profile) in iden\n}", "derivationOf": "W46xrNFTKqJr8ejh6", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 22:43:46"} {"_id": "NHAtfykDkJ6uhbF4m", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tvisible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User | (u.profile).source in (u+Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s:Source,u:User | lone ((u.profile)&(source.s))\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n profile.ids in User -> lone Id\n}", "derivationOf": "tD9cSz4eAYSR8WuRP", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-12 14:28:06"} {"_id": "QFesqT7CzqgisxYKo", "cmd_i": 0, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w: Work | visible.w profile.w\n}\n \n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u: User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "Q37WyoTfpfJHebzfP", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/User}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 21:47:01"} {"_id": "AC9Fp46YgcQ6memWw", "cmd_i": 0, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w1, w2 : Work | w1->w2 in visible w1->w2 and in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "xR4ZJuT4tun6SYY3q", "msg": "There are 37 possible tokens that can appear here:\n! # ( * @ Int NAME NUMBER STRING String Time ^ after all always before disj eventually fun historically iden int let lone no none once one pred seq set some sum this univ { ~", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2019-11-2 23:28:15"} {"_id": "H2gY3AxRxaBiSa869", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\t\n\tUser.visible in User.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "gW2vvhfshgogitqHw", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-22 10:44:29"} {"_id": "8bHGkC4x7aZxExzmD", "cmd_i": 3, "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all x : User | x.profile.source in Institution + x\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s: Source, u: User | ((source.s & u.profile)<:ids).~((source.s & u.profile)<:ids) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u: User | none ^((u.visible<:ids).~(u.visible<:ids))\n}", "derivationOf": "HNj7TnvXrdcm55DDA", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{none}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-19 09:15:00"} {"_id": "7JBkTzv4vBc7uNv2Z", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible = (visible & profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | (u.profile).source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all w1, w2 : Work, u : User {\n (w1 != w2 and ((w1 + w2) in u.profile) and w1.source = w2.source) implies no (w1.ids & w2.ids)\n }\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User, w : Work {\n (w in u.profile) implies ((one (w.ids.~ids & u.profile)) )\n }\n}", "derivationOf": "cZREmF49tcjEwm4jr", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-23 04:49:04"} {"_id": "w7NB5qKjw2Da9jfp9", "cmd_i": 0, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\n\n\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tvisible.Work implies User.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\n}", "derivationOf": "uhmx3skse9D3D8XvY", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/User}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:08:41"} {"_id": "nTwBfd2T6vxP9jEYt", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s: Source, u: User| ((source.s & u.profile)<:ids).~((source.s & u.profile)<:ids) in iden\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\t\n \tall w : Work | visible.w in User \n}", "derivationOf": "qKrWQrPpDBSS5aFTQ", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 23:01:12"} {"_id": "kj7qwhinpdW2z7avk", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall w1, w2 : Work, u : User | w1 != w2 and (w1 + w2) in u.profile and (w1.source = w2.source) implies no w1.ids & w2.ids\n}\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\tall u : User, w1, w2 : Work | w1 != w2 and (w1 + w2) in u.visible implies w1.source != w2.source or (w1.ids != w2.ids)\n}", "derivationOf": "8GdwHBHExeKMSj95u", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-11-3 20:45:52"} {"_id": "QepEQ4eQgffzEsrG3", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { \n \tall u:User , w:Work | (w in u.profile) implies (w.source = u || w.source = Institution) \n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w:Work | lone (u.visible & w)\n}", "derivationOf": "jxXXR3wnf7uohMsBW", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-22 10:52:23"} {"_id": "wkmmpkoW2hQkR4zng", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible = (visible & profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | (u.profile.source) in (Institution & u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User, w : Work | one (u.profile.w.id)\n}", "derivationOf": "b7B8zm95jvJPhcmnW", "msg": "This cannot be a legal relational join where\nleft hand side is u . (this/User <: profile) (type = {this/Work})\nright hand side is w (type = {this/Work})", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:46:31"} {"_id": "KbsfXtF8WRZRzWz5Z", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \tall w1, w2:Work, u:User | ((w1 in u.profile and w2 in u.profile) and (w1.source = w2.source)) implies (w1.ids not in w2.ids and w2.ids not in w1.ids)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "KdHubCyLquQvgaCa9", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-9 00:53:05"} {"_id": "4KenfPQvaGueF7yD5", "cmd_i": 0, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\t\tsome w: Work | w in User.visible in User.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "msg": "This must be a set or relation.\nInstead, it has the following possible type(s):\n{PrimitiveBoolean}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:00:08"} {"_id": "gAorppde5XwZCgfDZ", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s : Source | (profile.ids).~(profile.ids) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\tone (visible.ids).~(visible.ids)\n}", "derivationOf": "mn2k25f868MFxWLZ3", "msg": "This variable is unused.", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 22:23:01"} {"_id": "LbPK9c8uQEdBqTE8E", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n \tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\t \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "8wDonbyyqGTLgEAzD", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-12 11:13:11"} {"_id": "N8NXMSBu3XkTLuzMY", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | (User<:visible).w in (User<:profile).w \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | (Work<:source).u in (Work<:source).Institution \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "4G7RRmwH4QByKyJsu", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-18 20:03:44"} {"_id": "KNTjuEEjusNrhsW3p", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tUser.visible in User.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:04:40"} {"_id": "7Wm5BceyftgX3KTdd", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \tall w1, w2:Work, u:User | ((w1 in u.profile and w2 in u.profile) and (w1.ids = w2.ids) and (w1.source = w2.source)) implies w1=w2\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "amtS74PWTLwJJaPjk", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-9 00:38:26"} {"_id": "ua3cMPfgqWwpLHAxP", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "QRGjos7D2ao7fWRyN", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-5-4 21:17:09"} {"_id": "nPTH3KxhWPikPr8QM", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall w1, w2:Work, u:User, i:Institution | w1, w2 in u.profile implies (u in w1.source and i in w2.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\n}", "derivationOf": "6YA2A5MNR9u6LYNSi", "msg": "There are 38 possible tokens that can appear here:\n! # ( * @ Int NAME NUMBER STRING String Time ^ after all always before disj eventually fun historically iden int let lone no none once one pred seq set some sum this univ { } ~", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-1-8 19:39:26"} {"_id": "WQNR6jAhP5MPnp7jQ", "cmd_i": 3, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tvisible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User | (u.profile).source in (u+Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s:Source,u:User | lone ((u.profile) & (source.s)).ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n ~(visible.ids) in Id -> lone User and \n}", "derivationOf": "aarCBAWZYbYSbmu7g", "msg": "There are 37 possible tokens that can appear here:\n! # ( * @ Int NAME NUMBER STRING String Time ^ after all always before disj eventually fun historically iden int let lone no none once one pred seq set some sum this univ { ~", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 14:54:20"} {"_id": "wDNHXp7kRjKguLHAD", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tUser.visible in User.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "WYu5bGKoMsSbjoZrm", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-8 12:15:26"} {"_id": "Lpm9pSjpX86PD4DB4", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w: Work | visible.w in profile.w\n}\n \n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u: User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s1, s2: Source| all u: User | s1 = s2 and u.profile.source = s1 or u.profile.source = s2 implies one u.profile.ids \n \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n User.profile.ids = User.visible.ids\n}", "derivationOf": "niXbqAHh6tASPKNse", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 16:32:31"} {"_id": "GT4sw2AngZ27QTicQ", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w1,w2:Work | ((w1.ids=w2.ids) implies not ((w1 in u.visible)) and (w2 in u.visible))\n}", "derivationOf": "m9rLGJzkauHqa4eNj", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-5-7 12:45:01"} {"_id": "jFRiM8jWxbEMNGjW7", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User, w:Work | some i:Institution | w in u.profile implies u in w.source or i in w.source\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\n}", "derivationOf": "eEtGiGoHPbgacYcW9", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-8 22:09:03"} {"_id": "3hhRRA3K4RrN5x494", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall u : User, some id1, id2 : Id | some u.profile.Work.id1 and u.profile.Work.id2 implies id1 != id2\n}\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "Hrdvf3DPrDC3uCCrE", "msg": "There are 8 possible tokens that can appear here:\nNAME disj exh part private seq this var", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2019-11-3 20:22:25"} {"_id": "58frJGDRTc7f2GkFP", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tvisible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User | (u.profile).source in (u+Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n visible.ids in User lone -> Id\n}", "derivationOf": "vTBcqg43nTivkwQ96", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 14:36:27"} {"_id": "teM7LEgo2x3GwLx6z", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s: Source, u: User| ((source.s & u.profile)<:ids).~((source.s & u.profile)<:ids) in iden\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\tall w: Work | ~((visible:>w).ids).((visible:>w).ids) in iden\n}", "derivationOf": "nx7dsrpjCDeWqifuK", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 22:36:41"} {"_id": "moTyeHEnfpeN4rkQT", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User, w:Work | w in u.profile implies (u in w.source) or (some Institution in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\tall u:User, w:Work | w in u.profile implies lone (u.visible & w)\n}", "derivationOf": "f5v2qQh8KsLWd35Xp", "msg": "This must be a set or relation.\nInstead, it has the following possible type(s):\n{PrimitiveBoolean}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-1-8 22:30:53"} {"_id": "agCFMxrg4Pxo9ReGL", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile \n}\n\n\npred Inv2 { \n\tall u:User ,i:Institution | u.profile.source = u || u.profile.source = i\n}\n\n\npred Inv3 { \n\tall u:User, w:Work, w1:Work | w.source = w1.source && w1 in u.profile && w in u.profile implies w.ids != w1.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User , w:Work, w1:Work | (w in u.visible and w1 in u.visible) implies w != w1\n}", "derivationOf": "NMBrB7GmXnjoHSQ8F", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-21 15:13:38"} {"_id": "sAdKrh3pznR5eirLY", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w1,w2:Work | ((w1.ids in w2.ids or w2.ids in w1.ids) and (w1 in u.visible)) implies w2 not in u.visible\n}", "derivationOf": "iu7jCaZodeiZ4EXgP", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-9 01:16:57"} {"_id": "Cvvoy6tBTDLTHKL3p", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\t\n User.visible in User.profile & User\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "sDLJQh4DCzvXancwh", "msg": "& is irrelevant because the two subexpressions are always disjoint.\nLeft type = {this/Work}\nRight type = {this/User}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-21 14:40:52"} {"_id": "NhmFJeqMMX3YwCehS", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tvisible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User | (u.profile).source in (u+Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s:Source,u:User | all disj i1,i2 : ((u.profile) & (source.s)).ids | i1 != i2\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "jKsCEjD7yuuCPC2sB", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 15:22:27"} {"_id": "mC9XySB57i8Eym3h2", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\t\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | some w : Work | u->w in profile implies some (w.source).Institution or (w.source).User\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "PrN5iKAuPvbHGnNoJ", "msg": "This cannot be a legal relational join where\nleft hand side is w . (this/Work <: source) (type = {this/Source})\nright hand side is this/Institution (type = {this/Institution})", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2019-10-23 08:35:03"} {"_id": "ZPWr4ocuqS5DJs8Pw", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\nall u:User, w:Work | some i:Institution | w in u.profile implies (u in w.source or i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-8 22:23:11"} {"_id": "XwYbneKsxnYLG8x8G", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-12 10:56:58"} {"_id": "TRHw7LGST7e9r6Jg6", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w: Work | visible.w in profile.w\n}\n \n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u: User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s1, s2: Source| all u: User | s1 = s2 and u.profile.source = s1 or u.profile.source = s2 implies one u.profile.ids \n \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all w1, w2: Work | one User.profile.ids = User.visible.ids\n}", "derivationOf": "3WfEmsgQRFciMx2Ez", "msg": "= can be used only between 2 expressions of the same arity, or between 2 integer expressions.\nLeft type = {PrimitiveBoolean}\nRight type = {this/Id}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-18 16:32:17"} {"_id": "gM3ZMqbHoNRByaoEv", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w: Work | visible.w in profile.w\n}\n \n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u: User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s1, s2: Source | s1= s2 implies s1.profile.Id != s2.profile.Id\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "4Njy4Rfzi2RQNJ8WT", "msg": "This cannot be a legal relational join where\nleft hand side is s1 . (this/User <: profile) (type = {this/Work})\nright hand side is this/Id (type = {this/Id})", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-18 16:18:47"} {"_id": "JuqqLdzAgtTnQ6x5B", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tUser.visible in User.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "EekiPDAqckBmcdq6y", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 10:58:28"} {"_id": "7bRgJci2y3uFx53kq", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n profile.User = profile.User\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "vjWG56NLecy8PKnXf", "msg": "The join operation here always yields an empty set.\nLeft type = {this/User->this/Work}\nRight type = {this/User}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:09:43"} {"_id": "7YqMzCPMQJZZw6Tho", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User | all w1, w2 : Work | (w1 != w2 and (w1 + w2) in u.visible) implies (w1.ids != w2.ids and w1.source != w2.source)\n}", "derivationOf": "LAAraRBsadgfBj5n3", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-11-3 20:32:00"} {"_id": "hNkwAnxEzpg6YvfXi", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible = (visible & profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | (u.profile).source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all w1, w2 : Work, u : User {\n (w1 != w2 and ((w1 + w2) in u.profile) and w1.source = w2.source) implies no (w1.ids & w2.ids)\n }\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User, w : Work {\n (w in u.profile) implies ((one (w.ids.~ids & u.profile)) and (one (w.ids)))\n }\n}", "derivationOf": "7JBkTzv4vBc7uNv2Z", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-23 04:49:50"} {"_id": "ANnoamq59hTJBPQr3", "cmd_i": 0, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User, w:Worker| \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "DusGALJ2uDLcgh42D", "msg": "There are 37 possible tokens that can appear here:\n! # ( * @ Int NAME NUMBER STRING String Time ^ after all always before disj eventually fun historically iden int let lone no none once one pred seq set some sum this univ { ~", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-17 17:38:13"} {"_id": "bJ2tatvDF9q6ehbru", "cmd_i": 0, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n \tall u:User | visible.u in profile.u\n \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\t all u:User | profile.u\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "9kd39BFW2Eod2vDdr", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{none}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:14:19"} {"_id": "E57NPKB4LGkEFvbj3", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tvisible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User | (u.profile).source in (u&Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "Cvyqf3Faj4RXQ8NsJ", "msg": "& is irrelevant because the two subexpressions are always disjoint.\nLeft type = {this/User}\nRight type = {this/Institution}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 10:58:15"} {"_id": "7sSZBQ8oyinfuzemd", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u :User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User | u.profile.source in (Institution+u)\n}\t\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall disj w1,w2:Work, u:User | (w1+w2) in u.profile implies no (w1.ids & w2.ids)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "Kwr4dtiqWhxdwa4DT", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:15:31"} {"_id": "r5qMxvq68J7b2aMnd", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | (User<:visible).w in (User<:profile).w \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | (u<:profile).Work in (Work<:source).u + (Work<:source).Institution \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "5Tzy5cLujTKsjsSs7", "msg": "Subset operator is redundant, because the left and right subexpressions are always disjoint.\nLeft type = {this/User}\nRight type = {this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-18 20:06:39"} {"_id": "jLiyrCdKrqCgPn5B6", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tvisible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u: User | u.profile.source in (u + Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall u: User | one u.profile.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "XDfQpKdHhbPzWCGPt", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:07:52"} {"_id": "nfS5CP6brQkS8Wgsg", "cmd_i": 3, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | (User<:visible).w in (User<:profile).w \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\tall u : User | some w1, w2 : Work | some (u<:visible).w1 and (u<:visible).w1 implies w1=w2\n}", "derivationOf": "3Z9FaY2XKu7CxjbXs", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/User}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2019-10-18 20:21:30"} {"_id": "vjWG56NLecy8PKnXf", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n User.visible = User.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "WwFRyusjLKndNusi7", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:09:21"} {"_id": "Ergot8JFX3xqkocF6", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all x : User | x.profile.source in Institution + x\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all i : Id | lone ids.Id\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JKq3KGDTRZ7z8WHPk", "msg": "This variable is unused.", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 21:47:49"} {"_id": "Hq6vps6czLXJ6gqfN", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible = (visible & profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | (u.profile).source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User, w : Work | one (u.profile.w.id)\n}", "derivationOf": "v4nHNB8MgMvtobqJM", "msg": "This cannot be a legal relational join where\nleft hand side is u . (this/User <: profile) (type = {this/Work})\nright hand side is w (type = {this/Work})", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:52:00"} {"_id": "8MzAaqGXZoktGRXH9", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s: Source, u: User| ((source.s & u.profile)<:ids).~((source.s & u.profile)<:ids) in iden\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\t\n \tall w : Work | visible.w in User and ids.~ids in iden\n}", "derivationOf": "5ortdgo9izgnt3H7Q", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 22:57:42"} {"_id": "XPqT6TWoRBFjRQheM", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \tall w1, w2:Work, u:User | ((w1 in u.profile and w2 in u.profile) and (w1.ids = w2.ids) and (w1.source = w2.source)) implies (w1.ids & w2.ids)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "yTbZbdtCE8ytPspy2", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/Id}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-1-9 00:44:48"} {"_id": "NjrFfxN4PNyfZXJiP", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s: Source, u: User| ((source.s & u.profile)<:ids).~((source.s & u.profile)<:ids) in iden\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\t(visible.ids).~(visible.ids) in iden\n}", "derivationOf": "4ZE2dNLo22E7sweZM", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 22:28:04"} {"_id": "NMBrB7GmXnjoHSQ8F", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile \n}\n\n\npred Inv2 { \n\tall u:User ,i:Institution | u.profile.source = u || u.profile.source = i\n}\n\n\npred Inv3 { \n\tall u:User, w:Work, w1:Work | w.source = w1.source && w1 in u.profile && w in u.profile implies w.ids != w1.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User , w:Work, w1:Work | w in u.visible && w1 in u.visible implies w != w1\n}", "derivationOf": "75iF8xATfjXTgungZ", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-21 15:12:10"} {"_id": "z7FWqSdeX3T4SfoWT", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | (u.profile) in (source.u + source.Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "SfRGvbCx7Wz3pnsiA", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-12 11:04:29"} {"_id": "QzjmGhC6rtCZxNMzP", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall u:User,s:Source,i:Id | lone (u.profile & source.s & ids.i)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, i:Id, w:Work | lone (u.visible & ids.i) and lone (w.ids) \n}", "derivationOf": "udpxnorC3Z976YNSx", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-13 19:17:25"} {"_id": "ZBBN99xR8hqEkR3Dm", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | (u.profile + u.visible).source in (u + Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User | (u.visible <: ids).~(u.visible <: ids) in iden\n}", "derivationOf": "3wxNCTSFsWRnHd9Ac", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-14 10:54:10"} {"_id": "4G7RRmwH4QByKyJsu", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | (User<:visible).w in (User<:profile).w \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | some (u<:profile).Work implies some (Work<:source).u & (Work<:source).Institution \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "AuzxczeXW4zALZSX8", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-18 20:03:29"} {"_id": "y7NHMATrF9Q9AMLQg", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\t\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w1,w2:Work | u->w1 in visible \n}", "derivationOf": "vYE24qm9TKgCzA4KA", "msg": "This variable is unused.", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-11-10 21:33:00"} {"_id": "DC8vx4iTqCmpLSBLE", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n (profile.ids).~(profile.ids) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\tone ~(visible.ids).(visible.ids)\n}", "derivationOf": "D8CMbsCpvN9jgaJsN", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 21:58:27"} {"_id": "egkNyjhjAcdZTRt4C", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u: User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-9-21 14:52:59"} {"_id": "epx4oxtiuZbi2DpvN", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w: Work | visible.w in profile.w\n}\n \n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u: User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\tall w: Work | some s: Source | User.profile in w.s implies one w.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "96AqeGtWQMFwYgum7", "msg": "This cannot be a legal relational join where\nleft hand side is w (type = {this/Work})\nright hand side is s (type = {this/Source})", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 21:58:35"} {"_id": "4oQGs4Kh4rJch3uhH", "cmd_i": 0, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all x : x.profile.source & x.visible.source in Institution + x\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "dWoDtKp5iwAgWB8Gk", "msg": "There are 3 possible tokens that can appear here:\n, { |", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:01:20"} {"_id": "Ydb5ccn8Dja6xc7se", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all w:Work | visible.w in profile.w\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "5hR3zboSLrQ238yie", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-12 11:10:21"} {"_id": "kDqkxY4yXCHefGCXR", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w: Work | visible.w in profile.w\n}\n \n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u: User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\tall w: Work | all disj i1,i2: Id | all disj s1, s2: Source | profile.w and w.s1 and w.i1 implies no w.s2 and no w.i2\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "chcnrRtvWwWcNs9JK", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/User}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 21:54:15"} {"_id": "6YA2A5MNR9u6LYNSi", "cmd_i": 3, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\t\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \tall u:User, w:Work | lone w in u.visible\n}", "derivationOf": "xqvvTtnrwgTkMJMWJ", "msg": "This must be a set or relation.\nInstead, it has the following possible type(s):\n{PrimitiveBoolean}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-1-8 19:32:26"} {"_id": "hneFsxLdF99YFeQKX", "cmd_i": 0, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall w:Work,u:User | w in u.profile implies (w.source:>u or w.source:>Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "uSP9kjmiYgRWs4ShK", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/User}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-19 10:56:13"} {"_id": "wc7uBBgTpwRi92nAn", "cmd_i": 3, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible = (visible & profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | (u.profile).source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all w1, w2 : Work, u : User {\n (w1 != w2 and ((w1 + w2) in u.profile) and w1.source = w2.source) implies no (w1.ids & w2.ids)\n }\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User, w : Work {\n (w in u.profile) implies one (one w.ids.(~ids) & u.profile)\n }\n}", "derivationOf": "Lw4EpcFSybd5kKEPW", "msg": "This expression failed to be typechecked line 45, column 30, filename=/tmp/alloy_heredoc11720086247465676890.als", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-23 04:46:52"} {"_id": "TaMAi2EJMTKcutYwg", "cmd_i": 0, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u: User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u: User | all work : u.profile | no (work.ids - user - Institution)\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "egkNyjhjAcdZTRt4C", "msg": "The name \"user\" cannot be found.", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-9-21 14:55:22"} {"_id": "rhuTToJFn6udWiCZR", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s : Source | (profile.ids).~(profile.ids) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\tlone (visible.ids).~(visible.ids)\n}", "derivationOf": "gAorppde5XwZCgfDZ", "msg": "This variable is unused.", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 22:23:07"} {"_id": "osTG26A8rTZz4SYpE", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all w:Work | w.source in visible.w\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "ZXFKfFWN3kEWswSKq", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:08:12"} {"_id": "stFfzBwP8Cs2YPTrf", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all w:Work | visible.w in w.source\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "x5qRrpJkSm924p82e", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:06:44"} {"_id": "WkFfMWzK8PLyHnX6y", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User , w:Work, i:Institution | w in u.profile && (w.source = u || w.source = i)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "B3JzJjptmf2ZW62ZM", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-21 14:50:03"} {"_id": "PYpbGQchPGFgDAWaR", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\t\n \tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\t\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "QCD3BhKciTQsHjhhM", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-1-8 22:59:29"} {"_id": "6zv6D8Jhhq8K4FyCE", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n ~(profile.ids).(profiles.ids) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "6hTffXB5hReGEkznX", "msg": "The name \"profiles\" cannot be found.", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:16:51"} {"_id": "D8CMbsCpvN9jgaJsN", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n (profile.ids).~(profile.ids) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\t(visible.ids).~(visible.ids) in iden\n}", "derivationOf": "k2Pq5H685bikiBKxs", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 21:58:05"} {"_id": "WrZYLWP2n4P5ddAMM", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u: User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u: User | all work : u.profile | no (work.ids - u - Institution)\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "TaMAi2EJMTKcutYwg", "msg": "- is irrelevant since the right expression is redundant.\nParent's relevant type = {this/Id}\nLeft type = {this/Id}\nRight type = {this/User}", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-9-21 14:55:29"} {"_id": "wt9gy3cQBPz2SSN3P", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible = (visible & profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | ((u->profile)->source) in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User, w : Work | one (u.profile.w.id)\n}", "derivationOf": "CwzmRfX7w8F9zxXAz", "msg": "in can be used only between 2 expressions of the same arity.\nLeft type = {this/User->this/User->this/Work->this/Work->this/Source}\nRight type = {this/Source}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:49:06"} {"_id": "chcnrRtvWwWcNs9JK", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w: Work | visible.w in profile.w\n}\n \n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u: User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\tall w: Work | all disj i1,i2: Id | all disj s1, s2: Source | profile.w and w.s1 and w.i1 implies \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JLfk5q5j2DaZG8SXu", "msg": "There are 37 possible tokens that can appear here:\n! # ( * @ Int NAME NUMBER STRING String Time ^ after all always before disj eventually fun historically iden int let lone no none once one pred seq set some sum this univ { ~", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 21:53:49"} {"_id": "udpxnorC3Z976YNSx", "cmd_i": 3, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall u:User,s:Source,i:Id | lone (u.profile & source.s & ids.i)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, i:Id, w:Work | lone (u.visible & ids.i) & lone (w.ids) \n}", "derivationOf": "hp95oTi57WvwFSkdy", "msg": "There are 28 possible tokens that can appear here:\n( * @ Int NAME NUMBER STRING String Time ^ all disj fun iden int let lone no none one pred seq some sum this univ { ~", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-13 19:17:17"} {"_id": "YuyTCfiCtwjY9PZPH", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | (u.profile + u.visible).source in (u + Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User | ~(u.visible <: ids.ids).(u.visible <: ids.ids) in iden\n}", "derivationOf": "r8pPgTYFT8vqBxh8z", "msg": "The join operation here always yields an empty set.\nLeft type = {this/Work->this/Id}\nRight type = {this/Work->this/Id}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-14 10:53:14"} {"_id": "gRkfbWov5Bbb8Zi6Y", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tvisible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User | (u.profile).source in (u+Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n ~(visible.ids) in Id -> lone User\n}", "derivationOf": "58frJGDRTc7f2GkFP", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 14:37:36"} {"_id": "gej6GvwE87n8iWMf3", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s: Source | all w: s.profile, ww: Work | w.ids = ww.ids implies w = ww\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 21:59:27"} {"_id": "7mrXZPwrrAqzyEy6G", "cmd_i": 3, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall w1, w2 : Work, u : User | w1 != w2 and (w1 + w2) in u.profile and (w1.source = w2.source) implies no w1.ids & w2.ids\n}\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\tall u : User, w1, w2 : Work | w1 != w2 and (w1 + w2) in u.visible and (w1.source != w2.source) implies w1.ids != w2.ids)\n}", "derivationOf": "pMN3646uJrbk8Fsyh", "msg": "There are 38 possible tokens that can appear here:\n! # ( * @ Int NAME NUMBER STRING String Time ^ after all always before disj eventually fun historically iden int let lone no none once one pred seq set some sum this univ { } ~", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2019-11-3 20:47:27"} {"_id": "tfddXJA9Mmf3ww4Ri", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w1,w2:Work | ((w1.ids=w2.ids) implies not ((w1 in u.visible)) and (w2 in u.visible))\n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-5-7 12:39:12"} {"_id": "PZ4LfbK8WzJz7WRTG", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall w1, w2 : Work, u : User | w1 != w2 and (w1 + w2) in u.profile and (w1.source = w2.source) implies no w1.ids & w2.ids\n}\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\tall u : User, w1, w2 : Work | w1 != w2 and (w1 + w2) in u.profile implies (w1.source != w2.source) or (w1.ids != w2.ids)\n}", "derivationOf": "uC2R59oWorQxkKWXy", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-11-3 20:39:56"} {"_id": "ua272Wr2gQCGmNoPv", "cmd_i": 3, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | (User<:visible).w in (User<:profile).w \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\tall u : User | some w1, w2 : Work | (some (u<:visible).w1 and (u<:visible).w1) implies w1 = w2\n}", "derivationOf": "ZNQ9QEiJNnP4HgW3f", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/User}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2019-10-18 20:21:59"} {"_id": "BLXpaCkuTRjPFqS96", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User | all w:u.profile | w.source = u or w.source in Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "eKRufXrKQs58ugFbu", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-1-8 12:19:43"} {"_id": "Rg4LFAymhL7CXog89", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n (profile.ids).~(profile.ids) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "4K7dNwtaBWtgYjwoX", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:17:48"} {"_id": "CBBLETrwMBKwGXwad", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \tall w1, w2:Work, u:User | (w1 in u.profile and w2 in u.profile) implies (w1.ids not in w2.ids and w2.ids not in w1.ids)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "KbsfXtF8WRZRzWz5Z", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-9 00:54:05"} {"_id": "pfgLuNzMAbRkgyRLk", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all x : User | x.profile.source in Institution + x\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n one ids.(~source.ids)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "Ergot8JFX3xqkocF6", "msg": "The join operation here always yields an empty set.\nLeft type = {this/Work->this/Id}\nRight type = {this/Source->this/Id}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 22:00:31"} {"_id": "Jt6tctNyfrJjiHf3E", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible = (visible & profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User, w : Work | u.profile.w.source in (u + Insitution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "s9jrMSbL7KhWKcGZs", "msg": "This cannot be a legal relational join where\nleft hand side is u . (this/User <: profile) (type = {this/Work})\nright hand side is w (type = {this/Work})", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:08:21"} {"_id": "MkdD5i7suXbj4SNkw", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible = (visible & profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | (u.profile).source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all w1, w2 : Work, u : User {\n (w1 != w2 and ((w1 + w2) in u.profile) and w1.source = w2.source) implies no (w1.ids & w2.ids)\n }\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User, w : Work {\n (w in u.profile) implies ((one (w.ids.~ids & u.profile)) and (one (w.ids)))\n }\n}", "derivationOf": "fJwe3nJ4HWsTFTRv5", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-23 04:51:42"} {"_id": "duwNqEy8fhPHRNau5", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all x : User | x.profile.source in Institution + x\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all w1 : Work, w2 : Work | some (w1.ids & w2.ids) implies w1 = w2\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "caZTMFi48kA5ZcN9h", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:15:45"} {"_id": "v6W3HMjyJTY9C3htZ", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all x : User | x.profile.source in Institution + x\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n one ids.(~source.ids)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "Kon4qpuTZ4JaCEwZ7", "msg": "The join operation here always yields an empty set.\nLeft type = {this/Work->this/Id}\nRight type = {this/Source->this/Id}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 22:00:43"} {"_id": "aocBZ2Yhxu8WaTAMF", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | (u.profile + u.visible).source in (u + Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall w : source.Source | w \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "miLfHB5NXeb46ipFE", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-14 10:33:06"} {"_id": "uW9nZphY36GsJ54gQ", "cmd_i": 0, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\n\n\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tWork.visible in source.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "eFgSm4uyRta25WEYf", "msg": "in can be used only between 2 expressions of the same arity.\nLeft type = {none}\nRight type = {this/Work->this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 10:58:51"} {"_id": "Hvd7LddnNBnJRMGz3", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User, w:Work | w in u.profile implies u in w.source\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\n}", "derivationOf": "nPTH3KxhWPikPr8QM", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-8 19:43:30"} {"_id": "NFc5wzvbu7EqQm794", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | (u.profile + u.visible).source in (u + Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User | iden in (u.visible <: ids).~(u.visible <: ids)\n}", "derivationOf": "ZBBN99xR8hqEkR3Dm", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-14 10:54:18"} {"_id": "ZXxM3J2uPwS7FmRMJ", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User, w : Work | u->w in profile implies (u<:source in User or u<:source in Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "ctuviwF8XnATXbsrX", "msg": "in can be used only between 2 expressions of the same arity.\nLeft type = {none->none}\nRight type = {this/User}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2019-10-22 07:42:29"} {"_id": "b64T2pMGQTenPQiHh", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tUser.visible in User.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "9aSMqrpTuChDsqYHR", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:11:13"} {"_id": "vTBcqg43nTivkwQ96", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tvisible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User | (u.profile).source in (u+Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n visible.ids in User -> lone Id\n}", "derivationOf": "4wdHo8JMcn5bTzzDW", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 14:32:57"} {"_id": "gFw26Lc85HhtQ39vw", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | (u.profile + u.visible).source in (u + Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User, id : u.visible.ids | lone u.visible.ids & id\n}", "derivationOf": "dTRynZWc965KEj7Ns", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-14 10:46:58"} {"_id": "RJLR2Lu2JZyF7qTHJ", "cmd_i": 3, "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s: Source, u: User| ((source.s & u.profile)<:ids).~((source.s & u.profile)<:ids) in iden\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\t\n \tall w : Work, u : User | ~(visible.((u.profile)<:ids).(visible.((u.profile)<:ids) in iden\n}", "derivationOf": "f5dg3Nr66oKF3rbK7", "msg": "There are 1 possible tokens that can appear here:\n)", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-18 22:51:53"} {"_id": "H7poYeXnYsDboPFcr", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.ids in (u + Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "Te65MZ7aGK7G6Fba3", "msg": "Subset operator is redundant, because the left and right subexpressions are always disjoint.\nLeft type = {this/Id}\nRight type = {this/Source}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-11-3 20:14:55"} {"_id": "RHW8W9QTa8rsrLEAs", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all u : User | u.visible = u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "xm7AybRKgiKuE2wJd", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 10:54:05"} {"_id": "sHCtRC9n9vsyT2cCM", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\nall w1, w2 : Work | all u : User | w1 != w2 and (w1 + w2) in u.profile and (w1.source = w2.source) implies no w1.ids & w2.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\nall disj w1, w2 : Work | all u : User | (some (w1.ids & w2.ids)) and (w1 + w2) in u.profile implies not (w1 + w2) in u.visible\n}", "derivationOf": "zQC8nrbicBP9X8B3k", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-5-7 13:22:57"} {"_id": "QCskR6qMXDLmQuJC7", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all x : User | x.profile.source in Institution + x\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all w1 : Work, w2 : Work | some (w1.ids && w2.ids) implies w1 = w2\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "ZgxJuRGzxSve3qnsh", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/Id}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:15:08"} {"_id": "bq5wTzjNFqGLvjivM", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all w:Work,u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all w:Work,u:User | w in u.profile implies (u in w.source or w.source in Institution) \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all w1,w2:Work | (w1 in User.profile and w2 in User.profile) implies w1.ids not in w2.ids \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "ATur5jAR2b3LbLgFu", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-19 09:18:29"} {"_id": "5xxmpQ6JzYx4DjTJ8", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s: Source, u: User| ((source.s & u.profile)<:ids).~((source.s & u.profile)<:ids) in iden\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\t\n \tsome u : User | u.visible in Work and ~ids.ids in iden and ids.~ids in iden\n}", "derivationOf": "W3aFsNBB276CdRAhF", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 23:07:47"} {"_id": "Ae8pPYp2ESf47vpr5", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | (u.profile + u.visible).source in (u + Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tiden in ~(profile.ids).(profile.ids)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "8q8vs7zuGBF2PaYuX", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-14 10:29:16"} {"_id": "LCYCcPNXMQg6Pntas", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall w1, w2 : Work, u : User | w1 != w2 and (w1 + w2) in u.profile and (w1.source = w2.source) implies no w1.ids & w2.ids\n}\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\tall u : User, w1, w2 : Work | w1 != w2 and (w1 + w2) in u.visible implies (w1.source != w2.source or w1.ids != w2.ids)\n}", "derivationOf": "y3iYBXZQ4crTX2oTX", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-11-3 20:48:20"} {"_id": "T7AqvvTHoXmzs9BiY", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | (User<:visible).w in (User<:profile).w \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "metK65oYbcT8Rp7gb", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2019-10-18 19:53:23"} {"_id": "BF3zpdzxT7ZcsXqQw", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible = (visible & profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | (u.profile).source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all u : User, w1, w2 : Work | ((w1 in (u.profile)) and (w2 in (u.profile)) and (w1.source = w2.source)) implies (w1.ids not in w2.ids)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n}", "derivationOf": "oKYEmeRNwEZo67Loq", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-16 04:16:19"} {"_id": "xWSBc9ABb45B7f8TK", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall w1, w2 : Work, u : User | w1 != w2 and (w1 + w2) in u.profile and (w1.source = w2.source) implies no w1.ids & w2.ids\n}\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\tall u : User, w1, w2 : Work | w1 != w2 and (w1 + w2) in u.visible implies (w1.source != w2.source) or (no w1.ids & w2.ids)\n}", "derivationOf": "PaeGRdMxEEDSMqPvt", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-11-3 20:42:29"} {"_id": "JPzRvBYwXyDQcDRmr", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | all w : u.profile | w.source in u or w.source in Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall u : User | all disj w1,w2 : u.profile | w1.source = w2.source implies (w1.ids not in w2.ids and w2.ids not in w1.ids)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "Lo9MpfgCYMwYJf8A5", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:20:20"} {"_id": "nPpYKgP7AzeC6sLsc", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all w:Work | w.visible = w.source\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "58B2oFWSZXJsaB8c9", "msg": "The join operation here always yields an empty set.\nLeft type = {this/Work}\nRight type = {this/User->this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:04:57"} {"_id": "Z2JFLESZ8xsx8GunQ", "cmd_i": 3, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\nall w1, w2 : Work | all u : User | w1 != w2 and (w1 + w2) in u.profile and (w1.source = w2.source) implies no w1.ids & w2.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\nall w1, w2 : Work | all u : User | (w1.ids & w2.ids) and (w1 + w2) in u.visible and (w1 + w2) in u.profile implies w1.source = w2.source\n}", "derivationOf": "iJC3XyWuHcZz4ayB6", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/Id}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-5-7 13:13:31"} {"_id": "QFa5qWTcFSABqw3fJ", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\n\n\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work.visible | one source.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "rnZg2vjCosarY4z4A", "msg": "The join operation here always yields an empty set.\nLeft type = {this/Work}\nRight type = {this/User->this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 10:57:20"} {"_id": "CHbREQMb2hKNwmDSP", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User | all w1, w2 : Work | (w1 != w2 and (w1 + w2) in u.visible) implies no w1.ids & w2.ids\n}", "derivationOf": "GtcaEyCWjKDtd5hPb", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-11-3 20:29:06"} {"_id": "8bowN4vEqmmLPZRpg", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible = (visible & profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | ((u.profile).source) in (Institution & u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User, w : Work | one (u.profile.w.id)\n}", "derivationOf": "wkmmpkoW2hQkR4zng", "msg": "This cannot be a legal relational join where\nleft hand side is u . (this/User <: profile) (type = {this/Work})\nright hand side is w (type = {this/Work})", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:46:42"} {"_id": "cpHJ8n6Nw2LGtGnpq", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User | all w1, w2 : Work | w1 != w2 and (w1 + w2) in u.visible implies w1.ids != w2.ids\n}", "derivationOf": "HCYqWkLiAFsnbbRJv", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-11-3 20:28:13"} {"_id": "G3xjBCJBKoY6vPcJG", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | (u.profile + u.visible).source in (u + Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n ~ids.ids in iden\n}", "derivationOf": "MmvZJS6J3sKJ2EK8b", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-14 10:50:50"} {"_id": "AhcnLTLcsm5dLiC9Y", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | (User<:visible).w in (User<:profile).w \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | (u<:profile).Work in (Work<:source).u + (Work<:source).Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tno Work<:ids = Work<:ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "RnSY9GzRzXEX8pSoi", "msg": "= can be used only between 2 expressions of the same arity, or between 2 integer expressions.\nLeft type = {PrimitiveBoolean}\nRight type = {this/Work->this/Id}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2019-10-18 20:10:58"} {"_id": "ATur5jAR2b3LbLgFu", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all w:Work,u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all w:Work,u:User | w in u.profile implies (u in w.source or w.source in Institution) \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all w1,w2:Work | (w1 in User.profile and w2 in User.profile) implies w1.ids != w2.ids \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "2DrjjuuMvQfYr5fXx", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-19 09:18:24"} {"_id": "HCYqWkLiAFsnbbRJv", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User | all w1, w2 : Work | (w1 + w2) in u.visible implies w1.ids != w2.ids\n}", "derivationOf": "4v3YtycPTcBSwYpnd", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-11-3 20:27:48"} {"_id": "QkzvueRjTjQZKamfd", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \tall w1, w2:Work, u:User | ((w1 in u.profile and w2 in u.profile) and (w1.source = w2.source)) implies (w1.ids != w2.ids)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "dv7cSzLRbRQm7qziC", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-8 23:45:52"} {"_id": "HvJeKCFjiSwCLeA5o", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u :User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "8PuRmEZx4DnBr93ZK", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-12 11:01:08"} {"_id": "WF7mdndjoHfqSKcn4", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | some (User<:visible).w implies some w.(User<:profile) \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "wmTcC2mFLeweSx5vR", "msg": "The join operation here always yields an empty set.\nLeft type = {this/Work}\nRight type = {this/User->this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-18 19:50:36"} {"_id": "9aNZQSMrZ3bqTFdns", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile \n}\n\n\npred Inv2 { \n\tall u:User ,i:Institution | u.profile.source = u || u.profile.source = i\n}\n\n\npred Inv3 { \n\tall u:User, w:Work, w1:Work | w.source = w1.source && w1 in u.profile && w in u.profile implies w.ids != w1.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User | u.visible.ids != u.visible.ids\n}", "derivationOf": "Zk3ertzxvmc79CQ2b", "msg": "== is redundant, because the left and right expressions always have the same value.\nLeft type = {this/Id}\nRight type = {this/Id}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-21 15:03:40"} {"_id": "XDfQpKdHhbPzWCGPt", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tvisible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u: User | u.profile.source in (u + Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tone User.profile.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "jHDsujkYCJFnuGE8J", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:07:23"} {"_id": "Wwn7rMyShQw9gccAA", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | (u.profile + u.visible).source in (u + Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User, w : u.profile | lone u->w & visible \n}", "derivationOf": "gyNaKran6TEDdjLqL", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-14 10:39:20"} {"_id": "ZtQr57i6de2KKhdDp", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w1:Work | w1 in u.visible implies no (u.visible.ids & w1.ids)\n}", "derivationOf": "fTXHEKnrHWLEehyGo", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-9 01:06:34"} {"_id": "Ssj8oqzt9328npoWp", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all x : User | x.profile.source in Institution + x\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s: Source, u: User| ((source.s & u.profile)<:ids).~((source.s & u.profile)<:ids) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u: User| ((u.profile)<:ids).~(u.profile<:ids) in iden\n}", "derivationOf": "deRDRvLBJQ4g2SkrM", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 23:01:25"} {"_id": "qTi7zNEdGnXWkA5Fs", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall w:User.profile |\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "Cvvoy6tBTDLTHKL3p", "msg": "There are 37 possible tokens that can appear here:\n! # ( * @ Int NAME NUMBER STRING String Time ^ after all always before disj eventually fun historically iden int let lone no none once one pred seq set some sum this univ { ~", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2019-10-21 14:44:22"} {"_id": "qpwsmYnoi7gLEw5wn", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | visible.w in profile.w\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User | Work = profile.u.source + profile.Institution.source \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "PgmZajecY3maSaJBj", "msg": "The join operation here always yields an empty set.\nLeft type = {this/User->this/Work}\nRight type = {this/User}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 14:37:13"} {"_id": "pH8HdCmAgN45XNYL2", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile in (source.Instituion + source.u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "XwYbneKsxnYLG8x8G", "msg": "The name \"Instituion\" cannot be found.", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 10:59:15"} {"_id": "tYJeWxzAYcpWptJrp", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\nall u : User| some w : Work | u->w in profile implies (w.source in User or w.source in Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-22 12:24:54"} {"_id": "jDXQkiJQiCh3dL26y", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | (u.profile + u.visible).source in (u + Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tiden & (Id->Id) in ~(profile.ids).(profile.ids)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "Ae8pPYp2ESf47vpr5", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-14 10:29:52"} {"_id": "ZNDjjnYx77sBjg7Hi", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User, w:Work | w in u.profile implies (u in w.source or w.source in Institution) \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "byM5SDx8HjGWnjDYR", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-19 10:00:18"} {"_id": "9FSd2PPSkDfGZDHnt", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\t\tsome w: Work | all u: User| w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u: User | all w: Work | w.source in u or w.source in Institution \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "DpCmuEQXt9nQN63tC", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:10:53"} {"_id": "KPL4LMnNar8qjoqme", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tvisible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User | (u.profile).source in (u+Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s:Source,u:User | lone ((u.profile) & (source.s)).ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n ~(visible.ids) in Id -> lone User and visible.source in User -> lone Source\n}", "derivationOf": "wuvMqyMpqRu297Wwq", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 14:56:13"} {"_id": "YPJgbYikGark8x74a", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w: Work | visible.w in profile.w\n}\n \n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u: User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s1, s2: Source | s1 = s2 implies s1.profile.ids not in s2.profile.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "EAaoMHtkN82nhpqBx", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 16:22:47"} {"_id": "iu6ZtNTSMygKN5xZ9", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\t\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | some w : Work | u->w in profile implies some (w<:source).Institution or some (w<:source).User\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "d2tm2FF7HStrjdbcS", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-23 08:35:42"} {"_id": "PZM2z5ZZd64TW6tbQ", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\t\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | some w : Work | u->w in profile implies some (w<:source).Institution or some (w<:source).User\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tlone Work.(User.profile)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "ytbExBsmrrKRSigae", "msg": "This cannot be a legal relational join where\nleft hand side is this/Work (type = {this/Work})\nright hand side is this/User . (this/User <: profile) (type = {this/Work})", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2019-10-23 08:37:20"} {"_id": "Sab2KuDpsTnvKnqwq", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible = (visible & profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | (u.profile).source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all w1, w2 : Work, u : User {\n (w1 != w2 and ((w1 + w2) in u.profile) and w1.source = w2.source) implies no (w1.ids & w2.ids)\n }\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User | all w : Work | some (u<:visible).w implies lone w\n}", "derivationOf": "cx44ybuLEhwyLBQNR", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-23 04:42:30"} {"_id": "KdHubCyLquQvgaCa9", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \tall w1, w2:Work, u:User | ((w1 in u.profile and w2 in u.profile) and (w1.source = w2.source)) implies no (w1.ids & w2.ids)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "2PKFqXbZ6NSS3KQSJ", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-9 00:51:30"} {"_id": "hHwFETopLtMZteNKy", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w: Work | visible.w in profile.w\n}\n \n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u: User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\tall w: Work | all disj i1,i2: Id | all disj s1, s2: Source | profile.w and s1 in w.source and i1 in w.ids implies no s2 in w.source and no i2 in w.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "imAxrTKfW8D47XiAt", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/User}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 21:56:01"} {"_id": "AASEc4idoJ2kf2jdZ", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all w:Work,u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all w:Work,u:User | w in u.profile implies (u in w.source or w.source in Institution) \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \n all id1:Id, w1,w2:Work | (w1.source != w2.source and id1 in w1.ids) implies id1 not in w2.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "iS4vrbbCWWyWwYn5P", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-19 09:26:59"} {"_id": "shjL9a9ab9jZer3TJ", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | visible.w in profile.w\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in Institution + u\n}\n\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tlet aux = {u, User, w : Work, s : Source | u -> w in profile and w -> s in source} | all s : Source | \n \t\tall disj (u1, w1) , (u2, w2) : aux.s | no w1.ids & w2.ids \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "Jh5ooTYAcYQbsz4ri", "msg": "There are 1 possible tokens that can appear here:\n[", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-18 17:10:32"} {"_id": "j3eEvY56aodBHyL47", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | (User<:visible).w in (User<:profile).w \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tWork<:ids != Work<:ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "judPZjhEwwLAidN4i", "msg": "== is redundant, because the left and right expressions always have the same value.\nLeft type = {this/Work->this/Id}\nRight type = {this/Work->this/Id}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-18 20:13:55"} {"_id": "XXz2mYMsHvDnFvE32", "cmd_i": 3, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | visible.w in profile.w\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\t\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all a,b:Work | a.visible.a = b.visible.b implies a.profile = b.profile \n}", "derivationOf": "QqAPKkfEYFqbXcz9o", "msg": "This cannot be a legal relational join where\nleft hand side is a . (this/User <: visible) (type = {none})\nright hand side is a (type = {this/Work})", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 14:43:46"} {"_id": "ipeysduWeM3uqKxCq", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall w:Work,u:User | w in u.profile implies (w.source:>u or w.source:>Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "A4tK3zNqfZtsJufPT", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/User}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:19:33"} {"_id": "Fz5uXf4hwLqwp7Kfo", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { \n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n\tall u:User | all w:(u.profile) | (w.source) in (u + Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \tall u:User | all w:(u.visible) | (w.ids) in (u.visible).ids\n}", "derivationOf": "SWiE9rvfHvCu24Brt", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-9 04:18:38"} {"_id": "ioRTq7TpMnQEPn8ut", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\t\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \tall w1, w2:Work, u:User | (w1 in u.profile and w2 in u.profile) implies w1.ids!=w2.ids \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\n}", "derivationOf": "TX7Cif3GZZkkuXEKZ", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-8 22:24:24"} {"_id": "5hR3zboSLrQ238yie", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all w:Work | visible.w = profile.w\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "8k6nGGGAiQ5EJusdy", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:10:15"} {"_id": "6BDruxAbTFKWYg2Mj", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | visible.w in profile.w\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in Institution + u\n}\n\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tlet aux = {u, User, w : Work, s : Source | u -> w in profile and w -> s in source} | all s : Source | \n \t\tall disj (u1, w1), (u2, w2) : aux.s | no w1.ids & w2.ids \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "shjL9a9ab9jZer3TJ", "msg": "There are 1 possible tokens that can appear here:\n[", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-18 17:12:03"} {"_id": "vNczhEtfY8gLwrSGr", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n (profile.ids).~(profile.ids) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\t~(visible.ids).(visible.ids) in iden\n}", "derivationOf": "DC8vx4iTqCmpLSBLE", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 21:59:36"} {"_id": "aJJq7WfnJRaSQBKHH", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | (User<:visible).w in (User<:profile).w \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | some (u<:profile).Work implies some u.(Work<:source) & Institution.(Work<:source) \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "k6a6jHQA24uqE3z6g", "msg": "The join operation here always yields an empty set.\nLeft type = {this/User}\nRight type = {this/Work->this/Source}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-18 20:03:17"} {"_id": "GtcaEyCWjKDtd5hPb", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User | all w1, w2 : Work | w1 != w2 and (w1 + w2) in u.visible implies no w1.ids & w2.ids\n}", "derivationOf": "cpHJ8n6Nw2LGtGnpq", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-11-3 20:28:31"} {"_id": "eFgSm4uyRta25WEYf", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\n\n\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tWork.visible in Source.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "RML5Jyzc5HE32syfa", "msg": "The join operation here always yields an empty set.\nLeft type = {this/Work}\nRight type = {this/User->this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 10:58:47"} {"_id": "3QyiqNP9kfBSfLDAu", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User , w:Work, i:Institution | w in u.profile && (w.source = u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "WkFfMWzK8PLyHnX6y", "msg": "This variable is unused.", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-21 14:50:36"} {"_id": "ex6zngMw758CK4qeh", "cmd_i": 3, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\nall w1, w2 : Work | all u : User | w1 != w2 and (w1 + w2) in u.profile and (w1.source = w2.source) implies no w1.ids & w2.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\nall w1, w2 : Work | all u : User | some (w1.ids & w2.ids) and (w1 + w2) in u.profile implies no (w1 + w2) in u.visible\n}", "derivationOf": "ezW2ngnh58SQxzdYE", "msg": "This must be a set or relation.\nInstead, it has the following possible type(s):\n{PrimitiveBoolean}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-5-7 13:20:51"} {"_id": "CLKaRQioLmrvPZZaw", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w1,w2:Work | ((w1.ids in w2.ids) or (w2.ids in w1.ids)) implies (w1 in u.visible or w2 in u.visible)\n}", "derivationOf": "6jRrrHifvE9uM2pQM", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-9 01:36:36"} {"_id": "ZcpuPkLAhNsewGe4f", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \tall w1, w2:Work, u:User | (w1 in u.profile and w2 in u.profile) implies no (w1.ids & w2.ids)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "CBBLETrwMBKwGXwad", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-9 00:54:50"} {"_id": "AHm5m8TwQehqZSX8v", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s: Source, u: User| ((source.s & u.profile)<:ids).~((source.s & u.profile)<:ids) in iden\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\t\n \tall u : User | u.visible in Work and ~ids.ids in iden and ids.~ids in iden\n}", "derivationOf": "gMjnmfnoKzgmL9eBp", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 23:08:20"} {"_id": "PaeGRdMxEEDSMqPvt", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall w1, w2 : Work, u : User | w1 != w2 and (w1 + w2) in u.profile and (w1.source = w2.source) implies no w1.ids & w2.ids\n}\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\tall u : User, w1, w2 : Work | w1 != w2 and (w1 + w2) in u.visible implies (w1.source != w2.source) and (no w1.ids & w2.ids)\n}", "derivationOf": "93eFhFJ53jxeNAKWX", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-11-3 20:42:17"} {"_id": "rjcnMTiKmvPCWZEe3", "cmd_i": 0, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tfor u : User | u.visible in u.profile \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "6Q9iKv9ETWsLDnzuy", "msg": "There are 38 possible tokens that can appear here:\n! # ( * @ Int NAME NUMBER STRING String Time ^ after all always before disj eventually fun historically iden int let lone no none once one pred seq set some sum this univ { } ~", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 10:57:30"} {"_id": "RjrdiAa9ipMWCK4Dz", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.Source in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "igcsyKGXAr2LTqqr4", "msg": "This cannot be a legal relational join where\nleft hand side is u . (this/User <: profile) (type = {this/Work})\nright hand side is this/Source (type = {this/Source})", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:00:54"} {"_id": "Lj9BvPQQJDmtcBdBN", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall w1, w2 : Work, u : User | w1 != w2 and (w1 + w2) in u.profile and (w1.source = w2.source) implies no w1.ids & w2.ids\n}\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\tall u : User, w1, w2 : Work | w1 != w2 and (w1 + w2) in u.visible implies (no w1.ids & w2.ids)\n}", "derivationOf": "xWSBc9ABb45B7f8TK", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-11-3 20:42:40"} {"_id": "cFAuJWtNh372E2yi2", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User | all w1,w2 : Work | w1 in u.visible and w2 in u.visible implies w1 != w2\n}", "derivationOf": "u34RgDNjFPN96QXH4", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:18:02"} {"_id": "ETakvRCHDh6ZWkMiu", "cmd_i": 3, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tvisible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User | (u.profile).source in (u+Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s:Source,u:User | lone ((u.profile)&(source.s))\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all id:Id,u:User | lone ~(u.visible.ids.id)\n}", "derivationOf": "jjmbrChp3rgfnisEG", "msg": "This cannot be a legal relational join where\nleft hand side is u . (this/User <: visible) . (this/Work <: ids) (type = {this/Id})\nright hand side is id (type = {this/Id})", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 14:03:12"} {"_id": "YptZYt5kLvKgRq7B4", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tUser.visible in User.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 23:36:37"} {"_id": "zLSTGgWsAJLC7wHEq", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n\tall u:User, w:(u.profile + u.visible) | w in (u+Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "H8XK8R4itCdXGJFr3", "msg": "Subset operator is redundant, because the left and right subexpressions are always disjoint.\nLeft type = {this/Work}\nRight type = {this/Source}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-9 03:49:48"} {"_id": "c3ifkoGgat8ypvqmZ", "cmd_i": 0, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\n\n\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tUser.visible in Work.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\nids-profile\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\n}", "derivationOf": "k84sej7FwGnWCmoG2", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/Work->this/Id}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:18:44"} {"_id": "3DSfRJvQLQoDZNb5M", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n\tall u:User | all w:(u.profile) | (w.source) in (u + Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "qpBEtnRDYuE56QbAX", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-1-9 03:53:12"} {"_id": "ooPtHBpcXdNFmt8Qa", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tWork.source in (User+Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "hX537j6paibPQhFmb", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-9 03:43:13"} {"_id": "Sg2Mqoq3SRbtYBDBP", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User | u.profile implies (u.source in Institution or u.source in User) \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "HLiaLAouxAZ6vfoSi", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-19 09:59:01"} {"_id": "LYPvf8oAgpN9QpGNj", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { \n \tall u:User , w:Work | (w in u.profile) implies (w.source = u || w.source = Institution) \n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all w:Work, w1:Work | w in User.profile && w1 in User.profile implies no (w.ids & w1.ids)\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w:Work | w in u.profile implies lone (u.visible & w)\n}", "derivationOf": "J7temY4hpoPGMzZA5", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-22 10:56:39"} {"_id": "xYRShEtfz9D9ELvBx", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all x : User | x.profile.source in Institution + x\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s: Source, u: User | ((source.s & u.profile)<:ids).~((source.s & u.profile)<:ids) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u: User | (u.visible<:ids).~(u.visible<:ids) in iden\n}", "derivationOf": "zarEW3Ltc3ZBeJG3a", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-19 09:26:53"} {"_id": "WPG6kmhrwR3uLaTxz", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "7bRgJci2y3uFx53kq", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-12 11:10:03"} {"_id": "nSAm2Xi8toKM4E9AY", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | (u.profile + u.visible).source in (u + Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User, id : u.profile.ids | lone id & u.visible.ids\n}", "derivationOf": "GuZgeg3nidvrZ3jQB", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-14 10:57:13"} {"_id": "2JDFDhi737t8LAcFQ", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s: Source, u: User| ((source.s & u.profile)<:ids).~((source.s & u.profile)<:ids) in iden\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\t~(ids.visible).(ids.visible) in iden\n}", "derivationOf": "s7nLfRZBPfKkpg5aX", "msg": "The join operation here always yields an empty set.\nLeft type = {this/Work->this/Id}\nRight type = {this/User->this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 22:29:44"} {"_id": "NE83znfubzcXR3csm", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User, w : Work | u->w in visible and u->w in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "Tg5gEN7bCWiubt3y6", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-11-2 23:29:29"} {"_id": "LuC9hKqnqQAWJHk48", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all w1, w2 : Work, u : User {\n ((w1 != w2) and ((w1 + w2) in u.profile) and (w1.source = w2.source)) implies no w1.ids & w2.ids\n }\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "aq4So6X3DXrSTL8vi", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-23 04:39:50"} {"_id": "rnZg2vjCosarY4z4A", "cmd_i": 0, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\n\n\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | source.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/Work->this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 10:56:18"} {"_id": "2mc7yFj4wyfNhiPKR", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u: User | u.visible in u.profile \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u: User, w: u.profile | w.source = u or w.source in Institution\n \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall u: User, w1, w2: u.profile | not w1.ids = w2.ids\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "D8H8hQocPKDYc9Fht", "msg": "There are 38 possible tokens that can appear here:\n! # ( * @ Int NAME NUMBER STRING String Time ^ after all always before disj eventually fun historically iden int let lone no none once one pred seq set some sum this univ { } ~", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-1-8 22:09:12"} {"_id": "W3aFsNBB276CdRAhF", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s: Source, u: User| ((source.s & u.profile)<:ids).~((source.s & u.profile)<:ids) in iden\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\t\n \tsome u : User | u.visible in u.profile and ~ids.ids in iden and ids.~ids in iden\n}", "derivationOf": "W47dwfYB99Rwn9CD8", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 23:07:26"} {"_id": "W5Qhwov8JmSnHhjvN", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User ,i:Institution | u.profile.source = u || u.profile.source = i\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "ek9zdhcuJwu5EwG4X", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-21 14:53:06"} {"_id": "Jkrx7gppcqcuKf6G9", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall u:User,s:Source,i:Id | lone (u.profile & source.s & ids.i)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, i:Id | lone (u.visible.ids)\n}", "derivationOf": "7PCWcdxw3kmYwFydA", "msg": "This variable is unused.", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-13 19:12:40"} {"_id": "exvGvCL5vbFHexqYD", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | (u.profile + u.visible).source in (u + Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User, w : u.profile | lone w & u.visible \n}", "derivationOf": "Wwn7rMyShQw9gccAA", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-14 10:39:32"} {"_id": "4JEtJSCrybYQa8zcB", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w: Work | visible.w in profile.w\n}\n \n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u: User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s1, s2: Source | s1 = s2 implies s1.profile.ids not in s2.profile.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "YPJgbYikGark8x74a", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 16:22:58"} {"_id": "XnMGrNZTn3jaJ4Rx9", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all x : User | x.profile.source in Institution + x\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s: Source, u: User | ((source.s & u.profile)<:ids).~((source.s & u.profile)<:ids) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u: User | ~(u.visible<:ids).(u.visible<:ids) in iden\n}", "derivationOf": "6u47w3zCJnykLS8AQ", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-19 08:55:37"} {"_id": "tpWpZCh65cdDbMYik", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all w:Work | w.visible = w.source\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "s5696t8p2d4P8Tbmb", "msg": "The join operation here always yields an empty set.\nLeft type = {this/Work}\nRight type = {this/User->this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:06:18"} {"_id": "DcPcsTj8zNc4uPyaL", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\n\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u: User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-1-2 18:26:53"} {"_id": "StoEogAMPREcBPGjz", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile \n}\n\n\npred Inv2 { \n\tall u:User ,i:Institution | u.profile.source = u || u.profile.source = i\n}\n\n\npred Inv3 { \n\tall u:User, w:Work, w1:Work | w.source = w1.source && w1 in u.profile && w in u.profile implies w.ids != w1.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n User.visible != User.visible \n}", "derivationOf": "eRtjGQZd3P3fvq6Go", "msg": "== is redundant, because the left and right expressions always have the same value.\nLeft type = {this/Work}\nRight type = {this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-21 15:02:18"} {"_id": "TEbSttKpkp46Xvu37", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | (u.profile + u.visible).source in (u + Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall u : User.profile, disj x,y : u.ids | x = y => x = y\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "4QBQjKhSEykBzvmjk", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-14 10:23:55"} {"_id": "cfgm6TfWmqbxP7gS4", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w: Work | visible.w in profile.w\n}\n \n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u: User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s1, s2: Source| all u: User | s1 = s2 and u.profile.source = s1 or u.profile.source = s2 implies one u.profile.ids \n \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n one User.visible\n}", "derivationOf": "9WM3HP4qQ6KNxJxbo", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 16:28:49"} {"_id": "woh3dSZXsqu6iELfD", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s: Source, u: User| ((source.s & u.profile)<:ids).~((source.s & u.profile)<:ids) in iden\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\tall u : User | ~((visible:>(u.profile))).((visible:>(u.profile))) in iden\n}", "derivationOf": "BATG5mJQrmFFWErWW", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 22:42:16"} {"_id": "FxiRHR2AGcCz2v7TD", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall w:Work | (w in User.profile) implies (w.source = User ) \n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "PJm7te45hiWriGGog", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-22 10:48:49"} {"_id": "H6iXLDNRH9xBhW8qm", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n (profile.ids).~(profile.ids) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\t~(visible.ids).(visible.ids) in iden\n}", "derivationOf": "JCsTFngCA387YvvnN", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-18 22:16:20"} {"_id": "3sJYPoPksBBwTfqoG", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\t\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w1,w2:Work | u->w1.ids in visible and u->w2 in visible implies w1!=w2\n}", "derivationOf": "AWMuk9PyG3AjFcv6q", "msg": "Subset operator is redundant, because the left and right subexpressions are always disjoint.\nLeft type = {this/User->this/Id}\nRight type = {this/User->this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-11-10 21:26:22"} {"_id": "eJNkqfn5LMhDevZK7", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | all w : u.profile | w.source in u or w.source in Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall u : User | all p : u.profile | p.ids not in (u.profile - p).ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "CwqR9eFyzAcxHyH7g", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:16:36"} {"_id": "dbneR2smXCpqo3rgy", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall u : User | some id1, id2 : Id | some u.profile.ids.id1 and u.profile.ids.id2 implies id1 != id2\n}\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "38L2Tw2dfxopJA3JT", "msg": "This cannot be a legal relational join where\nleft hand side is u . (this/User <: profile) . (this/Work <: ids) (type = {this/Id})\nright hand side is id1 (type = {this/Id})", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2019-11-3 20:23:38"} {"_id": "zAA5nR3suT9cBjZD5", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { \n \tall u:User , w:Work | (w in u.profile) implies (w.source = u || w.source = Institution) \n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w:Work | w in u.profile implies lone (u.visible & w)\n}", "derivationOf": "QepEQ4eQgffzEsrG3", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-22 10:53:35"} {"_id": "RmngSePZmuf4G6TRi", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | some (User<:visible).w implies some (User<:profile).w \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "WF7mdndjoHfqSKcn4", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-18 19:50:52"} {"_id": "LdZ68dizTdozk66Fd", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \tall w1, w2:Work, u:User | (w1 in u.profile and w2 in u.profile) and (w1.source=w2.source) implies no (w1.ids & w2.ids)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "ZcpuPkLAhNsewGe4f", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-9 00:59:03"} {"_id": "Ph9AjfMm9nPEWJAe7", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u: User | u.visible in u.profile \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u: User, w: u.profile | w.source = u or w.source in Institution\n \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "B8qA6xeDdjyAcDkaj", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-1-8 21:50:06"} {"_id": "z4mqZe3FbSWffLppk", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { \n \tall u:User , w:Work | (w in u.profile) implies (w.source = u || w.source = Institution) \n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all w:Work, w1:Work | no (w.ids & w1.ids)\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w:Work | w in u.profile implies lone (u.visible & w)\n}", "derivationOf": "zAA5nR3suT9cBjZD5", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-22 10:55:14"} {"_id": "zhstqZRSqJqbWyKJX", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User | (u.profile).source in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "dLFq7Ei4Fu7yP7mTw", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-18 23:50:13"} {"_id": "HE9hxZFKGic2QKrv9", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | (User<:visible).w in (User<:profile).w \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall x, y : Work | x.ids != y.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "j3eEvY56aodBHyL47", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-18 20:14:46"} {"_id": "LfrL22TmwAsFmDu2q", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tvisible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User | (u.profile).source in (u+Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s:Source,u:User | lone ((u.profile)&(source.s))\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n profile.ids in User -> lone Id\n}", "derivationOf": "NHAtfykDkJ6uhbF4m", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 14:28:08"} {"_id": "v3LkC3Xrs7PHP7jhd", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w1,w2:Work | (((w1.ids=w2.ids) and (w1 in u.profile) and (w1 in u.profile)) implies not ((w1 in u.visible)) and (w2 in u.visible))\n}", "derivationOf": "GT4sw2AngZ27QTicQ", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-5-7 12:46:56"} {"_id": "MNgphHoYBnpws3tqP", "cmd_i": 3, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible = (visible & profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | (u.profile).source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User, w1, w2 : Work | ((w1 in (u.profile)) & (w2 in (u.profile)) & (w1.source = w2.source)) implies (w1.ids != w2.ids)\n}", "derivationOf": "k9xjX3vknmg6nCEvq", "msg": "This must be a set or relation.\nInstead, it has the following possible type(s):\n{PrimitiveBoolean}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-16 04:12:52"} {"_id": "Jh5ooTYAcYQbsz4ri", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | visible.w in profile.w\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in Institution + u\n}\n\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tlet aux = {u, User, w : Work, s : Source | u -> w in profile and w -> s in source} | all s : Source | s in Institution\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "y3JvRGA2ZvxYk8Yte", "msg": "Subset operator is redundant, because the left and right subexpressions are always disjoint.\nLeft type = {this/Work->this/Work}\nRight type = {this/User->this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 16:59:10"} {"_id": "yEo5AXuFv5QZFZLHa", "cmd_i": 0, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\n\n\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tWork.visible in source.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User, w1, w2 : Work | u.profile & visible.w1 & not visible.w2 implies w1 = w2\n}", "derivationOf": "uW9nZphY36GsJ54gQ", "msg": "There are 28 possible tokens that can appear here:\n( * @ Int NAME NUMBER STRING String Time ^ all disj fun iden int let lone no none one pred seq some sum this univ { ~", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:03:03"} {"_id": "bjACroB39sXJSaY3k", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tvisible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User | (u.profile).source in (u+Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s:Source,u:User | lone ((u.profile) & (source.s)).ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n ~(visible.ids) in Id -> lone User\n}", "derivationOf": "WQNR6jAhP5MPnp7jQ", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 14:54:25"} {"_id": "ntwvHe39T6MfsCN67", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n (profile.ids).~(profile.ids) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 21:45:05"} {"_id": "u34RgDNjFPN96QXH4", "cmd_i": 3, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User | all w1,w2 : Work | w1 in u.profile and w2 in u.profile implies w1 not w2\n}", "derivationOf": "ndKZ8eLRuhvYNGaSB", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:16:43"} {"_id": "guopbs7HpR2EuJdaa", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | visible.w in profile.w\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in Institution + u\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tlet s = {u : User, w : Work, s : source | u -> w -> -> s in profile . source}\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "wdAfX52WBHuEdL4xA", "msg": "There are 22 possible tokens that can appear here:\n( * @ Int NAME NUMBER STRING String Time ^ disj fun iden int none pred seq sum this univ { ~", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-18 16:50:14"} {"_id": "uigkd5EAppJyrR759", "cmd_i": 0, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\n\n\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tsource.profile and source.visible\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\nids-profile\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\n}", "derivationOf": "CzkxM6526pxjZEKnP", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/Work->this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:15:17"} {"_id": "eHPEX2mg9yqXNptu6", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile \n}\n\n\npred Inv2 { \n\tall u:User ,i:Institution | u.profile.source = u || u.profile.source = i\n}\n\n\npred Inv3 { \n\tall u:User, w:Work, w1:Work | w.source = w1.source && w1 in u.profile && w in u.profile implies w.ids != w1.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User , w:Work | w in u.profile implies (lone u.visible & w)\n}", "derivationOf": "Ppdcx8TfYZsx8CjJx", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-21 15:17:36"} {"_id": "gbsyynQjaArBxHZ3u", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n one profile.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "kzs3q4ShdwsEyhL8t", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:10:56"} {"_id": "MnNx5KQCmEiGuyw98", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-12-12 19:20:14"} {"_id": "Kgffr8fT7tKSG4Fco", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \n all u:User, w1, w2:Work | w1 in u.profile and w2 in u.profile implies w1.ids not in w2.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "DjRbXqMLHRCRXsGEC", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-23 04:38:43"} {"_id": "8PuRmEZx4DnBr93ZK", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tUser.visible in User.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 10:59:47"} {"_id": "NwK9jNDcmn6Zi9pk8", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all x : User | x.profile.source in Institution + x\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s: Source, u: User| ((source.s & u.profile)<:ids).~((source.s & u.profile)<:ids) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n (profile.~visible).(~(profile.~visible)) in iden\n}", "derivationOf": "pd4gjGYLS7YC4pnFp", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 22:35:41"} {"_id": "tpoXtYGz7qFxkNpuH", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w: Work | visible.w in profile.w\n}\n \n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u: User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s1, s2: Source | Work.s1 != Work.s2\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "2kveCiH6NBsQ52yAt", "msg": "This cannot be a legal relational join where\nleft hand side is this/Work (type = {this/Work})\nright hand side is s1 (type = {this/Source})", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-18 16:13:32"} {"_id": "GCt4MMTn8373TshN2", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible = (visible & profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User, w : Work | u->profile.w.source in (u + Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "3ooophTQnxLgWXaWe", "msg": "in can be used only between 2 expressions of the same arity.\nLeft type = {none->none}\nRight type = {this/Source}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:08:49"} {"_id": "BXEzfBNSGiFsSYxnt", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all u:User | all w:Work | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u:User | all i:Institution | all w:Work | w in u.profile implies u in w.source or i in w.source\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "ifbab8Ds8b8XQ3iJf", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 21:55:50"} {"_id": "Cvyqf3Faj4RXQ8NsJ", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tvisible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-12 10:56:10"} {"_id": "E4uAciB5taJKY9fXm", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "b64T2pMGQTenPQiHh", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-12 11:11:48"} {"_id": "vTqkadcqTM64KBrBt", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | visible.w in profile.w\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in Institution + u\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "PWexrNYpGY63XKGM2", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-18 16:40:50"} {"_id": "E4xwKgvzag8L55S3F", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | visible.w in profile.w\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in Institution + u\n}\n\n\naux = {u, User -> w : Work -> s : Source | u -> w in profile and w -> s in source}\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "fDzh6JfADS7ZwjCcC", "msg": "There are 5 possible tokens that can appear here:\nenum fun let open pred", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-18 16:51:55"} {"_id": "k84sej7FwGnWCmoG2", "cmd_i": 0, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\n\n\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tUser.visible in Work.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\nids-profile\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\n}", "derivationOf": "oYN8CudxeQNBFNbCP", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/Work->this/Id}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:18:25"} {"_id": "Kon4qpuTZ4JaCEwZ7", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all x : User | x.profile.source in Institution + x\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n one ids.(~source.ids)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "24Fpc5LRmo2Ja6WpF", "msg": "The join operation here always yields an empty set.\nLeft type = {this/Work->this/Id}\nRight type = {this/Source->this/Id}", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-18 22:00:39"} {"_id": "eevZRjEAEMgyA2P8K", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n}\n \n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u: User | u.profile.source in Institution + u \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "bvtwMbxfm6eqW2PE5", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-12 11:18:36"} {"_id": "metK65oYbcT8Rp7gb", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\t(User<:visible).Work in (User<:profile).Work \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "fYSP7DDTr4AhbsPfA", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-18 19:53:11"} {"_id": "RNBmWwMcGDpp7KK7F", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all w : Work | w.visible = w.source\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "K5uokKf2hMZ4aQAnG", "msg": "The join operation here always yields an empty set.\nLeft type = {this/Work}\nRight type = {this/User->this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:01:16"} {"_id": "g6Jnp8kjhy7Ydf25q", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w1,w2:Work | (w1 in u.visible and w2 in u.visible) implies no (w1.ids & w2.ids)\n}", "derivationOf": "X4PYHfdQEHrGTzRNP", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-9 01:28:09"} {"_id": "NRbowT588NYuNRs5m", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | (User<:visible).w in (User<:profile).w \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | (u<:profile).Work in some (Work<:source).u & (Work<:source).Institution \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "eRZ3XmXuBAL36mWia", "msg": "There are 29 possible tokens that can appear here:\n# ( * @ Int NAME NUMBER STRING String Time ^ all disj fun iden int let lone no none one pred seq some sum this univ { ~", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2019-10-18 19:59:33"} {"_id": "oKYEmeRNwEZo67Loq", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible = (visible & profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | (u.profile).source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all u : User, w1, w2 : Work | ((w1 in (u.profile)) and (w2 in (u.profile)) and (w1.source = w2.source)) implies (w1.ids != w2.ids)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n}", "derivationOf": "6x8doToWkcGArYYzx", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-16 04:14:31"} {"_id": "QcgSBQZ3GLCS7pLT4", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w1,w2:Work, p:u.profile |(w1.ids=w2.ids)and(w1 in p and w2 in p) implies (w1 not in u.visible or w2 not in u.visible) \n}", "derivationOf": "4jxaihAj79JCqqobc", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-9 01:44:46"} {"_id": "cx4xY5qNvJp3z8NC7", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\t\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : Use | some w : Work | u->w in profile implies (Institution in w.source or User in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "msg": "The name \"Use\" cannot be found.", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2019-10-23 08:33:02"} {"_id": "TqiK4irzToBeCxiNH", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { \n \tall u:User , w:Work | (w in u.profile) implies (w.source = u || w.source = Institution) \n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all w:Work, w1:Work | (w in User.profile && w1 in User.profile) implies no (w.ids & w1.ids)\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w:Work | w in u.profile implies lone (u.visible & w)\n}", "derivationOf": "LYPvf8oAgpN9QpGNj", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-22 10:56:52"} {"_id": "4QBQjKhSEykBzvmjk", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | (u.profile + u.visible).source in (u + Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "dM2xEzZY3hBX8PAYH", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-14 10:19:56"} {"_id": "ZMFxQb43Lg77oXpTH", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | (User<:visible).w in (User<:profile).w \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "T7AqvvTHoXmzs9BiY", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2019-10-18 19:54:23"} {"_id": "sja7aSLAaDvLFLuQi", "cmd_i": 0, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | some User.(visible.w)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "h58zhyT5AqTXGLkFv", "msg": "This cannot be a legal relational join where\nleft hand side is this/User (type = {this/User})\nright hand side is (this/User <: visible) . w (type = {this/User})", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2019-10-18 19:47:42"} {"_id": "ytbExBsmrrKRSigae", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\t\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | some w : Work | u->w in profile implies some (w<:source).Institution or some (w<:source).User\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tWork.(User.profile) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "iu6ZtNTSMygKN5xZ9", "msg": "This cannot be a legal relational join where\nleft hand side is this/Work (type = {this/Work})\nright hand side is this/User . (this/User <: profile) (type = {this/Work})", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2019-10-23 08:37:11"} {"_id": "EjfJxGZbqnNPQu6hf", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | visible.w in profile.w\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in Institution + u\n}\n\n\naux = {u, User, w : Work, s : Source | u -> w in profile and w -> s in source}\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "E4xwKgvzag8L55S3F", "msg": "There are 5 possible tokens that can appear here:\nenum fun let open pred", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-18 16:52:10"} {"_id": "mRze7GNFEEqvfviaE", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tWork in User.profile + User.visible\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "MpkxDWJoepRnbFZt2", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-18 19:45:25"} {"_id": "pv6GdYWkodJMubKD7", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tvisible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User , w : u.profile | w.source = u || w.source in Instituition\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "E5cN6bDiZ7ZscaoJT", "msg": "The name \"Instituition\" cannot be found.", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:13:28"} {"_id": "PEJxqFdgYjgL9NtKY", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all x : User | x.profile.source & x.visible.source in Institution + x\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "4oQGs4Kh4rJch3uhH", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-12 11:01:29"} {"_id": "PJm7te45hiWriGGog", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User , w:Work | (w in u.profile) implies (w.source = u ) \n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "9DNW6eNcNYTPKwx8D", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-22 10:47:49"} {"_id": "niXbqAHh6tASPKNse", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w: Work | visible.w in profile.w\n}\n \n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u: User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s1, s2: Source| all u: User | s1 = s2 and u.profile.source = s1 or u.profile.source = s2 implies one u.profile.ids \n \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all w1, w2: Work | User.profile.ids = User.visible.ids\n}", "derivationOf": "TRHw7LGST7e9r6Jg6", "msg": "This variable is unused.", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 16:32:23"} {"_id": "QN2X6enQ29Cyt6xoo", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u :User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User | u.profile.source in (Institution+u)\n}\t\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall u:USer | all disj w1,w2: u.profile | no (w1.ids & w2.ids)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "7sSZBQ8oyinfuzemd", "msg": "The name \"USer\" cannot be found.", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:19:49"} {"_id": "sqom9sdyteShym3M4", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile \n}\n\n\npred Inv2 { \n\tall u:User ,i:Institution | u.profile.source = u || u.profile.source = i\n}\n\n\npred Inv3 { \n\tall u:User, w:Work, w1:Work | w.source = w1.source && w1 in u.profile && w in u.profile implies w.ids != w1.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User , i:Id, i1:Id | i in u.visible.ids && i1 in u.visible.ids && i != i1\n}", "derivationOf": "pJva76RqT9da4fGSz", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-21 15:10:16"} {"_id": "f2eRuSgoNNDgJsnc6", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User | all w1, w2 : Work | (w1 != w2 and (w1 + w2) in u.visible) implies (w1.ids != w2.ids or w1.source != w2.source)\n}", "derivationOf": "NGf9sNMpgT8uarQrG", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-11-3 20:31:04"} {"_id": "edG6a4geNcPHz2yJD", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "yzZJtws3QhDD7uqNL", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-1-9 03:36:21"} {"_id": "xLH8gPig9ejEjE4qH", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tUser.visible in User.profile\n\n}\n \n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u: User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "qJPH9GDkPAzRP8zn4", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 21:42:14"} {"_id": "MeZ7zBjX4qg5u2FBq", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User, w:Work, i:Institution | w in u.profile implies (u in w.source || i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "CbfnBz7D4iCKeBnRG", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-8 19:19:17"} {"_id": "ZuNcsgdwRaBiaKGps", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | visible.w in profile.w\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in Institution + u\n}\n\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tlet aux = {u, User, w : Work, s : Source | u -> w in profile and w -> s in source} | all s : Source \n \t\t| all disj p1, p2 : aux.s | no User.p1.ids \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "MQSnpCp3PLxd97S4D", "msg": "Analysis cannot be performed since it requires higher-order quantification that could not be skolemized.", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-18 17:20:41"} {"_id": "Rmt7vzhbYhkJEJ7bp", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\t\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | some w : Work | u->w in profile implies (Institution in w.source or User in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "cx4xY5qNvJp3z8NC7", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-23 08:33:09"} {"_id": "qL93QuppNjJLqmfPM", "cmd_i": 0, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\n\n\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tprofile.source and source.visible\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\nids-profile\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\n}", "derivationOf": "uigkd5EAppJyrR759", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/User->this/Source}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:15:25"} {"_id": "93eFhFJ53jxeNAKWX", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall w1, w2 : Work, u : User | w1 != w2 and (w1 + w2) in u.profile and (w1.source = w2.source) implies no w1.ids & w2.ids\n}\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\tall u : User, w1, w2 : Work | w1 != w2 and (w1 + w2) in u.profile implies (w1.source != w2.source) and (no w1.ids & w2.ids)\n}", "derivationOf": "FvFv6QLnpCDE6YBuY", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-11-3 20:41:27"} {"_id": "vnnSr5GqfBMTT7No9", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall w1, w2 : Work | some u : User | w1 != w2 and (w1 + w2) in u.profile implies no w1.ids & w2.ids\n}\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n}", "derivationOf": "Hty6E3KdZD9R9GShH", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-11-3 20:35:09"} {"_id": "75iF8xATfjXTgungZ", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile \n}\n\n\npred Inv2 { \n\tall u:User ,i:Institution | u.profile.source = u || u.profile.source = i\n}\n\n\npred Inv3 { \n\tall u:User, w:Work, w1:Work | w.source = w1.source && w1 in u.profile && w in u.profile implies w.ids != w1.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User , i:Id, i1:Id | i in u.visible.ids && i1 in u.visible.ids implies i != i1\n}", "derivationOf": "cmgcya5Fd3ghFfX3r", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-21 15:10:34"} {"_id": "ouApXyDcBPtZwEtvK", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w1,w2:Work | (w1.ids=w2.ids and w1.source = w2.source) implies (w1 not in u.visible or w2 not in u.visible) \n}", "derivationOf": "8tgiJap4DzpFQ26TL", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-9 01:42:37"} {"_id": "ptypAaRZwkLzSSiWY", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tvisible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User | (u.profile).source in (u+Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s:Source,u:User | lone ((u.profile) & (source.s)).ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n ~(visible.ids) in Id -> lone User\n}", "derivationOf": "KPL4LMnNar8qjoqme", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 14:58:12"} {"_id": "72N4uXhb2TpSMG8D8", "cmd_i": 3, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w1,w2:Work, i:Id | w1 = w2 implies (w1 in u.visible or w2 in visible)\n}", "derivationOf": "SsWFNMriDgevEkePj", "msg": "in can be used only between 2 expressions of the same arity.\nLeft type = {this/Work}\nRight type = {this/User->this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-1-9 01:34:58"} {"_id": "pd4gjGYLS7YC4pnFp", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all x : User | x.profile.source in Institution + x\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s: Source, u: User| ((source.s & u.profile)<:ids).~((source.s & u.profile)<:ids) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n profile.~visible in iden\n}", "derivationOf": "gP23Grix7d5szBZe7", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 22:33:51"} {"_id": "PWexrNYpGY63XKGM2", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | visible.w in profile.w\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-18 16:38:29"} {"_id": "6h9WGpZd4yJ3Hc8dZ", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User, w:Work | some i:Institution | w in u.profile implies (u in w.source or i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\n}", "derivationOf": "XWghcNFpH92nxDhvb", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-8 22:03:37"} {"_id": "ThZdHB9ToAwFrxKk3", "cmd_i": 3, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w1,w2:Work, i:Id | (w1 in u.visible and w2 in u.visible) implies no (w1.i & w2.i)\n}", "derivationOf": "g6Jnp8kjhy7Ydf25q", "msg": "This cannot be a legal relational join where\nleft hand side is w1 (type = {this/Work})\nright hand side is i (type = {this/Id})", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-1-9 01:30:59"} {"_id": "vf7jbfF7ws8drN4vw", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\nall w1, w2 : Work | all u : User | w1 != w2 and (w1 + w2) in u.profile and (w1.source = w2.source) implies no w1.ids & w2.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\nall w1, w2 : Work | all u : User | w1.ids = w2.ids and (w1 + w2) in u.visible and (w1 + w2) in u.profile implies w1.source = w2.source \n}", "derivationOf": "tz9e953GMTHyd7Zim", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-5-7 13:08:26"} {"_id": "5tnbW2oCdjy5oNiQZ", "cmd_i": 3, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible = (visible & profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | ((u.profile).source) in (Institution & u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User, w : Work | one (u.profile.w.id)\n}", "derivationOf": "8bowN4vEqmmLPZRpg", "msg": "This cannot be a legal relational join where\nleft hand side is u . (this/User <: profile) (type = {this/Work})\nright hand side is w (type = {this/Work})", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:47:05"} {"_id": "hk3XmKN4YFjL7k98x", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall w1, w2 : Work | some u : User | w1 != w2 and (w1 + w2) in u.profile and (w1.source = w2.source) implies no w1.ids & w2.ids\n}\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n}", "derivationOf": "mHbQp3AWDr9s9dTX9", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-11-3 20:36:15"} {"_id": "FyYEGXonSAuWR8BXr", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile in (source.Institution + source.u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "pH8HdCmAgN45XNYL2", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-12 10:59:24"} {"_id": "xjQdmkTq8kA8gckpu", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible = (visible & profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | (u.profile).source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all w1, w2 : Work, u : User {\n (w1 != w2 and ((w1 + w2) in u.profile) and w1.source = w2.source) implies no (w1.ids & w2.ids)\n }\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w:Work | w in u.profile implies lone (u.visible & w)\n}", "derivationOf": "MkdD5i7suXbj4SNkw", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-23 04:52:22"} {"_id": "JvXm6bSpPtNAFLK7k", "cmd_i": 3, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tvisible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User | (u.profile).source in (u+Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s:Source,u:User | lone ((u.profile)&(source.s))\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n Profile.ids in User -> lone Id\n}", "derivationOf": "Z2FM37iTxW9n6XD4r", "msg": "The name \"Profile\" cannot be found.", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 14:09:10"} {"_id": "EkoPDh5jWBz7H8mhK", "cmd_i": 3, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible = (visible & profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User, w : Work | one (u.profile.w.id)\n}", "derivationOf": "yzsu8o3doZ8P9osiw", "msg": "This cannot be a legal relational join where\nleft hand side is u . (this/User <: profile) (type = {this/Work})\nright hand side is w (type = {this/Work})", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:19:42"} {"_id": "oHb5JjbsyhmKAfDBs", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall u : User | ~allIds[u].allIds[u] in iden\n}\n\nfun allIds[u : User] : set Id {\n\tu.profile.Work.ids\n}\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "8nGvxsvMvjjMNbqDS", "msg": "Name cannot be resolved; possible incorrect function/predicate call; perhaps you used ( ) when you should have used [ ]\n\nThis cannot be a correct call to fun this/allIds.\nThe parameters are\n u: {this/User}\nso the arguments cannot be empty.", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2019-11-3 20:20:21"} {"_id": "vYE24qm9TKgCzA4KA", "cmd_i": 3, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\t\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w1,w2:Work | lone u->w1 in visible \n}", "derivationOf": "K4GmumY2z764CodyS", "msg": "This must be a set or relation.\nInstead, it has the following possible type(s):\n{PrimitiveBoolean}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2019-11-10 21:32:55"} {"_id": "ZGzpJM83xfhtQ8cvS", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n \tall w:Work, u:User | w in u.visible implies w in u.profile \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\t\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall w1,w2:Work | w1.ids = w2.ids implies w1 = w2\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "wnQbHPFmqWHznYHEF", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-21 18:53:41"} {"_id": "uDjCPpR7nJpxc8z6K", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all x : User | x.profile.source in Institution + x\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s: Source | one ids.(s.(~source.ids))\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "v6W3HMjyJTY9C3htZ", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 22:02:53"} {"_id": "zJ8oED7m3u3LKosgK", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall w:Work,u:User | u->w in profile implies (w.source:>u or w.source:>Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "6MQRiypDXJYQBFm7e", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/User}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-19 10:58:14"} {"_id": "f5v2qQh8KsLWd35Xp", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User, w:Work | w in u.profile implies (u in w.source or (some Institution in w.source))\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\tall u:User, w:Work | w in u.profile implies lone (u.visible & w)\n}", "derivationOf": "t8SkvsHTGiz3zAjg3", "msg": "This must be a set or relation.\nInstead, it has the following possible type(s):\n{PrimitiveBoolean}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-1-8 22:30:33"} {"_id": "nfEuHYXjacuE7dRbT", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in (u + Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "H7poYeXnYsDboPFcr", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2019-11-3 20:15:15"} {"_id": "PgmZajecY3maSaJBj", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | visible.w in profile.w\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User | Work = profile.u.source + profile.Institution.source\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "aKehpmqo2AmomqWat", "msg": "The join operation here always yields an empty set.\nLeft type = {this/User->this/Work}\nRight type = {this/User}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 14:37:08"} {"_id": "yzZJtws3QhDD7uqNL", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tUser.visible in User.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-9 03:34:53"} {"_id": "p2BYXpLf8D4bKcrXu", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all w:Work,u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all w:Work,u:User | w in u.profile implies (u in w.source or w.source in Institution) \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all w1,w2:Work | (w1 in Source.profile and w2 in Source.profile) implies w1.ids not in w2.ids \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "bq5wTzjNFqGLvjivM", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-19 09:19:07"} {"_id": "NhGTaKJX6nwERXfdC", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all w1, w2 : Work, u : User {\n (((w1 + w2) in u.profile) and w1.source = w2.source) implies no (w1.ids & w2.ids)\n }\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "cHwwkssE5F7MnmkKh", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-23 04:40:48"} {"_id": "ZYcsYugEwvGyXEoss", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall u : User | some id1, id2 : Id | some u.profile.ids.id1 and u.profile.ids.id2 implies id1 != id2 \n}\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "dbneR2smXCpqo3rgy", "msg": "This cannot be a legal relational join where\nleft hand side is u . (this/User <: profile) . (this/Work <: ids) (type = {this/Id})\nright hand side is id1 (type = {this/Id})", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2019-11-3 20:23:43"} {"_id": "JCsTFngCA387YvvnN", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n (profile.ids).~(profile.ids) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\t~(visible.ids).(visible.ids) in iden\n}", "derivationOf": "pqdnewkEF7gqtGH5d", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 22:14:44"} {"_id": "fzsj27qqAAerR25xd", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | visible.w in profile.w\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\t\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all a,b:Work | visible.a = visible.b implies a=b \n}", "derivationOf": "fjvcqx8oRyd4GGvar", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 14:42:49"} {"_id": "LAAraRBsadgfBj5n3", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User | all w1, w2 : Work | (w1 != w2 and (w1 + w2) in u.visible) implies (no w1.ids & w2.ids and w1.source != w2.source)\n}", "derivationOf": "qdwphqwNJpn9saxYm", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-11-3 20:31:41"} {"_id": "Dpd6NzwZ3DpXSDehu", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall u:User,s:Source,i:Id | lone (u.profile & source.s & ids.i)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-13 19:09:26"} {"_id": "TZx5xKgdzaE59DYNL", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \tall w1, w2:Work, u:User | ((w1 in u.profile and w2 in u.profile) and (w1.^ids = w2.^ids)) implies w1=w2\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "bL2C4CZ3Dg9u78s6b", "msg": "^ (this/Work <: ids) is redundant since its domain and range are disjoint: {this/Work->this/Id}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-9 00:36:30"} {"_id": "jHDsujkYCJFnuGE8J", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tvisible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u: User | u.profile.source in (u + Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tlone User.profile.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "cER2CuvPKngtnnAp3", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:07:12"} {"_id": "XReKsX6y4otkhufW5", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | (User<:visible).w in (User<:profile).w \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | (u<:profile).Work in (Work<:source).u + (Work<:source).Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tWork<:ids != Work<:ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "bMpHhDZYQaMqK7spC", "msg": "Subset operator is redundant, because the left and right subexpressions are always disjoint.\nLeft type = {this/User}\nRight type = {this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-18 20:13:39"} {"_id": "dQw58JzZgiMsaqj5h", "cmd_i": 0, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all u:User | all u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "msg": "The \"all x\" construct is no longer supported. If you know the range of possible values of x, consider rewriting it as \"x == set_of_all_possible_values\".", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-18 21:49:56"} {"_id": "Kbsqjr4dCA8i5tHJh", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u :User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User | u.profile.source in (Institution+u)\n}\t\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall disj w1,w2:Work, u:User | w1 and w2 in u.profile implies no (w1.ids & w2.ids)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "cqm8xJvwrKqq2r5RD", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:13:01"} {"_id": "TpEAXfbPx9WQPvwj8", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User, w:Work | w in u.profile implies ( w.source in Institution) \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "ZNDjjnYx77sBjg7Hi", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-19 10:02:16"} {"_id": "rsbKhboFjCgEgemiN", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\t\tsome w: Work | all u: User| w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u: User | all w: Work | u.profile.w implies w.source in u or w.source in Institution \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "dnPZZESojinhBP5hw", "msg": "This cannot be a legal relational join where\nleft hand side is u . (this/User <: profile) (type = {this/Work})\nright hand side is w (type = {this/Work})", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:09:25"} {"_id": "AqeA7zD9636gfFyYf", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | (User<:visible).w in (User<:profile).w \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | some (u<:profile).Work in (Work<:source).u & (Work<:source).Institution \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "6bJ4j3DKRJwBEc4xE", "msg": "This must be a set or relation.\nInstead, it has the following possible type(s):\n{PrimitiveBoolean}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2019-10-18 19:59:54"} {"_id": "cHwwkssE5F7MnmkKh", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all w1, w2 : Work, u : User {\n (w1 != w2 and ((w1 + w2) in u.profile) and w1.source = w2.source) implies no (w1.ids & w2.ids)\n }\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "LuC9hKqnqQAWJHk48", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-23 04:40:32"} {"_id": "eZzQB2NQk6yTPPq48", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n User.(profile.ids) in Id \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "iZrJfPJuBJzJpCi2Q", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:14:18"} {"_id": "oSE6uWg2eNy7Nvpp6", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible = (visible & profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | (u.profile).source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all w1, w2 : Work, u : User {\n (w1 != w2 and ((w1 + w2) in u.profile) and w1.source = w2.source) implies no (w1.ids & w2.ids)\n }\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "ig8xM4zsc3JJYYLdC", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-23 04:41:43"} {"_id": "AKdF2QFrkxvaWF6sX", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \tall w1, w2:Work, u:User, i:Id | ((w1 in u.profile and w2 in u.profile) and (w1.source = w2.source)) implies (w1.i != w2.i)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "dn2K5PbzCWFMLx45i", "msg": "This cannot be a legal relational join where\nleft hand side is w1 (type = {this/Work})\nright hand side is i (type = {this/Id})", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-1-8 23:45:31"} {"_id": "WFz3R4QLmwhRLuQpZ", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "nfEuHYXjacuE7dRbT", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2019-11-3 20:15:20"} {"_id": "zjvn7shMuKndPeJXi", "cmd_i": 3, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w1,w2:Work | (w1=w2) implies no (w1 in u.visible & w2 in u.visible) \n}", "derivationOf": "NMy6ynbSjjnpL5J36", "msg": "This must be a set or relation.\nInstead, it has the following possible type(s):\n{PrimitiveBoolean}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-1-9 01:41:06"} {"_id": "HNj7TnvXrdcm55DDA", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all x : User | x.profile.source in Institution + x\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s: Source, u: User | ((source.s & u.profile)<:ids).~((source.s & u.profile)<:ids) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u: User | ^((u.visible<:ids).~(u.visible<:ids)) in iden\n}", "derivationOf": "GWCoicMiL5R4ySNLp", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-19 09:14:35"} {"_id": "Cfka7imX5vWfNmgLH", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User, w:Work, i:Institution | w in u.profile implies (u in w.source or i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "MeZ7zBjX4qg5u2FBq", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-8 19:20:23"} {"_id": "gW2vvhfshgogitqHw", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2019-10-22 10:44:06"} {"_id": "ifbab8Ds8b8XQ3iJf", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all u:User | all w:Work | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u:User | all w:Work | w in u.profile implies u in w.source\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "WFwwpScnibchj44ix", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 21:54:54"} {"_id": "Dqptdj2DqQbpcAYoK", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-12 10:56:14"} {"_id": "NupBYm7d5DyMWbjha", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | visible.w in profile.w\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\t Profile.User = Profile.User.source + Profile.Institution.source\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "qpwsmYnoi7gLEw5wn", "msg": "The name \"Profile\" cannot be found.", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 14:38:25"} {"_id": "amtS74PWTLwJJaPjk", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \tall w1, w2:Work, u:User | ((w1 in u.profile and w2 in u.profile) and (w1.ids = w2.ids)) implies w1=w2\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "ency8nDxeKJcg86PJ", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-9 00:37:06"} {"_id": "5od5LftYGTq6JjWJo", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | (u.profile + u.visible).source in (u + Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall w : source.Source | w.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "YM7QwF8rgXE7sfngu", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/Id}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-14 10:33:20"} {"_id": "62mb2Y387bw2HKz8d", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User, w:Work | some i:Institution | w in u.profile implies (u in w.source or i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\n}", "derivationOf": "Q6KcX9WQZakhGnekc", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-8 22:02:53"} {"_id": "CAbHy2cWFRPCDZJyj", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u: User | ~(visible:>u.profile).(visible:>u.profile) in iden\n}", "derivationOf": "bKcAtAFTFAXTbfz8W", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 22:48:18"} {"_id": "aEYrcQ2N7sXEwpAGN", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | (User<:visible).w in (User<:profile).w \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | some (Work<:source).u or some (Work<:source).Institution \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "ikM7eGQYvr36DmuLM", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-18 19:56:57"} {"_id": "eLMDwcZeRBqv4WeWb", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n (profile.ids).~(profile.ids) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\tone ~(visible.ids).(visible.ids)\n}", "derivationOf": "nZDY56fE96QKF8e84", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 22:05:03"} {"_id": "Lw4EpcFSybd5kKEPW", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible = (visible & profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | (u.profile).source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all w1, w2 : Work, u : User {\n (w1 != w2 and ((w1 + w2) in u.profile) and w1.source = w2.source) implies no (w1.ids & w2.ids)\n }\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User, w : Work {\n (w in u.profile) implies one (w.ids)\n }\n}", "derivationOf": "FwqG5XFRE2QXhgvAv", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-23 04:46:42"} {"_id": "byM5SDx8HjGWnjDYR", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User, w:Work | w in u.profile implies (u.source in Institution or u.source in User) \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "Sg2Mqoq3SRbtYBDBP", "msg": "The join operation here always yields an empty set.\nLeft type = {this/User}\nRight type = {this/Work->this/Source}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-19 09:59:38"} {"_id": "dLFq7Ei4Fu7yP7mTw", "cmd_i": 3, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User | (u.profile).source in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w1,w2:Work | w1 in u.visible and w2 in u.visilbe implies w1.ids != w2.ids\n}", "derivationOf": "7kLM8PBqgN9Mqk4aA", "msg": "The name \"visilbe\" cannot be found.", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-18 23:49:24"} {"_id": "uQ5Pt5eDcREGesknW", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | (u.profile + u.visible).source in (u + Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User, id : u.profile.ids, w1, w2 : Work | w1->id + w2->id in visible.ids => w1 = w2\n}", "derivationOf": "btrWBNhnfQZjjCs5d", "msg": "Subset operator is redundant, because the left and right subexpressions are always disjoint.\nLeft type = {this/Work->this/Id}\nRight type = {this/User->this/Id}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-14 11:01:32"} {"_id": "cww4HZQD5T5E2fEZh", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tno User\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "8byEvHuXbfb8s8Krn", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-17 10:52:18"} {"_id": "crAFaEARSNMZ8YMgS", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\t\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | some w : Work | u->w in profile implies (w->source in Institution or w->source in User)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "Rmt7vzhbYhkJEJ7bp", "msg": "in can be used only between 2 expressions of the same arity.\nLeft type = {this/Work->this/Work->this/Source}\nRight type = {this/Institution}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2019-10-23 08:34:01"} {"_id": "u5ZxNNY7JGvdyuxtD", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | some (User<:visible).w implies some w.(User<:profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "upMhrGDzjgfBYhxJC", "msg": "The join operation here always yields an empty set.\nLeft type = {this/Work}\nRight type = {this/User->this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-18 19:48:58"} {"_id": "8GdwHBHExeKMSj95u", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall w1, w2 : Work, u : User | w1 != w2 and (w1 + w2) in u.profile and (w1.source = w2.source) implies no w1.ids & w2.ids\n}\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\tall u : User, w1, w2 : Work | w1 != w2 and (w1 + w2) in u.visible implies (w1.ids != w2.ids)\n}", "derivationOf": "6YEf99jBnMxfWsQKB", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-11-3 20:45:17"} {"_id": "AWMuk9PyG3AjFcv6q", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\t\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w1,w2:Work | u->w1 in visible and u->w2 in visible implies w1!=w2\n}", "derivationOf": "bA8ntuFnAicgZc8pP", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-11-10 21:25:35"} {"_id": "B8qA6xeDdjyAcDkaj", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u: User | u.visible in u.profile \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\t\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "HrLCgEZDqe5ysi6Q2", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-1-8 21:46:51"} {"_id": "bAfERtvpCf8GampXw", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tUser.visible in User.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 10:56:36"} {"_id": "sujhrgPmr6tMp9xtF", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s: Source, u: User| ((source.s & u.profile)<:ids).~((source.s & u.profile)<:ids) in iden\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\t\n \tall w : Work | visible.w in User and ~ids.ids in iden\n}", "derivationOf": "9uKpQZLm2iqCcex2G", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 22:59:27"} {"_id": "AD8hEgSZw7pheTnaT", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\t\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | some w : Work | u->w in profile implies some (w<:source).Institution or some (w<:source).User\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tlone Work.Id<:(User.profile)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "xaPbNNR62oKpNiSzh", "msg": "This cannot be a legal relational join where\nleft hand side is this/Work (type = {this/Work})\nright hand side is this/Id (type = {this/Id})", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2019-10-23 08:38:22"} {"_id": "WeWKKNkRtAR8Y6unw", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\nall w1, w2 : Work | all u : User | w1 != w2 and (w1 + w2) in u.profile and (w1.source = w2.source) implies no w1.ids & w2.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\nall w1, w2 : Work | all u : User | (w1 + w2) in u.visible and (w1 + w2) in u.profile implies w1 = w2 \n}", "derivationOf": "9RbNNYpfsytZuik5o", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-5-7 13:00:32"} {"_id": "LgBsjmhvix6keJqB5", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | visible.w in profile.w\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\t Profile.User = profile.User.source + profile.Institution.source\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "NupBYm7d5DyMWbjha", "msg": "The name \"Profile\" cannot be found.", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 14:38:34"} {"_id": "6Q9iKv9ETWsLDnzuy", "cmd_i": 0, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tfor u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "msg": "There are 38 possible tokens that can appear here:\n! # ( * @ Int NAME NUMBER STRING String Time ^ after all always before disj eventually fun historically iden int let lone no none once one pred seq set some sum this univ { } ~", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 10:57:11"} {"_id": "snDjD335hmeJTbsub", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w1,w2:Work | (w1 in u.visible and w2 in u.visible) and\n \t\t\t\t\t\t\t (w1.source = w2.source or w1.source != w2.source)\n implies no (w1.ids & w2.ids)\n}", "derivationOf": "n9QTCTdtQF3tLoyco", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-9 01:14:04"} {"_id": "TZAxQg7cHTaRCRc2w", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all x : User | x.profile.source in Institution + x\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n lone ids.Id\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "duwNqEy8fhPHRNau5", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:16:39"} {"_id": "DSBbq6dzDD97xkHcA", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall w:Work,u:User | u->w in profile implies lone (w.source:>u + w.source:>Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "zJ8oED7m3u3LKosgK", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-19 11:01:59"} {"_id": "utFg7YEpdBzwbHX8e", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all x : User | x.profile.source in Institution + x\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s: Source, u: User | ((source.s & u.profile)<:ids).~((source.s & u.profile)<:ids) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u: User| ((u.profile)<:ids).~(u.profile<:ids) in iden\n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-19 08:38:26"} {"_id": "fzjXpAGBuw267DAF5", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile in (source.Source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "XzgGhykrcEvSB2wmx", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:01:51"} {"_id": "9qQfctCo9GfLJhd9Q", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | (User<:visible).w in (User<:profile).w \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | some (u<:profile).Work implies some (Work<:source).u (Work<:source).Institution \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "N8NXMSBu3XkTLuzMY", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2019-10-18 20:03:49"} {"_id": "iS4vrbbCWWyWwYn5P", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all w:Work,u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all w:Work,u:User | w in u.profile implies (u in w.source or w.source in Institution) \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \n all id1:Id, w1,w2:Work | (w1 in Source.profile and w2 in Source.profile and id1 in w1.ids) implies id1 not in w2.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "HC6BSCBF69nxcoLHr", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-19 09:26:04"} {"_id": "sKgkRMWpj5cbX6qC6", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tvisible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u: User | u.profile.source in (u + Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tUser.profile.source in Institution implies lone User.profile.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "jLiyrCdKrqCgPn5B6", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:09:58"} {"_id": "K4GmumY2z764CodyS", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\t\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w1,w2:Work | u->w1 in visible implies lone w1.ids\n}", "derivationOf": "eCm59NCMpHvzDAEkN", "msg": "This variable is unused.", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-11-10 21:27:43"} {"_id": "n9QTCTdtQF3tLoyco", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w1,w2:Work | (w1 in u.visible and w2 in u.visible) implies no (w1.ids & w2.ids)\n}", "derivationOf": "5ygJ6HgCe9y8DscDm", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-9 01:11:55"} {"_id": "NeNiMAKXbHAtYcz2n", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | (u.profile + u.visible).source in (u + Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall w : source.Source, disj w1,w2 : w.ids | no w1 = w2\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "CFPRrd5YvcDYESgM4", "msg": "= can be used only between 2 expressions of the same arity, or between 2 integer expressions.\nLeft type = {PrimitiveBoolean}\nRight type = {this/Id}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-14 10:35:29"} {"_id": "y3iYBXZQ4crTX2oTX", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall w1, w2 : Work, u : User | w1 != w2 and (w1 + w2) in u.profile and (w1.source = w2.source) implies no w1.ids & w2.ids\n}\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\tall u : User, w1, w2 : Work | w1 != w2 and (w1 + w2) in u.visible and (w1.source != w2.source) implies w1.ids != w2.ids\n}", "derivationOf": "7mrXZPwrrAqzyEy6G", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-11-3 20:47:32"} {"_id": "PnED5HjGpRuRjAcx8", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tWork in User.profile & User.visible\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "mRze7GNFEEqvfviaE", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-18 19:45:32"} {"_id": "E4cz5hGgXduKmRnNE", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all w:Work,u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all w:Work,u:User | w in u.profile implies u in w.ids\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "Ep8NWF5r49ZbbMFWN", "msg": "Subset operator is redundant, because the left and right subexpressions are always disjoint.\nLeft type = {this/User}\nRight type = {this/Id}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-19 09:15:25"} {"_id": "EC4Mk7dM3Nm5JKtti", "cmd_i": 0, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n some pub: User.visible | profile.pub\n}\n \n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u: User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "H8SEdcTypdDyMytS5", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/User}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 21:40:25"} {"_id": "HgMPdAddsTD2uLEGY", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User, w : Work | u->w in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "NE83znfubzcXR3csm", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-11-2 23:30:25"} {"_id": "ef46Z34NpCs9eQfNY", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\n\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u: User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u: User | u.profile.source in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "oSXzrvt2akjnL3u7P", "original": "JC8Tij8o8GZb99gEJ", "theme": {"currentFramePosition": {}, "currentlyProjectedSigs": [], "generalSettings": {"currentLayout": "breadthfirst", "metaPrimSigs": [{"parent": null, "type": "univ"}, {"parent": "univ", "type": "Id"}, {"parent": "Source", "type": "Institution"}, {"parent": "univ", "type": "Int"}, {"parent": "univ", "type": "RejectedBy"}, {"parent": "RejectedBy", "type": "ShouldBeAccepted"}, {"parent": "RejectedBy", "type": "ShouldBeRejected"}, {"parent": "univ", "type": "Source"}, {"parent": "univ", "type": "String"}, {"parent": "null", "type": "univ"}, {"parent": "Source", "type": "User"}, {"parent": "univ", "type": "Work"}, {"parent": "Int", "type": "seq/Int"}, {"parent": "univ", "type": "Id"}, {"parent": "Source", "type": "Institution"}, {"parent": "univ", "type": "Int"}, {"parent": "univ", "type": "RejectedBy"}, {"parent": "RejectedBy", "type": "ShouldBeAccepted"}, {"parent": "RejectedBy", "type": "ShouldBeRejected"}, {"parent": "univ", "type": "Source"}, {"parent": "univ", "type": "String"}, {"parent": "null", "type": "univ"}, {"parent": "Source", "type": "User"}, {"parent": "univ", "type": "Work"}, {"parent": "Int", "type": "seq/Int"}], "metaSubsetSigs": []}, "nodePositions": {"ShouldBeRejected": {"x": 296, "y": 79.6}, "User0": {"x": 592, "y": 79.6}, "User1": {"x": 444, "y": 238.79999999999998}, "Work0": {"x": 222, "y": 318.4}, "Work1": {"x": 444, "y": 318.4}, "Work2": {"x": 666, "y": 318.4}}, "relationSettings": {"edgeColors": [{"color": "#0074D9", "relation": "ids"}, {"color": "#0074D9", "relation": "profile"}, {"color": "#0074D9", "relation": "source"}, {"color": "#0074D9", "relation": "visible"}, {"color": "#0074D9", "relation": "ShouldBeAccepted"}], "edgeStyles": [{"edgeStyle": "solid", "relation": "ids"}, {"edgeStyle": "solid", "relation": "profile"}, {"edgeStyle": "solid", "relation": "source"}, {"edgeStyle": "solid", "relation": "visible"}], "showAsArcs": [{"relation": "general", "showAsArcs": true}, {"relation": "ids", "showAsArcs": false}, {"relation": "profile", "showAsArcs": true}, {"relation": "source", "showAsArcs": true}, {"relation": "visible", "showAsArcs": true}, {"relation": "ShouldBeRejected", "showAsArcs": true}, {"relation": "ShouldBeAccepted", "showAsArcs": true}, {"relation": "Id", "showAsArcs": true}, {"relation": "Work", "showAsArcs": true}, {"relation": "Institution", "showAsArcs": true}], "showAsAttributes": [{"relation": "visible", "showAsAttributes": false}, {"relation": "profile", "showAsAttributes": false}, {"relation": "ids", "showAsAttributes": true}, {"relation": "source", "showAsAttributes": false}]}, "sigSettings": {"nodeBorders": [{"border": "solid", "type": "univ"}, {"border": "inherit", "type": "Id"}, {"border": "inherit", "type": "Int"}, {"border": "inherit", "type": "User"}, {"border": "inherit", "type": "Source"}, {"border": "inherit", "type": "Work"}, {"border": "inherit", "type": "ShouldBeRejected"}, {"border": "inherit", "type": "RejectedBy"}, {"border": "inherit", "type": "seq/Int"}, {"border": "inherit", "type": "general"}, {"border": "inherit", "type": "Institution"}, {"border": "inherit", "type": "ShouldBeAccepted"}, {"border": "inherit", "type": "ids"}], "nodeColors": [{"color": "#2ECC40", "type": "univ"}, {"color": "inherit", "type": "Id"}, {"color": "inherit", "type": "Int"}, {"color": "inherit", "type": "User"}, {"color": "inherit", "type": "Source"}, {"color": "#39CCCC", "type": "Work"}, {"color": "#FF4136", "type": "ShouldBeRejected"}, {"color": "inherit", "type": "RejectedBy"}, {"color": "inherit", "type": "seq/Int"}, {"color": "inherit", "type": "general"}, {"color": "#FFDC00", "type": "Institution"}, {"color": "#FF4136", "type": "ShouldBeAccepted"}, {"color": "inherit", "type": "ids"}], "nodeShapes": [{"shape": "ellipse", "type": "univ"}, {"shape": "inherit", "type": "Id"}, {"shape": "inherit", "type": "Int"}, {"shape": "inherit", "type": "User"}, {"shape": "inherit", "type": "Source"}, {"shape": "roundrectangle", "type": "Work"}, {"shape": "octagon", "type": "ShouldBeRejected"}, {"shape": "inherit", "type": "RejectedBy"}, {"shape": "inherit", "type": "seq/Int"}, {"shape": "inherit", "type": "general"}, {"shape": "inherit", "type": "Institution"}, {"shape": "octagon", "type": "ShouldBeAccepted"}, {"shape": "inherit", "type": "ids"}], "nodeVisibility": [{"type": "univ", "visibility": false}, {"type": "Int", "visibility": true}, {"type": "general", "visibility": false}, {"type": "Id", "visibility": true}, {"type": "User", "visibility": false}, {"type": "Work", "visibility": false}, {"type": "ShouldBeRejected", "visibility": false}, {"type": "Institution", "visibility": false}, {"type": "ShouldBeAccepted", "visibility": false}, {"type": "ids", "visibility": false}]}}, "time": "2020-1-2 18:34:54"} {"_id": "Hrdvf3DPrDC3uCCrE", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall u : User, some id1, id2 : Id | some u.profile.Work.id1 and u.profile.Work.id2 implies id1 != id2\n}\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "Xzqu4BPRXmuuEoqtT", "msg": "There are 8 possible tokens that can appear here:\nNAME disj exh part private seq this var", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2019-11-3 20:22:16"} {"_id": "J8ApfGppnWv2rnr33", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 09:44:06"} {"_id": "wnQbHPFmqWHznYHEF", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n \tall w:Work, u:User | w in u.visible implies w in u.profile \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User,w:Work | some i:Institution | w in u.profile implies (w.source = i or w.source = u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "ujdqduACiz8GBeHiE", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-21 18:51:36"} {"_id": "X69eLSn9GtKGve2Fz", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\t\n\tUser.visible in User.profile & User\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "H2gY3AxRxaBiSa869", "msg": "& is irrelevant because the two subexpressions are always disjoint.\nLeft type = {this/Work}\nRight type = {this/User}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-22 10:44:36"} {"_id": "8a8oLa4neJM7Frf7F", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible = (visible & profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | (u.profile).source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all w1, w2 : Work, u : User {\n (w1 != w2 and ((w1 + w2) in u.profile) and w1.source = w2.source) implies no (w1.ids & w2.ids)\n }\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "Nf2S6zpPpbKiHzj46", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-23 04:53:37"} {"_id": "WwFRyusjLKndNusi7", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n Work.visible = Work.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "msg": "The join operation here always yields an empty set.\nLeft type = {this/Work}\nRight type = {this/User->this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:08:58"} {"_id": "kjcEZjug53rmfZzwH", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s: Source, u: User| ((source.s & u.profile)<:ids).~((source.s & u.profile)<:ids) in iden\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\t\n \tall w : Work | visible.w in User and ~ids.ids in iden and ids.~ids in iden\n}", "derivationOf": "sujhrgPmr6tMp9xtF", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 23:00:09"} {"_id": "ZvNrBZTFzK3cd4cv4", "cmd_i": 0, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\n\n\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tprofile.(User.visible)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\nids-profile\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\n}", "derivationOf": "brywFahb5ZWibvjGW", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/User}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:19:17"} {"_id": "xR4ZJuT4tun6SYY3q", "cmd_i": 0, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w1, w2 : Work | w1->w2 in visible and in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "Q2kZDGmsvxRuTYP2z", "msg": "There are 37 possible tokens that can appear here:\n! # ( * @ Int NAME NUMBER STRING String Time ^ after all always before disj eventually fun historically iden int let lone no none once one pred seq set some sum this univ { ~", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2019-11-2 23:27:54"} {"_id": "rf4rDHcxi83Ak7kRb", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User | all w:u.profile | w.source = u or w.source in Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall u:User | all w:u.profile, w1:u.profile | w.source in Institution and w1.source in Institution and w.source.id != w1.source.id\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "BLXpaCkuTRjPFqS96", "msg": "The name \"id\" cannot be found.", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-1-8 12:23:29"} {"_id": "89QyKQwr6y7G5PWaE", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\t\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w1,w2:Work | u->w1 in visible and u->w2 in visible implies w1!=w2\n}", "derivationOf": "3sJYPoPksBBwTfqoG", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-11-10 21:26:36"} {"_id": "vCqtPsKf77MD7vGzo", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w: Work | visible.w in profile.w\n}\n \n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u: User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\tall w: Work | some s: Source | profile.w in w.s implies one w.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "epx4oxtiuZbi2DpvN", "msg": "This cannot be a legal relational join where\nleft hand side is w (type = {this/Work})\nright hand side is s (type = {this/Source})", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 21:59:06"} {"_id": "cobHeTwrtC694pJW5", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n (profile.ids).~(profile.ids) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\n}", "derivationOf": "ntwvHe39T6MfsCN67", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-18 21:45:21"} {"_id": "Kwr4dtiqWhxdwa4DT", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u :User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User | u.profile.source in (Institution+u)\n}\t\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall w1,w2:Work, u:User | (w1+w2) in u.profile implies no (w1.ids & w2.ids)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "8qXo6onHjLCGzvHcJ", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:14:46"} {"_id": "9sRKu4k8dLEZ3qcj5", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tvisible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User | (u.profile).source in (u+Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s:Source,u:User | lone ((u.profile)&(source.s))\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n profile.ids in User -> lone Id and profile.source in User -> lone Source\n}", "derivationOf": "BMBBzuqSJHjjLmhxc", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 14:10:09"} {"_id": "HjWmPFLoi5XgJZgrG", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tvisible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User | (u.profile).source in (u+Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s:Source,u:User | lone ((u.profile) & (source.s)).ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n ~(visible.ids) in Id -> lone User\n}", "derivationOf": "mKqsR7hnXeNxrXCiX", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 15:08:39"} {"_id": "ABEAJXgnncMEyexq5", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | (User<:visible).w in (User<:profile).w \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | Work.(u<:profile) in (Work<:source).u & (Work<:source).Institution \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "3Y3AtJz969EouZkGj", "msg": "The join operation here always yields an empty set.\nLeft type = {this/Work}\nRight type = {this/User->this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-18 20:07:20"} {"_id": "D8H8hQocPKDYc9Fht", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u: User | u.visible in u.profile \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u: User, w: u.profile | w.source = u or w.source in Institution\n \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall u: User, w1, w2: u.profile | not (w1.ids = w2.ids)\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "rL7Q7stPv8iohSXGF", "msg": "There are 38 possible tokens that can appear here:\n! # ( * @ Int NAME NUMBER STRING String Time ^ after all always before disj eventually fun historically iden int let lone no none once one pred seq set some sum this univ { } ~", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-1-8 22:09:04"} {"_id": "9cECfjMPeTeuYDWDE", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all x : User | x.profile.source in Institution + x\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s: Source, u: User | ((source.s & u.profile)<:ids).~((source.s & u.profile)<:ids) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u: User| ((u.profile)<:ids).~(u.profile<:ids) in iden\n}", "derivationOf": "utFg7YEpdBzwbHX8e", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-19 08:38:29"} {"_id": "hgWke49hn3BnarwBd", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | (User<:visible).w in (User<:profile).w \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | Work.(u<:profile) in u.(Work<:source) + Institution.(Work<:source) \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "4iGAxRvHZgbvfChsL", "msg": "The join operation here always yields an empty set.\nLeft type = {this/Work}\nRight type = {this/User->this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-18 20:08:22"} {"_id": "rL7Q7stPv8iohSXGF", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u: User | u.visible in u.profile \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u: User, w: u.profile | w.source = u or w.source in Institution\n \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall u: User, w1, w2: u.profile | all i: w1.ids | i not in w2.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "zJHAprk9Mo7BfsYkt", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-8 22:08:42"} {"_id": "eRtjGQZd3P3fvq6Go", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile \n}\n\n\npred Inv2 { \n\tall u:User ,i:Institution | u.profile.source = u || u.profile.source = i\n}\n\n\npred Inv3 { \n\tall u:User, w:Work, w1:Work | w.source = w1.source && w1 in u.profile && w in u.profile implies w.ids != w1.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n User.visible != User.visible\n}", "derivationOf": "CFuuqpMufLNLn95fp", "msg": "== is redundant, because the left and right expressions always have the same value.\nLeft type = {this/Work}\nRight type = {this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-21 15:02:11"} {"_id": "aph6PpWZsepH4xaAt", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\t\tall w: Work | w in User.visible implies w in User.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "DjKrTrakKH9hmMCQ7", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:00:48"} {"_id": "qKrWQrPpDBSS5aFTQ", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s: Source, u: User| ((source.s & u.profile)<:ids).~((source.s & u.profile)<:ids) in iden\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\t\n \tall w : Work | visible.w in User and ids.~ids in iden\n}", "derivationOf": "kjcEZjug53rmfZzwH", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 23:00:41"} {"_id": "LmiQWKDJab4oF75hg", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | (u.profile + u.visible).source in (u + Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t~(profile.ids).(profile.ids) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "jDXQkiJQiCh3dL26y", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-14 10:31:20"} {"_id": "4wdHo8JMcn5bTzzDW", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tvisible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User | (u.profile).source in (u+Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n profile.ids in User -> lone Id\n}", "derivationOf": "DqWFoHNxpdiZFsT3e", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 14:31:55"} {"_id": "s9jrMSbL7KhWKcGZs", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible = (visible & profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-12 11:04:42"} {"_id": "TX7Cif3GZZkkuXEKZ", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\t\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \tall w:Work, w1:Work | (w in User.profile && w1 in User.profile) implies no (w.ids = w1.ids)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\n}", "derivationOf": "MvdCfoMfLAiRP8gA5", "msg": "This expression failed to be typechecked line 37, column 76, filename=/tmp/alloy_heredoc15254929816886770529.als", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-1-8 22:22:32"} {"_id": "yCoLMqcEt8e8o5TLE", "cmd_i": 3, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\nall w1, w2 : Work | all u : User | w1 != w2 and (w1 + w2) in u.profile and (w1.source = w2.source) implies no w1.ids & w2.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\nall w1, w2 : Work | all u : User | w1 = w2 and (w1 + w2) in u.profile implies (w1 in u.visible iff no w2 in u.visible)\n}", "derivationOf": "2mocXDGuRdBqK9Kcs", "msg": "This must be a set or relation.\nInstead, it has the following possible type(s):\n{PrimitiveBoolean}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-5-7 12:56:50"} {"_id": "6u47w3zCJnykLS8AQ", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all x : User | x.profile.source in Institution + x\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s: Source, u: User | ((source.s & u.profile)<:ids).~((source.s & u.profile)<:ids) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u: User | (u.visible<:ids).~(u.visible<:ids) in iden\n}", "derivationOf": "BSd63Wr9F8zMSjsAQ", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-19 08:54:52"} {"_id": "maTLDedxxZvhkBdce", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | (User<:visible).w in (User<:profile).w \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall x, y : Work | x<:ids != y<:ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "HE9hxZFKGic2QKrv9", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-18 20:15:02"} {"_id": "HDAENFk5sYytNa4pE", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w: Work | visible.w in profile.w\n}\n \n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u: User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s1, s2: Source| all u: User | s1 = s2 and u.profile.source = s1 or u.profile.source = s2 implies one u.profile.ids \n \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n one User.visible.ids\n}", "derivationOf": "qAY58WgDuXqKrg8FR", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 16:33:34"} {"_id": "KYXqsiL8bqBy9nexy", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | visible.w in profile.w\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\t profile.User = profile.User.source + profile.Institution.source\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "LgBsjmhvix6keJqB5", "msg": "The join operation here always yields an empty set.\nLeft type = {this/User->this/Work}\nRight type = {this/User}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 14:38:40"} {"_id": "bxRbJE9PPLdkwCqCg", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n}\n \n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u: User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "eevZRjEAEMgyA2P8K", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-12 11:18:49"} {"_id": "AGu9bkpvAz77W26pZ", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile \n}\n\n\npred Inv2 { \n\tall u:User ,i:Institution | u.profile.source = u || u.profile.source = i\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall u:User, w:Work, w1:Work | w1 in u.profile && w in u.profile implies w.ids != w1.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JGYztJfxsdXSiPTZA", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-21 14:57:04"} {"_id": "8LtdH74Yvfjer46Te", "cmd_i": 3, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all w:Work,u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all w:Work,u:User | w in u.profile implies (u in w.source or w.source in Institution) \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all w:Work | one w in Source.visible\n}", "derivationOf": "p2BYXpLf8D4bKcrXu", "msg": "This must be a set or relation.\nInstead, it has the following possible type(s):\n{PrimitiveBoolean}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-19 09:20:15"} {"_id": "c4NRiD6KMSoGF5gAR", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all x : User | x.profile.source in Institution + x\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n lone ids.Id\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "Bsww7g9sCdXJ9sKT2", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:18:23"} {"_id": "v4nHNB8MgMvtobqJM", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible = (visible & profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | ((u.profile).source) in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User, w : Work | one (u.profile.w.id)\n}", "derivationOf": "ZbT5Mpez3SSiiQGAc", "msg": "This cannot be a legal relational join where\nleft hand side is u . (this/User <: profile) (type = {this/Work})\nright hand side is w (type = {this/Work})", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:49:15"} {"_id": "i92e2vXrnkJvmP7zD", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w1,w2:Work | (w1 in u.visible and w2 in u.visible) implies no (w1.ids & w2.ids)\n}", "derivationOf": "ejmauvuoAkHygTvSL", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-9 01:22:31"} {"_id": "C9fhCnFtvCHeayS3L", "cmd_i": 0, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all w:Work | visible.w = some w.source\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "stFfzBwP8Cs2YPTrf", "msg": "There are 29 possible tokens that can appear here:\n# ( * @ Int NAME NUMBER STRING String Time ^ all disj fun iden int let lone no none one pred seq some sum this univ { ~", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:06:55"} {"_id": "gcyqGPQe35a5LNq7y", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tvisible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User | (u.profile).source in (u+Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s:Source,u:User | lone ((u.profile)&(source.s))\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n profile.ids in User -> lone Id\n}", "derivationOf": "9sRKu4k8dLEZ3qcj5", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 14:10:16"} {"_id": "qdwphqwNJpn9saxYm", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User | all w1, w2 : Work | (w1 != w2 and (w1 + w2) in u.visible) implies (no w1.ids & w2.ids or w1.source != w2.source)\n}", "derivationOf": "f2eRuSgoNNDgJsnc6", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-11-3 20:31:33"} {"_id": "7SnveMrwuSnN2umse", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all x : User | x.profile.source in Institution + x\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n ids.~ids in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "seWSxevA39sFnimuE", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 22:17:57"} {"_id": "4v3YtycPTcBSwYpnd", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User | all w1, w2 : Work | (w1 + w2) in u.visible implies w1 != w2\n}", "derivationOf": "ZYcsYugEwvGyXEoss", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-11-3 20:26:31"} {"_id": "8vo2Hsdifx9K3Mvug", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { \n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n\tall u:User | all w:(u.profile) | (w.source) in (u + Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall w:(User.profile) | lone w.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "3DSfRJvQLQoDZNb5M", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-9 04:04:10"} {"_id": "CXfXfq6S292tRfAZw", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible = (visible & profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | (u.profile).source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all w1, w2 : Work, u : User {\n (w1 != w2 and ((w1 + w2) in u.profile) and w1.source = w2.source) implies no (w1.ids & w2.ids)\n }\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User, w1, w2 : Work | w1 != w2 and (w1 + w2) in u.visible implies (w1.source != w2.source and w1.ids != w2.ids)\n}", "derivationOf": "Sab2KuDpsTnvKnqwq", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-23 04:42:55"} {"_id": "bMpHhDZYQaMqK7spC", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | (User<:visible).w in (User<:profile).w \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | (u<:profile).Work in (Work<:source).u + (Work<:source).Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t~ids.ids in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "AhcnLTLcsm5dLiC9Y", "msg": "Subset operator is redundant, because the left and right subexpressions are always disjoint.\nLeft type = {this/User}\nRight type = {this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-18 20:12:01"} {"_id": "KGNmwNTag96xpi5rw", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | (User<:visible).w in (User<:profile).w \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\tall u : User | some w1, w2 : Work | (some (u<:visible).w1 & (u<:visible).w2) implies w1 = w2\n}", "derivationOf": "iAtFeatpWL5wPRxKr", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-18 20:22:20"} {"_id": "J3aKCuATWKSi4Q4dN", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User | u.profile.source in u+Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all w1,w2:Work, u:User | w1 in u.visible and w2 in u.visible implies w1=w2\n}", "derivationOf": "QBYpyGM9Gv4CPhzbb", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-19 09:00:07"} {"_id": "MQSnpCp3PLxd97S4D", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | visible.w in profile.w\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in Institution + u\n}\n\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tlet aux = {u, User, w : Work, s : Source | u -> w in profile and w -> s in source} | all s : Source \n \t\t| all disj [u1, w1], [u2, w2] : aux.s | no w1.ids & w2.ids \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "3cHcKWxE5ou2rzEfF", "msg": "The \"all x\" construct is no longer supported. If you know the range of possible values of x, consider rewriting it as \"x == set_of_all_possible_values\".", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-18 17:17:45"} {"_id": "mCdDGZBJD2fEcpk9u", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \n all w1, w2:Work, u:User, i:Id | ((w1 in u.profile and w2 in u.profile) and (w1.source = w2.source)) implies (w1.i != w2.i)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "Kgffr8fT7tKSG4Fco", "msg": "This cannot be a legal relational join where\nleft hand side is w1 (type = {this/Work})\nright hand side is i (type = {this/Id})", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-23 04:39:04"} {"_id": "2QtTcM5oSPdnP7JAr", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tvisible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User | (u.profile).source in (u+Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "E57NPKB4LGkEFvbj3", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-12 10:58:29"} {"_id": "JBqitapMfMKjqye9s", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s: Source, u: User| ((source.s & u.profile)<:ids).~((source.s & u.profile)<:ids) in iden\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\t\n \tall w : Work, u : User | ~(visible.((u.profile)<:ids)).(visible.((u.profile)<:ids)) in iden\n}", "derivationOf": "KY47FPixT4pYhhjih", "msg": "This variable is unused.", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 22:52:08"} {"_id": "GooAv5DhMo7L2SmpQ", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | all w : u.profile | w.source in u or w.source in Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "E4uAciB5taJKY9fXm", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-12 11:13:20"} {"_id": "GREbt72oYHpZ4f6PB", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w1,w2:Work, i:Id | w1 = w2 implies (w1 in u.visible or w2 in u.visible)\n}", "derivationOf": "72N4uXhb2TpSMG8D8", "msg": "This variable is unused.", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-9 01:35:16"} {"_id": "GSbRMNKfXfiLie4ij", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | (User<:visible).w in (User<:profile).w \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | (u<:profile).Work in (Work<:source).u + (Work<:source).Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "zPRtLPGr5S4oMJ4mq", "msg": "Subset operator is redundant, because the left and right subexpressions are always disjoint.\nLeft type = {this/User}\nRight type = {this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-18 20:09:09"} {"_id": "vyFuq3n6wAH6PXTFE", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | (User<:visible).w in (User<:profile).w \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | (u<:profile).Work in u.(Work<:source) + Institution.(Work<:source) \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "hgWke49hn3BnarwBd", "msg": "The join operation here always yields an empty set.\nLeft type = {this/User}\nRight type = {this/Work->this/Source}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-18 20:08:31"} {"_id": "vLx5ZwxPXEDQkHwXG", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all w:Work,u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all w:Work,u:User | w in u.profile implies (u in w.source or w.source in Institution) \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "qnzCYEWFyEf5A7ZYL", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-19 09:16:17"} {"_id": "qpBEtnRDYuE56QbAX", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n\tall u:User, all w:(u.profile) | (w.source) in (u + Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "t2y65BA77FYBNA9zX", "msg": "There are 8 possible tokens that can appear here:\nNAME disj exh part private seq this var", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-1-9 03:52:58"} {"_id": "6ttxt6rcM5MMc3Rgd", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \tall w1, w2:Work, u:User | ((w1 in u.profile and w2 in u.profile) and (w1.*ids = w2.*ids) and (w1.source = w2.source)) implies w1=w2\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "7GiesXJkWAsAfiGqN", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-9 00:39:20"} {"_id": "8wDonbyyqGTLgEAzD", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n \tall w:Work | visible.w in profile.w\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\t \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "ncqSib5jnGdcynXMK", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-12 11:11:05"} {"_id": "ubnDtvqbN2aNRfgAE", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s: Source, u: User| ((source.s & u.profile)<:ids).~((source.s & u.profile)<:ids) in iden\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\t~((visible:>(User.profile)).ids).((visible:>(User.profile)).ids) in iden\n}", "derivationOf": "teM7LEgo2x3GwLx6z", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 22:39:40"} {"_id": "8nGvxsvMvjjMNbqDS", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall u : User | ~allIds[u].allIds[u] in iden\n}\n\nfun allIds[u : User] : one User -> set Id {\n\tprofile.Work.ids\n}\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "gyfha3MJLnBFpKYPx", "msg": "After the some/lone/one multiplicity symbol, this expression must be a unary set.\nInstead, its possible type(s) are:\n{this/User->this/Id}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2019-11-3 20:20:11"} {"_id": "tD9cSz4eAYSR8WuRP", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tvisible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User | (u.profile).source in (u+Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s:Source,u:User | lone ((u.profile)&(source.s))\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n profile.ids in User -> lone Id\n}", "derivationOf": "gcyqGPQe35a5LNq7y", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-12 14:28:03"} {"_id": "wuvMqyMpqRu297Wwq", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tvisible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User | (u.profile).source in (u+Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s:Source,u:User | lone ((u.profile) & (source.s)).ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n ~(visible.ids) in Id -> lone User and source in Work -> lone Source \n}", "derivationOf": "bjACroB39sXJSaY3k", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 14:55:17"} {"_id": "Z2FM37iTxW9n6XD4r", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tvisible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User | (u.profile).source in (u+Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s:Source,u:User | lone ((u.profile)&(source.s))\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all id:Id,u:User | lone (u.visible.ids & id)\n}", "derivationOf": "ETakvRCHDh6ZWkMiu", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 14:03:43"} {"_id": "4iGAxRvHZgbvfChsL", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | (User<:visible).w in (User<:profile).w \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | Work.(u<:profile) in u.(Work<:source) + (Work<:source).Institution \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "thSvihsEtYp25kjRj", "msg": "The join operation here always yields an empty set.\nLeft type = {this/Work}\nRight type = {this/User->this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-18 20:08:10"} {"_id": "FYRrFqi8QZEJrn9SY", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 12:36:03"} {"_id": "cx44ybuLEhwyLBQNR", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible = (visible & profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | (u.profile).source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all w1, w2 : Work, u : User {\n (w1 != w2 and ((w1 + w2) in u.profile) and w1.source = w2.source) implies no (w1.ids & w2.ids)\n }\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w:Work | w in u.profile implies lone (u.visible & w)\n}", "derivationOf": "dPwdAQfpdbpKJxWKy", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-23 04:42:18"} {"_id": "okon2JEgqBnEq35FH", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n \tall u:User | u.visible in u.profile\n \tall w:Work | visible.w in profile.w\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\t all w:Work | source.w = w.profile + w.Institution \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "bJ2tatvDF9q6ehbru", "msg": "This cannot be a legal relational join where\nleft hand side is w (type = {this/Work})\nright hand side is this/Institution (type = {this/Institution})", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:18:30"} {"_id": "AZH33rQ9QHzHtaDF7", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u: User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u: User | all work : u.profile | work.source in (u + Institution)\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "WrZYLWP2n4P5ddAMM", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-9-21 14:56:00"} {"_id": "Bsww7g9sCdXJ9sKT2", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all x : User | x.profile.source in Institution + x\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all i : Id | lone ids.Id\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "TZAxQg7cHTaRCRc2w", "msg": "This variable is unused.", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:18:13"} {"_id": "3Y3AtJz969EouZkGj", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | (User<:visible).w in (User<:profile).w \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | Work.(u<:profile) in (Work<:source).u + (Work<:source).Institution \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "r5qMxvq68J7b2aMnd", "msg": "The join operation here always yields an empty set.\nLeft type = {this/Work}\nRight type = {this/User->this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-18 20:06:51"} {"_id": "gP23Grix7d5szBZe7", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all x : User | x.profile.source in Institution + x\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s: Source, u: User| ((source.s & u.profile)<:ids).~((source.s & u.profile)<:ids) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "4T6NMmmLgz2CE8Z5Y", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-18 22:25:35"} {"_id": "XTKupHCLAdZe3eDgr", "cmd_i": 0, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\n\n\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tprofile.source and source.visible implies User.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\nids-profile\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\n}", "derivationOf": "xBdw2KiYCE55DNicr", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/User->this/Source}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:14:45"} {"_id": "E5cN6bDiZ7ZscaoJT", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tvisible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-12 11:11:17"} {"_id": "WPWdTbm9Rn5Nk65hN", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n (profile.ids).~(profile.ids) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\t~(visible.ids).(visible.ids) in iden\n}", "derivationOf": "g8KtGZyoGqtixobpM", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 21:56:38"} {"_id": "gyfha3MJLnBFpKYPx", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall u : User | ~allIds[u].allIds[u] in iden\n}\n\nfun allIds[u : User] : one User -> set Id {\n\tu <: profile.Work.ids\n}\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "WFz3R4QLmwhRLuQpZ", "msg": "After the some/lone/one multiplicity symbol, this expression must be a unary set.\nInstead, its possible type(s) are:\n{this/User->this/Id}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2019-11-3 20:19:31"} {"_id": "5DNEWFBSBoHL45fvy", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-11-29 15:06:00"} {"_id": "Q6KcX9WQZakhGnekc", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User, w:Work, i:Institution | w in u.profile implies (u in w.source or i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\n}", "derivationOf": "xkJ5aaMkuXungtJeb", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-8 19:49:13"} {"_id": "d2tm2FF7HStrjdbcS", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\t\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | some w : Work | u->w in profile implies some ((w<:source).Institution or (w<:source).User)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "HtFZEHunffMQecJqd", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2019-10-23 08:35:27"} {"_id": "bvtwMbxfm6eqW2PE5", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n}\n \n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u: User | u.profile.source in Institution or u.profile.source in u\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "5At64gkJhospgbgTL", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:14:36"} {"_id": "34fqKAY7bBQ35wDJX", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w1,w2:Work | ((w1.ids=w2.ids) and (w1 in u.visible)) implies w2 not in u.visible\n}", "derivationOf": "4a79XMCruX4CfPvjE", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-9 01:18:39"} {"_id": "8sveZNLtb5vzbXtp9", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w1,w2:Work | (w1=w2 and w1 in u.profile and w2 in u.profile) implies (w1 in u.visible or w2 in u.visible)\n}", "derivationOf": "K2urh2uxa386ASML9", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-9 01:38:28"} {"_id": "8tgiJap4DzpFQ26TL", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w1,w2:Work | (w1=w2) implies (w1 not in u.visible or w2 not in u.visible) \n}", "derivationOf": "zjvn7shMuKndPeJXi", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-9 01:41:47"} {"_id": "ujdqduACiz8GBeHiE", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n \tall w:Work, u:User | w in u.visible implies w in u.profile \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-1-21 18:49:37"} {"_id": "KK8pKeWndTERaxQoC", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tvisible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User | (u.profile).source in (u+Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s:Source,u:User | ((u.profile) & (source.s)).ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n visible in User -> lone Work\n}", "derivationOf": "HjWmPFLoi5XgJZgrG", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/Id}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 15:11:53"} {"_id": "5ygJ6HgCe9y8DscDm", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w1:Work | w1 in u.visible implies lone (u.visible.ids & w1.ids)\n}", "derivationOf": "ZtQr57i6de2KKhdDp", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-9 01:07:02"} {"_id": "DeMMa4sacRcr7hsQs", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall u : User | ~allIds[u].allIds[u] in iden\n}\n\nfun allIds[u : User] : set Id {\n\tu.profile.Work.ids\n}\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "oHb5JjbsyhmKAfDBs", "msg": "Name cannot be resolved; possible incorrect function/predicate call; perhaps you used ( ) when you should have used [ ]\n\nThis cannot be a correct call to fun this/allIds.\nThe parameters are\n u: {this/User}\nso the arguments cannot be empty.", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2019-11-3 20:20:28"} {"_id": "k6a6jHQA24uqE3z6g", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | (User<:visible).w in (User<:profile).w \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | some (u<:profile).Work implies some (Work<:source).u & (Work<:source).Institution \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "q7Df5hhdSgcQ6bfg4", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-18 20:01:15"} {"_id": "5dt3iBJXBRcm5tDpc", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | visible.w in profile.w\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tprofile.User in profile.User + profile.Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "DzpXbkYKDq6A7HgJQ", "msg": "The join operation here always yields an empty set.\nLeft type = {this/User->this/Work}\nRight type = {this/User}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 14:49:35"} {"_id": "s7nLfRZBPfKkpg5aX", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s: Source, u: User| ((source.s & u.profile)<:ids).~((source.s & u.profile)<:ids) in iden\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\t~(visible.ids).(visible.ids) in iden\n}", "derivationOf": "NjrFfxN4PNyfZXJiP", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 22:28:23"} {"_id": "XYETJvpvtdjwzebWS", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all w1, w2 : Work, u : User {\n (w1 != w2 and ((w1 + w2) in u.profile) and w1.source = w2.source) implies no (w1.ids & w2.ids)\n }\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "NhGTaKJX6nwERXfdC", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-23 04:41:10"} {"_id": "EAaoMHtkN82nhpqBx", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w: Work | visible.w in profile.w\n}\n \n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u: User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s1, s2: Source | s1 = s2 implies s1.profile.ids != s2.profile.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "cYAGYiLpK4rhirxPd", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 16:21:27"} {"_id": "FwqG5XFRE2QXhgvAv", "cmd_i": 3, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible = (visible & profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | (u.profile).source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all w1, w2 : Work, u : User {\n (w1 != w2 and ((w1 + w2) in u.profile) and w1.source = w2.source) implies no (w1.ids & w2.ids)\n }\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User, w : Work {\n (w in u.profile) implies one (one w.ids)\n }\n}", "derivationOf": "MFTFYqXoprJnmg2GM", "msg": "This expression failed to be typechecked line 45, column 30, filename=/tmp/alloy_heredoc110293787024068195.als", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-23 04:46:37"} {"_id": "Tm5RfKTLJkFRKDWkv", "cmd_i": 0, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tsome User.profile in User.visible\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "xfpoALZp9SSRLbfQo", "msg": "This must be a set or relation.\nInstead, it has the following possible type(s):\n{PrimitiveBoolean}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-1-8 12:14:42"} {"_id": "W47dwfYB99Rwn9CD8", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s: Source, u: User| ((source.s & u.profile)<:ids).~((source.s & u.profile)<:ids) in iden\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\t\n \tall w : Work | some u : User | visible.w in User and ~ids.ids in iden and ids.~ids in iden and u.visible in Work\n}", "derivationOf": "XFk6nR2Xmth3X8FJR", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 23:04:27"} {"_id": "cZREmF49tcjEwm4jr", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible = (visible & profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | (u.profile).source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all w1, w2 : Work, u : User {\n (w1 != w2 and ((w1 + w2) in u.profile) and w1.source = w2.source) implies no (w1.ids & w2.ids)\n }\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User, w : Work {\n (w in u.profile) implies ((one (w.ids.~ids & u.profile)) and (one (w.ids)))\n }\n}", "derivationOf": "hppS9wBwuFjehBcHE", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-23 04:48:12"} {"_id": "dKrNxZrdQxnGNcAcn", "cmd_i": 0, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\n\n\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tprofile.source and visible.Work implies User.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\nids-profile\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\n}", "derivationOf": "LAZDxnKYvKXQWYZjW", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/User->this/Source}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:12:11"} {"_id": "SizPpdAbpr8dZK3BD", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all w:Work | w in User.visible implies w in User.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-19 09:12:38"} {"_id": "eKRufXrKQs58ugFbu", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "wDNHXp7kRjKguLHAD", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-1-8 12:15:41"} {"_id": "H3D2FKKw2LRsqSuJB", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | visible.w in profile.w\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in Institution + u\n}\n\n\naux = {u, User, w : Work, s : Source | u -> w in profile and w -> s in source}\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "guopbs7HpR2EuJdaa", "msg": "There are 5 possible tokens that can appear here:\nenum fun let open pred", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-18 16:51:19"} {"_id": "qkQXjqoN5YmuzaAjk", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all x : User | x.profile.source + x.visible.source in Institution + x\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "eGGoCmswDnawyWSnw", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-12 11:02:09"} {"_id": "u83Rb76SCYQucjhzH", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User | all w:u.profile | w.source = u or w.source in Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall u:User | all w:u.profile, w1:u.profile | w.source in Institution and w1.source in Institution and w.source.Id != w1.source.Id\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "rf4rDHcxi83Ak7kRb", "msg": "This cannot be a legal relational join where\nleft hand side is w . (this/Work <: source) (type = {this/Source})\nright hand side is this/Id (type = {this/Id})", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-1-8 12:23:37"} {"_id": "tYLHguazu9GxYQ2HB", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w: Work | visible.w in profile.w\n}\n \n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u: User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s1, s2: Source | s1 = s2 implies s1.profile.Id no s2.profile.Id\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "yH6LLJ6CviTv9ZFrr", "msg": "This cannot be a legal relational join where\nleft hand side is s1 . (this/User <: profile) (type = {this/Work})\nright hand side is this/Id (type = {this/Id})", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-18 16:19:41"} {"_id": "K2urh2uxa386ASML9", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w1,w2:Work | w1=w2 implies (w1 in u.visible or w2 in u.visible)\n}", "derivationOf": "CLKaRQioLmrvPZZaw", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-9 01:37:21"} {"_id": "4Njy4Rfzi2RQNJ8WT", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w: Work | visible.w in profile.w\n}\n \n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u: User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s1, s2: Source | all w1, w2: Work| s1.profile.w1 and s2.profile.w2 and s1= s2 implies w1.ids not in w2.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "tpoXtYGz7qFxkNpuH", "msg": "This cannot be a legal relational join where\nleft hand side is s1 . (this/User <: profile) (type = {this/Work})\nright hand side is w1 (type = {this/Work})", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-18 16:16:34"} {"_id": "MmvZJS6J3sKJ2EK8b", "cmd_i": 3, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | (u.profile + u.visible).source in (u + Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n ids\n}", "derivationOf": "gFw26Lc85HhtQ39vw", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/Work->this/Id}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-14 10:50:30"} {"_id": "QqAPKkfEYFqbXcz9o", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | visible.w in profile.w\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\t\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all a,b:Work | visible.a = visible.b implies a.profile = b.profile \n}", "derivationOf": "fzsj27qqAAerR25xd", "msg": "The join operation here always yields an empty set.\nLeft type = {this/Work}\nRight type = {this/User->this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 14:43:18"} {"_id": "cER2CuvPKngtnnAp3", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tvisible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u: User | u.profile.source in (u + Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JuqqLdzAgtTnQ6x5B", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-12 11:05:21"} {"_id": "judPZjhEwwLAidN4i", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | (User<:visible).w in (User<:profile).w \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | (u<:profile).Work in (Work<:source).u + (Work<:source).Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tWork<:ids != Work<:ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "XReKsX6y4otkhufW5", "msg": "Subset operator is redundant, because the left and right subexpressions are always disjoint.\nLeft type = {this/User}\nRight type = {this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-18 20:13:45"} {"_id": "btrWBNhnfQZjjCs5d", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | (u.profile + u.visible).source in (u + Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User, id : u.profile.ids | #(id & u.visible.ids) < 2\n}", "derivationOf": "nSAm2Xi8toKM4E9AY", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-14 10:58:25"} {"_id": "bL2C4CZ3Dg9u78s6b", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \tall w1, w2:Work, u:User | ((w1 in u.profile and w2 in u.profile) and (w1.ids = w2.ids)) implies w1=w2\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "3iXXdnZHSpi23SsFD", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-9 00:35:50"} {"_id": "4bcatrB9T86bKvXps", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall w:Work,u:User | u->w in profile implies one (w.source:>u + w.source:>Institution)\n}\n\n\npred Inv3 { \n \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "TYQyb2ptkaJWGgAEr", "original": "JC8Tij8o8GZb99gEJ", "theme": {"currentFramePosition": {}, "currentlyProjectedSigs": [], "generalSettings": {"currentLayout": "breadthfirst", "metaPrimSigs": [{"parent": null, "type": "univ"}, {"parent": "univ", "type": "Id"}, {"parent": "Source", "type": "Institution"}, {"parent": "univ", "type": "Int"}, {"parent": "univ", "type": "RejectedBy"}, {"parent": "RejectedBy", "type": "ShouldBeAccepted"}, {"parent": "RejectedBy", "type": "ShouldBeRejected"}, {"parent": "univ", "type": "Source"}, {"parent": "univ", "type": "String"}, {"parent": "null", "type": "univ"}, {"parent": "Source", "type": "User"}, {"parent": "univ", "type": "Work"}, {"parent": "Int", "type": "seq/Int"}, {"parent": "univ", "type": "Id"}, {"parent": "Source", "type": "Institution"}, {"parent": "univ", "type": "Int"}, {"parent": "univ", "type": "RejectedBy"}, {"parent": "RejectedBy", "type": "ShouldBeAccepted"}, {"parent": "RejectedBy", "type": "ShouldBeRejected"}, {"parent": "univ", "type": "Source"}, {"parent": "univ", "type": "String"}, {"parent": "null", "type": "univ"}, {"parent": "Source", "type": "User"}, {"parent": "univ", "type": "Work"}, {"parent": "Int", "type": "seq/Int"}], "metaSubsetSigs": []}, "nodePositions": {"ShouldBeRejected": {"x": 146.74285016741067, "y": 199.13333129882812}, "User0": {"x": 880.4571010044643, "y": 199.13333129882812}, "User1": {"x": 733.7142508370536, "y": 199.13333129882812}, "Work0": {"x": 440.2285505022321, "y": 199.13333129882812}, "Work1": {"x": 586.9714006696429, "y": 199.13333129882812}, "Work2": {"x": 293.48570033482144, "y": 199.13333129882812}}, "relationSettings": {"edgeColors": [{"color": "#0074D9", "relation": "ids"}, {"color": "#0074D9", "relation": "profile"}, {"color": "#0074D9", "relation": "source"}, {"color": "#0074D9", "relation": "visible"}, {"color": "#0074D9", "relation": "ShouldBeAccepted"}], "edgeStyles": [{"edgeStyle": "solid", "relation": "ids"}, {"edgeStyle": "solid", "relation": "profile"}, {"edgeStyle": "solid", "relation": "source"}, {"edgeStyle": "solid", "relation": "visible"}], "showAsArcs": [{"relation": "general", "showAsArcs": true}, {"relation": "ids", "showAsArcs": false}, {"relation": "profile", "showAsArcs": true}, {"relation": "source", "showAsArcs": true}, {"relation": "visible", "showAsArcs": true}, {"relation": "ShouldBeRejected", "showAsArcs": true}, {"relation": "ShouldBeAccepted", "showAsArcs": true}, {"relation": "Id", "showAsArcs": true}, {"relation": "Work", "showAsArcs": true}, {"relation": "Institution", "showAsArcs": true}], "showAsAttributes": [{"relation": "visible", "showAsAttributes": false}, {"relation": "profile", "showAsAttributes": false}, {"relation": "ids", "showAsAttributes": true}, {"relation": "source", "showAsAttributes": false}]}, "sigSettings": {"nodeBorders": [{"border": "solid", "type": "univ"}, {"border": "inherit", "type": "Id"}, {"border": "inherit", "type": "Int"}, {"border": "inherit", "type": "User"}, {"border": "inherit", "type": "Source"}, {"border": "inherit", "type": "Work"}, {"border": "inherit", "type": "ShouldBeRejected"}, {"border": "inherit", "type": "RejectedBy"}, {"border": "inherit", "type": "seq/Int"}, {"border": "inherit", "type": "general"}, {"border": "inherit", "type": "Institution"}, {"border": "inherit", "type": "ShouldBeAccepted"}, {"border": "inherit", "type": "ids"}], "nodeColors": [{"color": "#2ECC40", "type": "univ"}, {"color": "inherit", "type": "Id"}, {"color": "inherit", "type": "Int"}, {"color": "inherit", "type": "User"}, {"color": "inherit", "type": "Source"}, {"color": "#39CCCC", "type": "Work"}, {"color": "#FF4136", "type": "ShouldBeRejected"}, {"color": "inherit", "type": "RejectedBy"}, {"color": "inherit", "type": "seq/Int"}, {"color": "inherit", "type": "general"}, {"color": "#FFDC00", "type": "Institution"}, {"color": "#FF4136", "type": "ShouldBeAccepted"}, {"color": "inherit", "type": "ids"}], "nodeShapes": [{"shape": "ellipse", "type": "univ"}, {"shape": "inherit", "type": "Id"}, {"shape": "inherit", "type": "Int"}, {"shape": "inherit", "type": "User"}, {"shape": "inherit", "type": "Source"}, {"shape": "roundrectangle", "type": "Work"}, {"shape": "octagon", "type": "ShouldBeRejected"}, {"shape": "inherit", "type": "RejectedBy"}, {"shape": "inherit", "type": "seq/Int"}, {"shape": "inherit", "type": "general"}, {"shape": "inherit", "type": "Institution"}, {"shape": "octagon", "type": "ShouldBeAccepted"}, {"shape": "inherit", "type": "ids"}], "nodeVisibility": [{"type": "univ", "visibility": false}, {"type": "Int", "visibility": true}, {"type": "general", "visibility": false}, {"type": "Id", "visibility": true}, {"type": "User", "visibility": false}, {"type": "Work", "visibility": false}, {"type": "ShouldBeRejected", "visibility": false}, {"type": "Institution", "visibility": false}, {"type": "ShouldBeAccepted", "visibility": false}, {"type": "ids", "visibility": false}]}}, "time": "2020-11-19 11:07:45"} {"_id": "atZC3LsZATMZYJjk8", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n (profile.ids).~(profile.ids) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\t~(visible.ids).(visible.ids) in iden\n}", "derivationOf": "H6iXLDNRH9xBhW8qm", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 22:16:23"} {"_id": "xBdw2KiYCE55DNicr", "cmd_i": 0, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\n\n\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tprofile.source and source.visible implies User.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\nids-profile\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\n}", "derivationOf": "dKrNxZrdQxnGNcAcn", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/User->this/Source}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:14:39"} {"_id": "e8DKPxxGhpjrbfnqD", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User, w : Work | u->w in visible and u->w in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall w : Work | w.source in Source\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "HgMPdAddsTD2uLEGY", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-11-2 23:35:55"} {"_id": "AKnhAzSRvNMeorp6Q", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | (User<:visible).w in (User<:profile).w \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall x, y : Work | no x.ids & y.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "KXaxN2NSxoSKcDPK9", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-18 20:15:37"} {"_id": "Xzqu4BPRXmuuEoqtT", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall u : User | ~allIds[u].allIds[u] in iden\n}\n\nfun allIds(u : User) : set Id {\n\tu.profile.Work.ids\n}\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "DeMMa4sacRcr7hsQs", "msg": "Name cannot be resolved; possible incorrect function/predicate call; perhaps you used ( ) when you should have used [ ]\n\nThis cannot be a correct call to fun this/allIds.\nThe parameters are\n u: {this/User}\nso the arguments cannot be empty.", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2019-11-3 20:20:41"} {"_id": "DeANMHnEK5xXqx7Mj", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w1,w2:Work | (w1=w2) and (w1 in u.visible) implies w2 not in u.visible\n}", "derivationOf": "2R3SRMahRi9xxDJw6", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-9 01:20:11"} {"_id": "jKsCEjD7yuuCPC2sB", "cmd_i": 3, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tvisible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User | (u.profile).source in (u+Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s:Source,u:User | all disj i1,i2 : ((u.profile) & (source.s)).ids | i1 != i2\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User | (u.visible.ids)\n}", "derivationOf": "6LC4twSy2Lc3u8RKk", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/Id}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 15:22:18"} {"_id": "6wWJMkypQoqRtkSzS", "cmd_i": 0, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all w:Work | User.visible:>w and User.profile:>w\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "WB2hD4eJKccRpBhRM", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-19 09:13:53"} {"_id": "nZDY56fE96QKF8e84", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n (profile.ids).~(profile.ids) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\t~(visible.source).(visible.source) in iden\n}", "derivationOf": "xwapHuF8hLsmnhGwZ", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 22:03:47"} {"_id": "FvFv6QLnpCDE6YBuY", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall w1, w2 : Work, u : User | w1 != w2 and (w1 + w2) in u.profile and (w1.source = w2.source) implies no w1.ids & w2.ids\n}\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\tall u : User, w1, w2 : Work | w1 != w2 and (w1 + w2) in u.profile implies (w1.source != w2.source) or (no w1.ids & w2.ids)\n}", "derivationOf": "PZ4LfbK8WzJz7WRTG", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-11-3 20:41:03"} {"_id": "CsP8CoQ2QPWN2ku79", "cmd_i": 3, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User | all w1, w2 : Work | (w1 != w2 and (w1 + w2) in u.visible) implies no w1.source != w2.source\n}", "derivationOf": "CHbREQMb2hKNwmDSP", "msg": "!= can be used only between 2 expressions of the same arity, or between 2 integer expressions.\nLeft type = {PrimitiveBoolean}\nRight type = {this/Source}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2019-11-3 20:30:14"} {"_id": "AuRk7yoHMTYrgf64s", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s:Source, u:User | (u.profile & source.s) <: ids in Work lone -> Id\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "28W9xMy7GJxxgoMhh", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-12 15:59:01"} {"_id": "LApxC2YW3yYHdfuWF", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User, w:(user.profile + user.visible) | w.source in Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "edG6a4geNcPHz2yJD", "msg": "The name \"user\" cannot be found.", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-1-9 03:41:38"} {"_id": "PrN5iKAuPvbHGnNoJ", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\t\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | some w : Work | u->w in profile implies some (w.source in Institution or w.source in User)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "7Mq9n9EZaSzkSZzvn", "msg": "This expression failed to be typechecked line 32, column 57, filename=/tmp/alloy_heredoc9674675822749484972.als", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2019-10-23 08:34:33"} {"_id": "RTLuMGfMmN9FY3TJF", "cmd_i": 0, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all u : User | all profile.(u.visible)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "iRZGQvv2s5gh9Et5o", "msg": "The \"all x\" construct is no longer supported. If you know the range of possible values of x, consider rewriting it as \"x == set_of_all_possible_values\".", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 10:51:13"} {"_id": "5eDRupoHg5kb5Lffz", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\nall w1, w2 : Work | all u : User | w1 != w2 and (w1 + w2) in u.profile and (w1.source = w2.source) implies no w1.ids & w2.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\nall w1, w2 : Work | all u : User | (w1.ids = w2.ids and (w1 + w2) in u.visible and (w1 + w2) in u.profile )implies w1.source = w2.source \n}", "derivationOf": "ywYzhdRtayLPgv9qW", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-5-7 13:09:48"} {"_id": "HP5v6BzzbXkwThwqG", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-19 08:49:27"} {"_id": "XzgGhykrcEvSB2wmx", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n User.profile in (source.Institution + source.User)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "FyYEGXonSAuWR8BXr", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 10:59:47"} {"_id": "omCtn762Mgi3kpcYF", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | visible.w in profile.w\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in Institution + u\n}\n\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tlet aux = {u, User, w : Work, s : Source | u -> w in profile and w -> s in source} | all s : Source | \n \t\tall disj u1, w1, (u2, w2) : aux.s | no w1.ids & w2.ids \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "6BDruxAbTFKWYg2Mj", "msg": "There are 1 possible tokens that can appear here:\n[", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-18 17:12:33"} {"_id": "JTixpPs4JTwNSooFi", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \tall w1, w2:Work, u:User | ((w1 in u.profile and w2 in u.profile) and (w1.source = w2.source)) implies no (w1.ids & w2.ids)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "4ck32jqWK7BmoCk3m", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-8 23:17:08"} {"_id": "wT3222749GAp4iQmf", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "rjcnMTiKmvPCWZEe3", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-12 10:57:41"} {"_id": "HLiaLAouxAZ6vfoSi", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User | u.profile implies (u.source in Institution) \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "DusGALJ2uDLcgh42D", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-19 09:58:02"} {"_id": "mMygFyLk7C7cunFyB", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w1,w2:Work | w1 = w2 implies (w1 in u.visible or w2 in u.visible)\n}", "derivationOf": "GREbt72oYHpZ4f6PB", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-9 01:35:25"} {"_id": "6AqenXqnHjAw2ZmyB", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tvisible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User | (u.profile).source in (u+Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s:Source,u:User | lone ((u.profile)&(source.s)).ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User | (u.visible.ids)\n}", "derivationOf": "raBxejj35B6xqpAff", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/Id}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 13:58:14"} {"_id": "8MLXbBNa6j6gS589n", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all u:User | u.visible=u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "hBHfcDa8bKYbkiQkP", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:13:50"} {"_id": "oNCxxSSrcFkpz6jaD", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall w1, w2 : Work | all u : User | w1 != w2 and (w1 + w2) in u.profile and (w1.source = w2.source) implies no w1.ids & w2.ids\n}\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n}", "derivationOf": "hk3XmKN4YFjL7k98x", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2019-11-3 20:37:05"} {"_id": "CbfnBz7D4iCKeBnRG", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User, w:Work, i:Institution | w in u.profile implies (u in w.source) | (i in w.source) \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "6ep8kY7EXsi82L536", "msg": "There are 38 possible tokens that can appear here:\n! # ( * @ Int NAME NUMBER STRING String Time ^ after all always before disj eventually fun historically iden int let lone no none once one pred seq set some sum this univ { } ~", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-1-8 19:18:57"} {"_id": "8HtCCupKaoxpFh59B", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all x : User | x.profile.source in Institution + x\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s: Source, u: User| ((source.s & u.profile)<:ids).~((source.s & u.profile)<:ids) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "EDMkLJtBkkHpHA2AC", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-18 22:25:16"} {"_id": "TYQyb2ptkaJWGgAEr", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall w:Work,u:User | u->w in profile implies one (w.source:>u + w.source:>Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "DSBbq6dzDD97xkHcA", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-19 11:02:20"} {"_id": "kzs3q4ShdwsEyhL8t", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n User.profile.~ids.ids in User.profile.iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "em4hX7gAkWzBbzAGT", "msg": "The join operation here always yields an empty set.\nLeft type = {this/Work}\nRight type = {this/Id->this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:10:21"} {"_id": "em4hX7gAkWzBbzAGT", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n ids.~ids in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "C7JoeYZ4cSPmRo4Hh", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:08:40"} {"_id": "fDzh6JfADS7ZwjCcC", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | visible.w in profile.w\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in Institution + u\n}\n\n\naux = u, User, w : Work, s : Source | u -> w in profile and w -> s in source\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "H3D2FKKw2LRsqSuJB", "msg": "There are 5 possible tokens that can appear here:\nenum fun let open pred", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-18 16:51:37"} {"_id": "upyt7xf3ErpRgLZXo", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\t\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "PYpbGQchPGFgDAWaR", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-1-8 23:03:29"} {"_id": "NMy6ynbSjjnpL5J36", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w1,w2:Work | (w1=w2) implies (w1 in u.visible or w2 in u.visible) \n}", "derivationOf": "64KJLyJLnY56qpTux", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-9 01:40:18"} {"_id": "iZrJfPJuBJzJpCi2Q", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n (profile.ids).~(profile.ids) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "t98aegXqgrKGXqzeh", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:11:45"} {"_id": "zJHAprk9Mo7BfsYkt", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u: User | u.visible in u.profile \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u: User, w: u.profile | w.source = u or w.source in Institution\n \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall u: User, w1, w2: u.profile, i: w1.ids | i not in w2.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "d2MJbgtP5hRo2Lodr", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-8 21:59:23"} {"_id": "k4YYE4aQjxgkPjXeu", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\t\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\tall u:User, w:Work | w in u.profile implies lone (u.visible & w)\n}", "derivationOf": "iW9Jp8RL68XqjHLNe", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-8 22:35:23"} {"_id": "Htp4mnqv8JFFjECkX", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n (profile.ids).~(profile.ids) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\t~(visible.ids).(visible.ids) in iden\n}", "derivationOf": "eLMDwcZeRBqv4WeWb", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 22:06:52"} {"_id": "XFk6nR2Xmth3X8FJR", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s: Source, u: User| ((source.s & u.profile)<:ids).~((source.s & u.profile)<:ids) in iden\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\t\n \tall w : Work | some u : User | visible.w in User and ~ids.ids in iden and ids.~ids in iden\n}", "derivationOf": "vk387maHdx9oQnqM6", "msg": "This variable is unused.", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 23:02:59"} {"_id": "9DNW6eNcNYTPKwx8D", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User , w:Work | (w in u.profile) implies (w.source = u || w.source = Institution) \n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "X69eLSn9GtKGve2Fz", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-22 10:46:23"} {"_id": "pN6Y5KBztYb53XnxL", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible = (visible & profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | (u.profile).source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all w1, w2 : Work, u : User {\n (w1 != w2 and ((w1 + w2) in u.profile) and w1.source = w2.source) implies no (w1.ids & w2.ids)\n }\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User, w : Work {\n w in u.profile implies lone (w.ids.~ids & u.profile)\n }\n}", "derivationOf": "upvANfve242Keeewn", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-23 04:45:11"} {"_id": "cizXDhJkwf6uk3Row", "cmd_i": 3, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\t\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w:Work | w in u.profile implies lone (w in u.visible)\n}", "derivationOf": "k4YYE4aQjxgkPjXeu", "msg": "This expression failed to be typechecked line 42, column 49, filename=/tmp/alloy_heredoc437058026572267696.als", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-1-8 22:39:52"} {"_id": "NGf9sNMpgT8uarQrG", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User | all w1, w2 : Work | (w1 != w2 and (w1 + w2) in u.visible) implies w1.source != w2.source\n}", "derivationOf": "CsP8CoQ2QPWN2ku79", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-11-3 20:30:20"} {"_id": "JKq3KGDTRZ7z8WHPk", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all x : User | x.profile.source in Institution + x\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all i : Id | lone ids.Id\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "msg": "This variable is unused.", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 21:46:16"} {"_id": "ZgxJuRGzxSve3qnsh", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all x : User | x.profile.source in Institution + x\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all w1 : Work, w2 : Work | some (w1.ids && w2.ids) implies w1 = w2\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "pFhSsmXqufZcAPDbg", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/Id}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:14:55"} {"_id": "zQC8nrbicBP9X8B3k", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\nall w1, w2 : Work | all u : User | w1 != w2 and (w1 + w2) in u.profile and (w1.source = w2.source) implies no w1.ids & w2.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\nall w1, w2 : Work | all u : User | (some (w1.ids & w2.ids)) and (w1 + w2) in u.profile implies not (w1 + w2) in u.visible\n}", "derivationOf": "PTLNwi42CK97TbBnS", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-5-7 13:22:31"} {"_id": "eEtGiGoHPbgacYcW9", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\t \tall u:User , w:Work |some i:Institution| (w in u.profile) implies (w.source = u || w.source = i) \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\n}", "derivationOf": "6h9WGpZd4yJ3Hc8dZ", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-8 22:08:21"} {"_id": "Q37WyoTfpfJHebzfP", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w: Work | visible.w in User.profile\n}\n \n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u: User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "MQiXGHDRwfj3Evvm8", "msg": "Subset operator is redundant, because the left and right subexpressions are always disjoint.\nLeft type = {this/User}\nRight type = {this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 21:46:48"} {"_id": "6YEf99jBnMxfWsQKB", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall w1, w2 : Work, u : User | w1 != w2 and (w1 + w2) in u.profile and (w1.source = w2.source) implies no w1.ids & w2.ids\n}\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\tall w1, w2 : Work | w1 != w2 and (w1 + w2) in User.visible implies (no w1.ids & w2.ids)\n}", "derivationOf": "Lj9BvPQQJDmtcBdBN", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-11-3 20:44:02"} {"_id": "xYNFbP2m5ujagcJw8", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tvisible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u: User | u.profile.source in (u + Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tUser.profile.source in Institution implies lone User.profile.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "sKgkRMWpj5cbX6qC6", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:17:21"} {"_id": "nGGorXzkopkXnTcGe", "cmd_i": 0, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all u : User | u.visible :> u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | (u.profile) = (source.u + source.Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "hEzrhvMzF3GtzvZJ5", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:02:36"} {"_id": "apzN6fSqDbeekRCn2", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "8iCgdcJg8oEzJiZXT", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-12 11:01:28"} {"_id": "u9wtjcCyQqKyp5X3x", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible = (visible & profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | ((u->profile)->source = u) or ((u->profile)->source = Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User, w : Work | one (u.profile.w.id)\n}", "derivationOf": "CYK4jWa6mxLzZ47Nv", "msg": "= can be used only between 2 expressions of the same arity, or between 2 integer expressions.\nLeft type = {this/User->this/User->this/Work->this/Work->this/Source}\nRight type = {this/User}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:45:30"} {"_id": "ipoWxMtLSBGwmLbSa", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall w:Work,u:User | some u.profile:>w implies (w.source:>u or w.source:>Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "mFue8e9EJ9RgxnaH5", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/User}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:16:57"} {"_id": "RAXH3WtvTbexkk8zK", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\t\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | some w : Work | u->w in profile implies some (w<:source).Institution or some (w<:source).User\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tlone Id in Work<:(User.profile)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "5HqNmAhqsEkFGAzu6", "msg": "This must be a set or relation.\nInstead, it has the following possible type(s):\n{PrimitiveBoolean}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2019-10-23 08:37:59"} {"_id": "oKsHW3sgfzdtwf9tC", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w: User.visible | w in profile.w\n\n}\n \n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u: User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "xLH8gPig9ejEjE4qH", "msg": "Subset operator is redundant, because the left and right subexpressions are always disjoint.\nLeft type = {this/Work}\nRight type = {this/User}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 21:44:13"} {"_id": "7REKe4833aLPFhA2b", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\nall w1, w2 : Work | all u : User | w1 != w2 and (w1 + w2) in u.profile and (w1.source = w2.source) implies no w1.ids & w2.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\nall w1, w2 : Work | all u : User | w1.source != w2.source and (w1 + w2) in u.visible and (w1 + w2) in u.profile implies no (w1.ids & w2.ids)\n}", "derivationOf": "uoqNKArgucbifLLvM", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-5-7 13:17:25"} {"_id": "pJva76RqT9da4fGSz", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile \n}\n\n\npred Inv2 { \n\tall u:User ,i:Institution | u.profile.source = u || u.profile.source = i\n}\n\n\npred Inv3 { \n\tall u:User, w:Work, w1:Work | w.source = w1.source && w1 in u.profile && w in u.profile implies w.ids != w1.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User , i:Id, i1:Id | i in u.visible.ids && i1 in u.visible.ids implies i != i1\n}", "derivationOf": "9aNZQSMrZ3bqTFdns", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-21 15:10:06"} {"_id": "n6Mek9WMuzB8a3DZJ", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all w:Work,u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all w:Work,u:User | w in u.profile implies (u in w.source or w.source in Institution) \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \n all id1:Id, w1,w2:Work | (w1 in Source.profile and w2 in Source.profile and id in w1.ids) implies id not in w2.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "8LtdH74Yvfjer46Te", "msg": "The name \"id\" cannot be found.", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-19 09:25:49"} {"_id": "DzpXbkYKDq6A7HgJQ", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | visible.w in profile.w\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall w : Work | source.w = profile.User + profile.Institution \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "XXz2mYMsHvDnFvE32", "msg": "The join operation here always yields an empty set.\nLeft type = {this/Work->this/Source}\nRight type = {this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 14:47:35"} {"_id": "WYu5bGKoMsSbjoZrm", "cmd_i": 0, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tsome User.visible in User.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "Tm5RfKTLJkFRKDWkv", "msg": "This must be a set or relation.\nInstead, it has the following possible type(s):\n{PrimitiveBoolean}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-1-8 12:15:06"} {"_id": "PwkaohabDECTd49Ch", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s:Source, u:User | all disj w1, w2 : (u.profile & source.s) | no w1.ids & w2.ids\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-12 15:57:34"} {"_id": "PTLNwi42CK97TbBnS", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\nall w1, w2 : Work | all u : User | w1 != w2 and (w1 + w2) in u.profile and (w1.source = w2.source) implies no w1.ids & w2.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\nall w1, w2 : Work | all u : User | some (w1.ids & w2.ids) and (w1 + w2) in u.profile implies not (w1 + w2) in u.visible\n}", "derivationOf": "ex6zngMw758CK4qeh", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-5-7 13:21:24"} {"_id": "Tg5gEN7bCWiubt3y6", "cmd_i": 0, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : USer, w : Work | u->w in visible and u->w in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "YMkjB5Kd5DgFTdjT8", "msg": "The name \"USer\" cannot be found.", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2019-11-2 23:29:22"} {"_id": "umaJZbpgnGGHafJkz", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\nall w1, w2 : Work | all u : User | w1 != w2 and (w1 + w2) in u.profile and (w1.source = w2.source) implies no w1.ids & w2.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\nall w1, w2 : Work | all u : User | w1 = w2 and (w1 + w2) in u.profile implies (w1 in u.visible iff not w2 in u.visible)\n}", "derivationOf": "yCoLMqcEt8e8o5TLE", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-5-7 12:57:03"} {"_id": "W46xrNFTKqJr8ejh6", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n ~visible.visible in iden\n}", "derivationOf": "yEW4xRSx2e2Wf5nZP", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 22:33:46"} {"_id": "zPRtLPGr5S4oMJ4mq", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | (User<:visible).w in (User<:profile).w \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | Work.(u<:profile) in (Work<:source).u + (Work<:source).Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "gxKMuX8o5bRNXMuPR", "msg": "The join operation here always yields an empty set.\nLeft type = {this/Work}\nRight type = {this/User->this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-18 20:09:01"} {"_id": "R34oGL8HxSJ5ZYJKw", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \tall w1, w2:Work, u:User | ((w1 in u.profile and w2 in u.profile) and (w1.ids = w2.ids) and (w1.source = w2.source)) implies w1=w2\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "6ttxt6rcM5MMc3Rgd", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-9 00:39:32"} {"_id": "X4PYHfdQEHrGTzRNP", "cmd_i": 3, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w1,w2:Work | (w1 in u.visible and w2 in u.visible) implies no (w1.ids & w2.ids)", "derivationOf": "q8NSdChfz9S6zmgkD", "msg": "There are 38 possible tokens that can appear here:\n! # ( * @ Int NAME NUMBER STRING String Time ^ after all always before disj eventually fun historically iden int let lone no none once one pred seq set some sum this univ { } ~", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-1-9 01:27:51"} {"_id": "HrLCgEZDqe5ysi6Q2", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u: User, w: Work | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-1-8 21:44:59"} {"_id": "tfhTC26EDPdNPcSbx", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w: Work | visible.w in profile.w\n}\n \n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u: User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\tall w: Work | some s: Source | profile.w in w.s implies one w.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "frXBc8bYhNS54vf5s", "msg": "This cannot be a legal relational join where\nleft hand side is w (type = {this/Work})\nright hand side is s (type = {this/Source})", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 21:57:42"} {"_id": "rT42pRwA6rzcoH5tL", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\n\n\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | (u.profile) in (source.u + source.Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\n}", "derivationOf": "9fPTqnQknpfjNPQ3D", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-12 11:20:40"} {"_id": "odMq47qmfb3AEkkhw", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all w:Work | w.source = visible.w\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "osTG26A8rTZz4SYpE", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:08:17"} {"_id": "4T6NMmmLgz2CE8Z5Y", "cmd_i": 2, "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all x : User | x.profile.source in Institution + x\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s: Source, u: User| ((source.s & u.profile).ids).~((source.s & u.profile).ids) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "8HtCCupKaoxpFh59B", "msg": "~ can be used only with a binary relation.\nInstead, its possible type(s) are:\n{this/Id}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-18 22:25:30"} {"_id": "SsWFNMriDgevEkePj", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w1,w2:Work, i:Id | (w1 in u.visible and w2 in u.visible) implies (w1->i != w2->i)\n}", "derivationOf": "tFbq74EfDvnNFKdnX", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-9 01:32:43"} {"_id": "yxuJhNfqwirRbyeYs", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall u : User, s : Source | u.profile & source.s \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "F4oRKjuvmoQusaJXm", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:15:57"} {"_id": "3WfEmsgQRFciMx2Ez", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w: Work | visible.w in profile.w\n}\n \n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u: User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s1, s2: Source| all u: User | s1 = s2 and u.profile.source = s1 or u.profile.source = s2 implies one u.profile.ids \n \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n one User.visible in User.profile\n}", "derivationOf": "cfgm6TfWmqbxP7gS4", "msg": "This must be a set or relation.\nInstead, it has the following possible type(s):\n{PrimitiveBoolean}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-18 16:29:17"} {"_id": "CFPRrd5YvcDYESgM4", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | (u.profile + u.visible).source in (u + Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall w : source.Source, disj w1,w2 : w.ids | w1 = w2\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "Mz4ekpLKxgWfj9gfT", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-14 10:35:24"} {"_id": "NfgvuzRRyqvzseyTN", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \tall w1, w2:Work, u:User | ((w1 in u.profile and w2 in u.profile) and (w1.ids = w2.ids) and (w1.source = w2.source)) implies (w1.ids & w2.ids)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "XPqT6TWoRBFjRQheM", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/Id}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-1-9 00:45:07"} {"_id": "P8KhRC6zjLEcdAQfH", "cmd_i": 0, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | (u.profile) in (source.u + source.Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all u : User | (u.profile)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "rDBrWNXdAtHoyBLQ4", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:14:18"} {"_id": "yH6LLJ6CviTv9ZFrr", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\n\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\n\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w: Work | visible.w in profile.w\n}\n \n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u: User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s1, s2: Source | s1 == s2 implies s1.profile.Id not in s2.profile.Id\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "nYHNF28o7XwJaoXXf", "msg": "There are 29 possible tokens that can appear here:\n# ( * @ Int NAME NUMBER STRING String Time ^ all disj fun iden int let lone no none one pred seq some sum this univ { ~", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-18 16:19:24"} {"_id": "WjKMxnjd586Hmogsu", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tvisible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User | (u.profile).source in (u+Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s:Source,u:User | lone ((u.profile) & (source.s)).ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n ~(visible.ids) in Id lone -> lone User\n}", "derivationOf": "ptypAaRZwkLzSSiWY", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 15:00:10"} {"_id": "cqm8xJvwrKqq2r5RD", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u :User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User | u.profile.source in (Institution+u)\n}\t\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "HvJeKCFjiSwCLeA5o", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-12 11:04:23"} {"_id": "iCX8NkDngsPaXTb9e", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible = (visible & profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User, w : Work | u.profile.w.source in (u + Insitution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "Jt6tctNyfrJjiHf3E", "msg": "This cannot be a legal relational join where\nleft hand side is u . (this/User <: profile) (type = {this/Work})\nright hand side is w (type = {this/Work})", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:08:31"} {"_id": "Z2DLMhk6NWEtmWTjP", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | (User<:visible).w in (User<:profile).w \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\tall u : User | some w : Work | some (u<:visible).w implies lone w\n}", "derivationOf": "84Jmro8FH5iwQDPAk", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-18 20:23:20"} {"_id": "ywYzhdRtayLPgv9qW", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\nall w1, w2 : Work | all u : User | w1 != w2 and (w1 + w2) in u.profile and (w1.source = w2.source) implies no w1.ids & w2.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\nall w1, w2 : Work | all u : User | w1.ids = w2.ids and (w1 + w2) in u.visible and (w1 + w2) in u.profile implies w1.source = w2.source \n}", "derivationOf": "kHpdn85yXmRiy2PrX", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-5-7 13:09:11"} {"_id": "Ppdcx8TfYZsx8CjJx", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile \n}\n\n\npred Inv2 { \n\tall u:User ,i:Institution | u.profile.source = u || u.profile.source = i\n}\n\n\npred Inv3 { \n\tall u:User, w:Work, w1:Work | w.source = w1.source && w1 in u.profile && w in u.profile implies w.ids != w1.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User , w:Work, w1:Work | (w in u.profile and w1 in u.profile and w in u.visible and w1 in u.visible) implies w != w1\n}", "derivationOf": "agCFMxrg4Pxo9ReGL", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-21 15:14:37"} {"_id": "rDBrWNXdAtHoyBLQ4", "cmd_i": 0, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n User.visible in User.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | (u.profile) in (source.u + source.Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all u : User | source.(u.profile)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "z7FWqSdeX3T4SfoWT", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{none}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:14:11"} {"_id": "dn2K5PbzCWFMLx45i", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \tall w1, w2:Work, u:User | ((w1 in u.profile and w2 in u.profile) and (w1.source = w2.source)) implies (w1.ids != w2.ids)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JTixpPs4JTwNSooFi", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-8 23:17:46"} {"_id": "dM2xEzZY3hBX8PAYH", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-14 10:18:39"} {"_id": "Pf25trucnz2XQzLkF", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all x : User | x.profile.source in Institution + x\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s: Source, u: User | ((source.s & u.profile)<:ids).~((source.s & u.profile)<:ids) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u: User | (u.visible<:ids).~(u.visible<:ids) in iden\n}", "derivationOf": "xYRShEtfz9D9ELvBx", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-19 10:02:58"} {"_id": "tEBNePhZGKZcAddfq", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | (u.profile) in (source.u + source.Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "P8KhRC6zjLEcdAQfH", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-12 11:14:25"} {"_id": "wmTcC2mFLeweSx5vR", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | some (User<:visible).w implies some w.(User<:profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "YFQKkgnxHzQyMDnuW", "msg": "The join operation here always yields an empty set.\nLeft type = {this/Work}\nRight type = {this/User->this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-18 19:50:23"} {"_id": "xqvvTtnrwgTkMJMWJ", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\t\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \tall u:User, w1, w2:Work | (w1 in u.visible and w2 in u.visible) implies w1.ids!=w2.ids\n}", "derivationOf": "XHdW9ogf2uoEfNJGR", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-8 19:27:18"} {"_id": "MrRbNG9a4pgc8E4ih", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s: Source, u: User| ((source.s & u.profile)<:ids).~((source.s & u.profile)<:ids) in iden\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\t\n \tall w : Work | visible.w in User\n}", "derivationOf": "JBqitapMfMKjqye9s", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 22:56:05"} {"_id": "84Jmro8FH5iwQDPAk", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w : Work | (User<:visible).w in (User<:profile).w \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\tall u : User | some w1, w2 : Work | (some (u<:visible).w1 and some (u<:visible).w2) implies w1 = w2\n}", "derivationOf": "KGNmwNTag96xpi5rw", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-18 20:22:25"} {"_id": "NMdvRiFXkBTmM7RkY", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall w:Work | (w in User.profile) && (User = w.source) \n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "MPPT2gG54DJXqRKvN", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-22 10:49:31"} {"_id": "zcdZ8SjzGLxmJRzQX", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\t all u:User, w:Work | some i:Institution | w in u.profile implies (u in w.source or i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-8 23:00:02"} {"_id": "Be9tfods3wXdGBwBY", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \tall w1, w2:Work, u:User, i:Id | ((w1 in u.profile and w2 in u.profile) and (w1.source = w2.source)) implies (w1.ids != w2.ids)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "AKdF2QFrkxvaWF6sX", "msg": "This variable is unused.", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-8 23:45:37"} {"_id": "uhmx3skse9D3D8XvY", "cmd_i": 3, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\n\n\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tWork.visible in source.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User, w1, w2 : Work | u.profile & visible.w1 & not visible.w2 implies w1 = w2\n}", "derivationOf": "yEo5AXuFv5QZFZLHa", "msg": "There are 28 possible tokens that can appear here:\n( * @ Int NAME NUMBER STRING String Time ^ all disj fun iden int let lone no none one pred seq some sum this univ { ~", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:03:12"} {"_id": "KkpiWfQJEnGi6C6QA", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n \tall w:Work, u:User | w in u.visible implies w in u.profile \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\t\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w:Work | w in u.profile implies lone (u.visible & w)\n}", "derivationOf": "DuZsLXyzw82JpirkE", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-21 18:56:33"} {"_id": "8k6nGGGAiQ5EJusdy", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all w:Work | w.visible = w.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "oPQaiqj3YZyZTQJvY", "msg": "The join operation here always yields an empty set.\nLeft type = {this/Work}\nRight type = {this/User->this/Work}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:10:00"} {"_id": "DDYSSpN5vYzHrReMi", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\t\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\tall u:User, w:Work | w in u.profile implies lone (u.visible & w)\n}", "derivationOf": "myrHBXNK8dFSZXgHY", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-8 22:29:02"} {"_id": "Yzj4LAeBrvsofmxKJ", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile \n}\n\n\npred Inv2 { \n\tall u:User ,i:Institution | u.profile.source = u || u.profile.source = i\n}\n\n\npred Inv3 { \n\tall u:User , s:Source| lone (u.profile.source & s).ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User , w:Work | w in u.profile implies (lone u.visible & w)\n}", "derivationOf": "eHPEX2mg9yqXNptu6", "msg": "The join operation here always yields an empty set.\nLeft type = {this/Source}\nRight type = {this/Work->this/Id}", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-21 21:40:45"} {"_id": "5DC8t6P8QQmBKvLws", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall w:Work,u:User | some u.profile:>w implies (w.source:>u or w.source:>Source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "ipoWxMtLSBGwmLbSa", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/User}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-12 11:18:15"} {"_id": "q8NSdChfz9S6zmgkD", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w1,w2:Work | (w1 in u.visible and w2 in u.visible) implies (no (w1.ids & w2.ids) and (w1.source = w2.source or w1.source != w2.source))\n}", "derivationOf": "SG6CCnX9odrCeKHXX", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-9 01:27:28"} {"_id": "uSP9kjmiYgRWs4ShK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall w:Work,u:User | w in u.profile implies (w.source:>u or w.source:>Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "ipeysduWeM3uqKxCq", "original": "JC8Tij8o8GZb99gEJ", "theme": {"currentFramePosition": {}, "currentlyProjectedSigs": [], "generalSettings": {"currentLayout": "breadthfirst", "metaPrimSigs": [{"parent": null, "type": "univ"}, {"parent": "univ", "type": "Id"}, {"parent": "Source", "type": "Institution"}, {"parent": "univ", "type": "Int"}, {"parent": "univ", "type": "RejectedBy"}, {"parent": "RejectedBy", "type": "ShouldBeAccepted"}, {"parent": "RejectedBy", "type": "ShouldBeRejected"}, {"parent": "univ", "type": "Source"}, {"parent": "univ", "type": "String"}, {"parent": "null", "type": "univ"}, {"parent": "Source", "type": "User"}, {"parent": "univ", "type": "Work"}, {"parent": "Int", "type": "seq/Int"}, {"parent": "univ", "type": "Id"}, {"parent": "Source", "type": "Institution"}, {"parent": "univ", "type": "Int"}, {"parent": "univ", "type": "RejectedBy"}, {"parent": "RejectedBy", "type": "ShouldBeAccepted"}, {"parent": "RejectedBy", "type": "ShouldBeRejected"}, {"parent": "univ", "type": "Source"}, {"parent": "univ", "type": "String"}, {"parent": "null", "type": "univ"}, {"parent": "Source", "type": "User"}, {"parent": "univ", "type": "Work"}, {"parent": "Int", "type": "seq/Int"}], "metaSubsetSigs": []}, "nodePositions": {"ShouldBeRejected": {"x": 342.39998372395837, "y": 79.65333251953125}, "User0": {"x": 684.7999674479166, "y": 79.65333251953125}, "User1": {"x": 513.5999755859375, "y": 238.95999755859373}, "Work0": {"x": 256.79998779296875, "y": 318.613330078125}, "Work1": {"x": 513.5999755859375, "y": 318.613330078125}, "Work2": {"x": 770.3999633789062, "y": 318.613330078125}}, "relationSettings": {"edgeColors": [{"color": "#0074D9", "relation": "ids"}, {"color": "#0074D9", "relation": "profile"}, {"color": "#0074D9", "relation": "source"}, {"color": "#0074D9", "relation": "visible"}, {"color": "#0074D9", "relation": "ShouldBeAccepted"}], "edgeStyles": [{"edgeStyle": "solid", "relation": "ids"}, {"edgeStyle": "solid", "relation": "profile"}, {"edgeStyle": "solid", "relation": "source"}, {"edgeStyle": "solid", "relation": "visible"}], "showAsArcs": [{"relation": "general", "showAsArcs": true}, {"relation": "ids", "showAsArcs": false}, {"relation": "profile", "showAsArcs": true}, {"relation": "source", "showAsArcs": true}, {"relation": "visible", "showAsArcs": true}, {"relation": "ShouldBeRejected", "showAsArcs": true}, {"relation": "ShouldBeAccepted", "showAsArcs": true}, {"relation": "Id", "showAsArcs": true}, {"relation": "Work", "showAsArcs": true}, {"relation": "Institution", "showAsArcs": true}], "showAsAttributes": [{"relation": "visible", "showAsAttributes": false}, {"relation": "profile", "showAsAttributes": false}, {"relation": "ids", "showAsAttributes": true}, {"relation": "source", "showAsAttributes": false}]}, "sigSettings": {"nodeBorders": [{"border": "solid", "type": "univ"}, {"border": "inherit", "type": "Id"}, {"border": "inherit", "type": "Int"}, {"border": "inherit", "type": "User"}, {"border": "inherit", "type": "Source"}, {"border": "inherit", "type": "Work"}, {"border": "inherit", "type": "ShouldBeRejected"}, {"border": "inherit", "type": "RejectedBy"}, {"border": "inherit", "type": "seq/Int"}, {"border": "inherit", "type": "general"}, {"border": "inherit", "type": "Institution"}, {"border": "inherit", "type": "ShouldBeAccepted"}, {"border": "inherit", "type": "ids"}], "nodeColors": [{"color": "#2ECC40", "type": "univ"}, {"color": "inherit", "type": "Id"}, {"color": "inherit", "type": "Int"}, {"color": "inherit", "type": "User"}, {"color": "inherit", "type": "Source"}, {"color": "#39CCCC", "type": "Work"}, {"color": "#FF4136", "type": "ShouldBeRejected"}, {"color": "inherit", "type": "RejectedBy"}, {"color": "inherit", "type": "seq/Int"}, {"color": "inherit", "type": "general"}, {"color": "#FFDC00", "type": "Institution"}, {"color": "#FF4136", "type": "ShouldBeAccepted"}, {"color": "inherit", "type": "ids"}], "nodeShapes": [{"shape": "ellipse", "type": "univ"}, {"shape": "inherit", "type": "Id"}, {"shape": "inherit", "type": "Int"}, {"shape": "inherit", "type": "User"}, {"shape": "inherit", "type": "Source"}, {"shape": "roundrectangle", "type": "Work"}, {"shape": "octagon", "type": "ShouldBeRejected"}, {"shape": "inherit", "type": "RejectedBy"}, {"shape": "inherit", "type": "seq/Int"}, {"shape": "inherit", "type": "general"}, {"shape": "inherit", "type": "Institution"}, {"shape": "octagon", "type": "ShouldBeAccepted"}, {"shape": "inherit", "type": "ids"}], "nodeVisibility": [{"type": "univ", "visibility": false}, {"type": "Int", "visibility": true}, {"type": "general", "visibility": false}, {"type": "Id", "visibility": true}, {"type": "User", "visibility": false}, {"type": "Work", "visibility": false}, {"type": "ShouldBeRejected", "visibility": false}, {"type": "Institution", "visibility": false}, {"type": "ShouldBeAccepted", "visibility": false}, {"type": "ids", "visibility": false}]}}, "time": "2020-11-12 11:48:29"} {"_id": "28W9xMy7GJxxgoMhh", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s:Source, u:User, disj w1, w2 : (u.profile & source.s) | no w1.ids & w2.ids\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "PwkaohabDECTd49Ch", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-12 15:57:54"} {"_id": "miLfHB5NXeb46ipFE", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | (u.profile + u.visible).source in (u + Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t(profile.ids).~(profile.ids) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "LmiQWKDJab4oF75hg", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-14 10:31:33"} {"_id": "F4oRKjuvmoQusaJXm", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall u : User, s : Source | no u.profile & source.s \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "35Marw55Mi8JX6voX", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:13:22"} {"_id": "BATG5mJQrmFFWErWW", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tall s: Source, u: User| ((source.s & u.profile)<:ids).~((source.s & u.profile)<:ids) in iden\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\tall u : User | ~((visible:>(u.profile)).ids).((visible:>(u.profile)).ids) in iden\n}", "derivationOf": "ubnDtvqbN2aNRfgAE", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 22:41:18"} {"_id": "8q8vs7zuGBF2PaYuX", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | (u.profile + u.visible).source in (u + Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\tiden in (profile.ids).~(profile.ids)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "LKkoGYrufgWaBxs5s", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-14 10:29:08"} {"_id": "FabeoD5LpAAsSC9j9", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible = (visible & profile)\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-11-12 11:11:53"} {"_id": "xkJ5aaMkuXungtJeb", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User, w:Work, i:Institution | w in u.profile implies u in w.source or i in w.source\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t \n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\n}", "derivationOf": "Hvd7LddnNBnJRMGz3", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-8 19:44:58"} {"_id": "Hty6E3KdZD9R9GShH", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u : User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u : User | u.profile.source in u + Institution\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u : User | all w1, w2 : Work | (w1 + w2) in u.visible implies (w1.ids != w2.ids and w1.source != w2.source)\n}", "derivationOf": "7YqMzCPMQJZZw6Tho", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-11-3 20:32:25"} {"_id": "LJrX2LupejcFSKcmn", "cmd_c": true, "cmd_i": 1, "cmd_n": "Inv2OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile \n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User , w:Work | w in u.profile && one w.source\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "qTi7zNEdGnXWkA5Fs", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2019-10-21 14:46:32"} {"_id": "vPCB9AKdSj83Rxgsk", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall w:Work,u:User | w in u.profile implies (w.source:>u or w.source:>Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "uSP9kjmiYgRWs4ShK", "msg": "This must be a formula expression.\nInstead, it has the following possible type(s):\n{this/User}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-18 14:51:10"} {"_id": "mAHwPBSzBkn4gNEFd", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible = (visible & profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | (u.profile).source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all w1, w2 : Work, u : User {\n (w1 != w2 and ((w1 + w2) in u.profile) and w1.source = w2.source) implies no (w1.ids & w2.ids)\n }\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w1,w2:Work | ((w1=w2) and (w1 in u.visible)) implies w2 not in u.visible\n}", "derivationOf": "cJ2xRgswTX3MD6rog", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-23 04:53:14"} {"_id": "hFAvwd35YKTLSB6MT", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User, w:Work, i:Institution | w in u.profile implies (u in w.source | i in w.source) \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "FpCoEkYY33X3TGZRK", "msg": "There are 1 possible tokens that can appear here:\n)", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-1-8 19:17:35"} {"_id": "6x8doToWkcGArYYzx", "cmd_i": 2, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible = (visible & profile)\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | (u.profile).source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all u : User, w1, w2 : Work | ((w1 in (u.profile)) & (w2 in (u.profile)) & (w1.source = w2.source)) implies (w1.ids != w2.ids)\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n}", "derivationOf": "MNgphHoYBnpws3tqP", "msg": "This must be a set or relation.\nInstead, it has the following possible type(s):\n{PrimitiveBoolean}", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-11-16 04:13:42"} {"_id": "PsR8zHWAWe5hq8ZXb", "cmd_c": true, "cmd_i": 0, "cmd_n": "Inv1OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n all w:Work | visible.w = profile.w\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "JC8Tij8o8GZb99gEJ", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-12 11:03:26"} {"_id": "SWiE9rvfHvCu24Brt", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { \n\tall u:User | u.visible in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n\tall u:User | all w:(u.profile) | (w.source) in (u + Institution)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \tall u:User | all w:(u.visible) | lone w.ids\n}", "derivationOf": "ePB4odBt2sPq2vtgw", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-9 04:14:47"} {"_id": "iu7jCaZodeiZ4EXgP", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n \tall u:User, w:Work | w in u.profile implies (u in w.source or some i:Institution | i in w.source)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n \t\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w1,w2:Work | ((w1 in u.visible and w2 in u.visible) and\n \t\t\t\t\t\t\t (w1.source = w2.source or w1.source != w2.source))\n implies no (w1.ids & w2.ids)\n}", "derivationOf": "snDjD335hmeJTbsub", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-1-9 01:14:52"} {"_id": "2mocXDGuRdBqK9Kcs", "cmd_c": true, "cmd_i": 2, "cmd_n": "Inv3OK", "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\nall w1, w2 : Work | all u : User | w1 != w2 and (w1 + w2) in u.profile and (w1.source = w2.source) implies no w1.ids & w2.ids\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n all u:User, w1,w2:Work | (((w1.ids=w2.ids) and (w1 in u.profile) and (w2 in u.profile)) implies not ((w1 in u.visible)) and (w2 in u.visible))\n}", "derivationOf": "FKAvZdrANiuJ7NZfd", "original": "JC8Tij8o8GZb99gEJ", "sat": 0, "time": "2020-5-7 12:48:59"} {"_id": "SfRWdz8fahkCp2chd", "cmd_c": true, "cmd_i": 3, "cmd_n": "Inv4OK", "code": "\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n visible in profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n all u : User | u.profile.source in (Institution + u)\n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n all s : Source | (profile.ids).~(profile.ids) in iden\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n\t(visible.ids).~(visible.ids) in iden\n}", "derivationOf": "rhuTToJFn6udWiCZR", "msg": "This variable is unused.", "original": "JC8Tij8o8GZb99gEJ", "sat": 1, "time": "2020-11-18 22:23:12"} {"_id": "sYSZh38LNWkegT3Ct", "cmd_i": 1, "code": "/* \n Consider the following model of an online CV platform that allows a\n profile to be updated not only by its owner but also by external institutions,\n to certify that the user indeed has produced certain works. \n Works must have some unique global identifiers, that are used to\n clarify if two works are in fact the same.\n*/\n\nabstract sig Source {}\nsig User extends Source {\n profile : set Work,\n visible : set Work\n}\nsig Institution extends Source {}\n\nsig Id {}\nsig Work {\n ids : some Id,\n source : one Source\n}\n\n// Specify the following invariants!\n// You can check their correctness with the different commands and\n// specifying a given invariant you can assume the others to be true.\n\npred Inv1 { // The works publicly visible in a curriculum must be part of its profile\n\tall w:Work, u:User | w in u.visible implies w in u.profile\n}\n\n\npred Inv2 { // A user profile can only have works added by himself or some external institution\n\tall u:User, w:Work, i:Institution | w in u.profile implies (u in w.source | i in w.source) \n}\n\n\npred Inv3 { // The works added to a profile by a given source cannot have common identifiers\n\n}\n\n\npred Inv4 { // The profile of a user cannot have two visible versions of the same work\n \n}", "derivationOf": "hFAvwd35YKTLSB6MT", "msg": "There are 1 possible tokens that can appear here:\n)", "original": "JC8Tij8o8GZb99gEJ", "sat": -1, "time": "2020-1-8 19:17:47"}