Issue 12484: Section 8.2.1 Type Conformance on page 37 (ocl2-rtf) Source: (, ) Nature: Revision Severity: Critical Summary: Section 8.2.1 Type Conformance on page 37 [1] Invalid conforms to all other types. context InvalidType inv: Classifier.allInstances()->forAll (c | self.conformsTo (c)) on page 38 [1] Void conforms to all other types. context VoidType inv: Classifier.allinstances()->forAll(c | self.conformsTo(c)) on page 37 [6] The Conforms operation on Types is anti-symmetric context Classifier inv: Classifier.allInstances()-> forAll(12,t2 | t1.conformsTo(t2) and t2.conformsTo(t1) implies t1 = t2) The first invariant yields Classifier.allInstances()->forAll (c | OclInvalid.conformsTo (c)) and thus OclInvalid.conformsTo (OclVoid) The second invariant yields Classifier.allInstances()->forAll (c | OclVoid.conformsTo (c)) and thus OclVoid.conformsTo (OclInvalid) Now the third invariant implies: OclInvalid = OclVoid Resolution: Revised Text: Update Section 8.2.1 Type Conformance as follows: InvalidType [1] OclInvalid conforms to all other types except OclVoid. context InvalidType inv: Classifier.allInstances()->forAll (c | not c.oclIsTypeOf(OclVoid) implies self.conformsTo (c)) VoidType [1] OclVoid conforms to all other types except OclInvalid. context VoidType inv: Classifier.allInstances()->forAll (c | not c.oclIsTypeOf(OclInvalid) implies self.conformsTo (c)) Actions taken: May 15, 2008: received issue October 16, 2009: closed issue Discussion: As in the proposed resolutions of Issues 10433 and 10434, OclVoid and OclInvalid cannot both be the bottom of a lattice-structured type system. It is better that OclVoid and OclInvalid be defined as conforming to all other types excepting one another. End of Annotations:===== m: webmaster@omg.org Date: 15 May 2008 05:58:13 -0400 To: Subject: Issue/Bug Report Name: Peter H. Schmitt Company: Universität Karlsruhe mailFrom: pschmitt@ira.uka.de Notification: Yes Specification: Object Constraint Language Section: 8.2.1 FormalNumber: formal/06-05-01 Version: 2.0 RevisionDate: 05/01/06 Page: 37-38 Nature: Revision Severity: Critical HTTP User Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.6) Gecko/20060728 SUSE/1.5.0.6-1.3 Firefox/1.5.0.6 Description Section 8.2.1 Type Conformance on page 37 [1] Invalid conforms to all other types. context InvalidType inv: Classifier.allInstances()->forAll (c | self.conformsTo (c)) on page 38 [1] Void conforms to all other types. context VoidType inv: Classifier.allinstances()->forAll(c | self.conformsTo(c)) on page 37 [6] The Conforms operation on Types is anti-symmetric context Classifier inv: Classifier.allInstances()-> forAll(12,t2 | t1.conformsTo(t2) and t2.conformsTo(t1) implies t1 = t2) The first invariant yields Classifier.allInstances()->forAll (c | OclInvalid.conformsTo (c)) and thus OclInvalid.conformsTo (OclVoid) The second invariant yields Classifier.allInstances()->forAll (c | OclVoid.conformsTo (c)) and thus OclVoid.conformsTo (OclInvalid) Now the third invariant implies: OclInvalid = OclVoid