| ∀ vals1. bytevalues(vals0) = bytevalues(vals1) ∧ (∀ val. val ∈ vals0 ∨ val ∈ vals1 → is_bytevalue(val)) → vals0 = vals1 ⊦ bytevalues(val + vals0) = bytevalues(vals1) ∧ (∀ val0. val0 ∈ val + vals0 ∨ val0 ∈ vals1 → is_bytevalue(val0)) → val + vals0 = vals1 |
⊦ bytevalues(val ' + vals) = val .byteval + bytevalues(vals)
val .byteval ' + bytevalues(vals0) = bytevalues(vals1), val .byteval ∈ bytevalues(vals1), ∀ vals1. bytevalues(vals0) = bytevalues(vals1) ∧ (∀ val. val ∈ vals0 ∨ val ∈ vals1 → is_bytevalue(val)) → vals0 = vals1, ∀ val0. val0 = val ∨ val0 ∈ vals0 ∨ val0 ∈ vals1 → is_bytevalue(val0) ⊦ val ' + vals0 = vals1
[[CONCRETESIMPRULES : ([CSIMPSEQ : ⊦ (bytes + bytes0) + bytes1 = bytes + bytes0 + bytes1], [CSIMPFORWARD : ⊦ by ' + bytes = bytes0 → by ∈ bytes0], [CSIMPSEQ : ⊦ ¬ val ∈ val0 ' + vals ↔ val ≠ val0 ∧ ¬ val ∈ vals], [CSIMPSEQ : ⊦ (vals + vals0) + vals1 = vals + vals0 + vals1], [CSIMPSEQ : ⊦ by + bytes = by ' + bytes], [CSIMPSEQ : ⊦ val + vals = val ' + vals])]]