def sub16
bend-collections-laws-crypto@1.0.0.0 · proofs/crypto/aes/aead.bend:403
import bend-collections-laws-crypto@1.0.0.0/proofs/crypto/aes/aead.bend as Aead
import Base
import bend-collections-laws-crypto@1.0.0.0/proofs/lib/nat.bend as N
403def sub16(+c: List<&2, U32>, +t0: U32, +t1: U32, +t2: U32, +t3: U32, +t4: U32, +t5: U32, +t6: U32, +t7: U32, +t8: U32, +t9: U32, +t10: U32, +t11: U32, +t12: U32, +t13: U32, +t14: U32, +t15: U32) -> {Nat.sub(List.length(&2, U32, List.append(&2, U32, c, [t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15])), 16n) == List.length(&2, U32, c) : Nat}:
404 match c:
405 case Nil{}:
406 {==}
407 case x <> r:
408 %Equal.sym(Nat, Nat.sub(1n+List.length(&2, U32, List.append(&2, U32, r, [t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15])), 16n), 1n+Nat.sub(List.length(&2, U32, List.append(&2, U32, r, [t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15])), 16n), N.sub_succ_left(List.length(&2, U32, List.append(&2, U32, r, [t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15])), 16n, N.not_lt_le(List.length(&2, U32, List.append(&2, U32, r, [t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15])), 16n, not_short(r, t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15)))) : {_ == 1n+List.length(&2, U32, r) : Nat}
409 %sub16(r, t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15) : {1n+Nat.sub(List.length(&2, U32, List.append(&2, U32, r, [t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15])), 16n) == 1n+_ : Nat}
410 {==}