It expresses that the class with identity #id is only available as byte-code. This has two implications:
The typical use of externalT/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 externalT 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' externalT(#classId). // 'Object' is external
ast_relation('Java',externalT,[ ast_arg(id, mult(1,1,no ), id, [classT]) ]).