| ⊦ ty = abstract_type, okval(coerce(val, ty), ty) |
⊦ coerce(val, boolean_type) = boolval(val .boolval)
⊦ okval(val, boolean_type) ↔ is_boolvalue(val)
⊦ coerce(val, int_type) = intval(val .intval)
⊦ okval(val, int_type) ↔ is_integervalue(val)
⊦ coerce(val, short_type) = shortval(val .shortval)
⊦ okval(val, short_type) ↔ is_shortvalue(val)
⊦ coerce(val, byte_type) = byteval(val .byteval)
⊦ okval(val, byte_type) ↔ is_bytevalue(val)
⊦ coerce(val, long_type) = longval(val .longval)
⊦ okval(val, long_type) ↔ is_longvalue(val)
⊦ coerce(val, float_type) = floatval(val .floatval)
⊦ okval(val, float_type) ↔ is_floatvalue(val)
⊦ coerce(val, double_type) = doubleval(val .doubleval)
⊦ okval(val, double_type) ↔ is_doublevalue(val)
⊦ coerce(val, char_type) = charval(val .charval)
⊦ okval(val, char_type) ↔ is_charvalue(val)
⊦ coerce(val, void_type) = refval(val .refval)
⊦ okval(refval(r), ty) ↔ ty = void_type ∨ is_reftype(ty)
⊦ coerce(val, mkclasstype(class)) = refval(val .refval)
⊦ okval(refval(r), ty) ↔ ty = void_type ∨ is_reftype(ty)
⊦ coerce(val, mkarraytype(ty)) = refval(val .refval)
⊦ okval(refval(r), ty) ↔ ty = void_type ∨ is_reftype(ty)
[[CONCRETESIMPRULES : ([CSIMPGEN : javatype generated by boolean_type, int_type, short_type, byte_type, long_type, float_type, double_type, char_type, void_type, abstract_type, mkclasstype, mkarraytype;], [CSIMPSEQ : ⊦ is_reftype(mkarraytype(ty))], [CSIMPSEQ : ⊦ mkarraytype(ty) ≠ void_type], [CSIMPSEQ : ⊦ mkarraytype(ty) ≠ abstract_type], [CSIMPSEQ : ⊦ is_reftype(mkclasstype(class))], [CSIMPSEQ : ⊦ mkclasstype(class) ≠ void_type], [CSIMPSEQ : ⊦ mkclasstype(class) ≠ abstract_type], [CSIMPSEQ : ⊦ void_type ≠ abstract_type], [CSIMPSEQ : ⊦ is_charvalue(charval(jchar))], [CSIMPSEQ : ⊦ char_type ≠ abstract_type], [CSIMPSEQ : ⊦ is_doublevalue (doubleval(doublevar))], [CSIMPSEQ : ⊦ double_type ≠ abstract_type], [CSIMPSEQ : ⊦ is_floatvalue(floatval(floatvar))], [CSIMPSEQ : ⊦ float_type ≠ abstract_type], [CSIMPSEQ : ⊦ is_longvalue(longval(lo))], [CSIMPSEQ : ⊦ long_type ≠ abstract_type], [CSIMPSEQ : ⊦ is_bytevalue(byteval(by))], [CSIMPSEQ : ⊦ byte_type ≠ abstract_type], [CSIMPSEQ : ⊦ is_shortvalue(shortval(sho))], [CSIMPSEQ : ⊦ short_type ≠ abstract_type], [CSIMPSEQ : ⊦ is_boolvalue(boolval(boolvar))], [CSIMPSEQ : ⊦ boolean_type ≠ abstract_type], [CSIMPSEQ : ⊦ int_type ≠ abstract_type], [CSIMPSEQ : ⊦ is_integervalue(intval(i))])]]