It expresses that the class with identity #id is only available as byte-code. This has two implications: (1) For byte-code classes JTransformer only generates PEFs at interface level and (2) the class and all the related PEFs cannot be modified by program transformations. The typical use of externT/1 is therefore in the precondition of a conditional transformation, as a check that the class can be transformed.
ID of the byte-code class. This ID is NOT the ID of the externT fact but just a reference to the fact representing the byte-code class.
Consider for example the class “java.lang.Object” that is part of the JDK as a pre-compiled, non-modifiable byte-code class. It would be represented as follows:
packageT(#packageId, 'java.lang'). // Package 'java.lang' classT(#classId, #packageId, 'Object', ...). // Class 'Object' externT(#classId). // 'Object' is external
ast_relation('Java',externT,[ ast_arg(id, mult(1,1,no ), id, [classT]) ]).