| compatmode(str, st), compatstatic(str, st), compatrefs(str, st) ⊦ compat(str, refval(r), mkclasstype(class), st[_mode, throw(r, mkclasstype(class))]) ∧ mkclasstype(class) ≤ mkclasstype(`java.lang.Throwable' .class) ∧ (has_classtype(mkclasstype(class)) → tdname+∃(str, mkclasstype(class) .jtclass)) ∧ (has_classtype(mkclasstype(`java.lang.Throwable' .class)) → tdname+∃(str, mkclasstype(`java.lang.Throwable' .class) .jtclass)) ↔ class ≤ `java.lang.Throwable' .class ∧ compat(str, refval(r), mkclasstype(class), st), r = jvmref |
compatmode(str, st), compatstatic(str, st), compatrefs(str, st), class ≤ `java.lang.Throwable' .class ⊦ r = jvmref, compat(str, refval(r), mkclasstype(class), st[_mode, throw(r, mkclasstype(class))]) ∧ tdname+∃(str, class) ↔ compat(str, refval(r), mkclasstype(class), st)
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ tdname+∃ (str, `java.lang.Throwable' .class)], [CSIMPSEQ : ⊦ mkclasstype(class) .class = class], [CSIMPSEQ : ⊦ mkclasstype(class) .jtelemtype = mkclasstype(class)], [CSIMPSEQ : ⊦ ty .jtclass = ty .jtelemtype .class], [CSIMPSEQ : ⊦ has_classtype(mkclasstype(class))], [CSIMPSEQ : ⊦ mkclasstype(class1) ≤ mkclasstype(class2) ↔ class1 ≤ class2])]]