| tys + ty ' = ty1 ' + tys0 ⊦ (∃ ty0. is_arraytype(ty0) ∧ ty0 .type = short_type ∧ type∃(str, ty0) ∧ ty1 ≤ ty0 .type ∧ contains(str, ty1 ' + tys0)) ↔ tys = [] ∧ ty = short_type, ty ≠ ty1 ∧ ¬ ty ∈ tys0, ¬ ty1 ∈ tys ∧ ty1 ≠ ty |
⊦ contains(str, short_type ' + tys) ↔ tys = []
tys = [] ∧ ty = short_type, tys + ty ' = ty1 ' + tys0 ⊦ ∃ ty0. is_arraytype(ty0) ∧ ty0 .type = short_type ∧ type∃(str, ty0) ∧ ty1 ≤ ty0 .type ∧ contains(str, ty1 ' + tys0), ty ≠ ty1 ∧ ¬ ty ∈ tys0, ¬ ty1 ∈ tys ∧ ty1 ≠ ty
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ ty ≤ short_type ↔ ty = short_type], [CSIMPSEQ : ⊦ (tys + tys0) + tys1 = tys + tys0 + tys1], [CSIMPFORWARD : ⊦ tys + ty ' = tys0 → ty ∈ tys0], [CSIMPFORWARD : ⊦ ty ' + tys = tys0 → ty ∈ tys0], [CSIMPSEQ : ⊦ tys + [] = tys], [CSIMPSEQ : ⊦ ty ' = tys + ty0 ' ↔ ty = ty0 ∧ tys = []], [CSIMPSEQ : ⊦ ty ∈ ty0 ' ↔ ty = ty0], [CSIMPSEQ : ⊦ ty ∈ tys + tys0 ↔ ¬ ¬ (ty ∈ tys ∨ ty ∈ tys0)])]]